RE: [xsl] Namespace conflicts processing Word documents

Subject: RE: [xsl] Namespace conflicts processing Word documents
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 6 Oct 2008 14:28:11 +0100
> WordML and OOXML files (Word saved-as-XML from vv2003-2008) 
> contain some different namespace declarations for the same 
> prefix (specifically w: but a few others).
> 
> On the surface, this appears to mean that an XSLT file 
> written to process WordML files' w:* elements cannot be used 
> to process OOXML files' w:* elements 

Depends exactly what you mean. Of course you can process both namespaces,
because there is no requirement for the stylesheet to use the same prefix as
the source document: it can use any prefix it likes, so long as it is bound
to the correct URI. However, it's always challenging to write reusable
stylesheet code that can process two different (but similar) vocabularies
that use different namespace URIs (this has nothing to do with whether or
not they use the same prefix).

The way I usually recommend doing it is to preprocess the input to change
its namespace, so that the bulk of your transformation code only has a
single namespace to contend with: that is, use a pipeline.

> 
> I tested this by creating two "driver" XSLT files, one 
> implementing the WordML namespace declarations and one the 
> OOXML ones; with both files having a single xsl:import or 
> xsl:include (tested both ways) calling my file of templates 
> which itself declared no namespaces except XSL.
> 
> Both Saxon and xalan throw an error, saying that the 
> namespace w: was undeclared in all cases.
> 
> This makes it appear that namespaces cannot be inherited from 
> an outer XSLT file to an included or imported one; in effect 
> that the omission of namespace declarations on the 
> included/imported xsl:stylesheet element nullifies all outer 
> namespace declarations.
> 
> Is this correct, or have I missed something?

It's certainly true that an included or imported stylesheet module doesn't
inherit any namespace declarations from the including/importing module.

Michael Kay
http://www.saxonica.com/

Current Thread