[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Trouble with namespaces and running identity transform on XHTML


Subject: Re: [xsl] Trouble with namespaces and running identity transform on XHTML
From: Kevin Jones <kjones@xxxxxxxxxxx>
Date: Wed, 10 Mar 2004 21:36:37 +0000

> 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



Current Thread