-----Original Message-----
From: Mayo [mailto:mayo(_at_)mayo(_dot_)sk]
Hi,
The xslt I'm using matches elements in undefined namespaces, and copies
those into the output, and processes the elements in my custom
namespaces.
<snip />
<xsl:template match="*[not(namespace-uri())]">
than I simply xsl:copy, and apply templates. This prevents me to
specify DOCTYPE or namespaces for xhtml in the source documents, as as
soon as I specify them (in the source documents) the match rule will
stop working, and strips all my xhtml out.
So close, and yet...
Why not use:
<xsl:template match="*[namespace-uri()='http://www.w3.org/1999/xhtml']">
instead then?
My quesiton is, is there a better way to do this, or is there any easy
way that I can manipulate what namespaces/doctypes the output files
will have? (I want to strip out my custom namespaces, preserve any
other ones, add the xhtml one, as well as add a doctype to the
generated document).
If the result document has to be in the XHTML namespace, define:
xmlns="http://www.w3.org/1999/xhtml"
on your xsl:stylesheet element.
Use the exclude-result-prefixes attribute on xsl:stylesheet to omit other
namespaces in scope for the stylesheet.
For adding the doctype, check the applicable attributes for the xsl:output
element. Use XML as output method, and add doctype-public and doctype-system
with the appropriate values.
The relevant specifications:
For XSLT 1.0:
http://www.w3.org/TR/xslt#stylesheet-element
http://www.w3.org/TR/xslt#output
For XSLT 2.0:
http://www.w3.org/TR/xslt20/#stylesheet-element
http://www.w3.org/TR/xslt20/#element-output
Hope this helps!
Greetz,
Andreas