Subject: Re: 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
|