xsl-list
[Top] [All Lists]

Re: Trouble with namespaces and running identity transform on XHTML

2004-03-10 14:36:37

Having an explicitly declared namespace attribute in
xsl:element works in xsltproc, Saxon, and Xalan, but
not Sablotron, which outputs

<ns_1:html xmlns:ns_1="http://www.w3.org/1999/xhtml";>
<ns_2:head xmlns:ns_2="http://www.w3.org/1999/xhtml";>
--snip--
</ns_2:head>
</ns_1:html>


On Sablotron you can get better output by including a prefix in 
the xsl:element name attribute. Like this,

<xsl:element name="{concat('h:',local-name())}"
        namespace="http://www.w3.org/1999/xhtml";>
        <xsl:apply-templates select="@*|node()" />
</xsl:element>

The 'h' acts as a hint which the processor may ignore but 
Sablotron doesn't. This also avoids the multiple namespace 
declaration problem. Note that I have also changed name() to 
local-name(). I have not tested this with the other processors 
but I would doubt it will cause them any problems.

Kev.



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list