|
Subject: [xsl] Re: problem - generating XML schema via XSLT From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Fri, 3 Oct 2003 22:35:37 +0200 |
> > In 1.0 there is no direct way of doing this. The nearest equivalent is:
> >
> > <xsl:variable name="dummy">
> > <xsl:element name="e" namespace="{@prefix}"/>
> > </xsl:variable>
> >
> > <xsl:copy select="xx:node-set($dummy)/*/namespace::*[.=@prefix]"/>
> >
> > This creates a dummy element in the required namespace, and then copies
> > the required namespace node to the result tree.
>
> amazingly, this does not yield any change in the output document. I am
> using Xalan (where the function is named nodeset as opposed to
> node-set). The new namespace decl does not appear.
This example works with Saxon, MSXML, JD, .Net xsltTransform (Framework
1.1).
It also works with Xalan C 1.5 (but with XalanJ 2.1.4 the namespace node is
not copied):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:extc="http://exslt.org/common"
exclude-result-prefixes="extc"
>
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="library">
<xsl:variable name="dummy">
<xsl:element name="e" namespace="{@prefix}"/>
</xsl:variable>
<extc:xxx>
<xsl:copy-of
select="extc:node-set($dummy)/*/namespace::*[. =
current()/@prefix]"/>
</extc:xxx>
</xsl:template>
</xsl:stylesheet>
When the above transformation is applied against this source.xml:
<library prefix="test">
<element name="dosome"/>
</library>
the result is:
<extc:xxx xmlns:extc="http://exslt.org/common" xmlns="test"/>
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] problem - generating XML , Michael Kay | Thread | Re: [xsl] problem - generating XML , Christian Sell |
| Re: [xsl] problem - generating XML , Christian Sell | Date | [xsl] Re: msxsl:script and selectSi, Dimitre Novatchev |
| Month |