xsl-list
[Top] [All Lists]

RE: [xsl] Namespace conflicts processing Word documents

2008-10-06 09:28:36

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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--