This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Adding namespace nodes question
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 17 Dec 2001 14:34:53 -0000
- Subject: RE: [xsl] Adding namespace nodes question
- Reply-to: xsl-list at lists dot mulberrytech dot com
> Suppose I have this XML:
>
> <elem name="myElem">
> <ns type="own" prefix="">http://www.domain1.org/ns</ns>
> <ns type="extra" prefix="pre2">http://www.domain2.org/ns</ns>
> <ns type="extra" prefix="pre3">http://www.domain3.org/ns</ns>
> </elem>
>
> Which actually represents the this XML:
>
> <myElem xmlns="http://www.domain1.org/ns"
> xmlns:pre2="http://www.domain2.org/ns"
> xmlns:pre3="http://www.domain3.org/ns" />
>
> What is the most efficient method to add these namespaces to
> the element
> in the result tree?
AFAIK the only way to add a namespace node to the result tree, when the
namespace isn't present in either the source document or the stylesheet, is
to create an element on a temporary tree that uses that namespace, and then
use xsl:copy[-of] to copy the namespace node from the temporary tree to the
result tree. Even this relies on (a) the errata to XSLT 1.0, and (b) the
xx:node-set() extension.
<xsl:variable name="temp">
<xsl:element name="{$prefix}.temp" namespace="{.}"/>
</xsl:variable>
<xsl:copy-of select="xx:node-set()/*/namespace::*"/>
Mike Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list