|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: problem - generating XML schema via XSLT
> > 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








