xsl-list
[Top] [All Lists]

RE: Doctype and namespaces in source/generated files

2004-05-28 15:20:19
-----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