This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: How to output a xmlns:prefix attribute (special case)
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] How to output a xmlns:prefix attribute (special case)
- From: "Richard Gruet" <rgruet at intraware dot com>
- Date: Thu, 12 Jul 2001 16:12:10 -0700
- Organization: Intraware, Inc
- References: <98C7D2E5BCD2374C9AAE0BCD2E9C1DD9075ACF@esebe013.NOE.Nokia.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Jarno,
Thanks for the long answer !
However, it seems that your solutions require that I declare the namespace
prefix in my stylesheet. Unfortunately, in my case this prefix determined at
run time (it is the value of an attribute in the source document) , so
obviously I can declare it in the stylesheet.
Richard
Jarno.Elovirta@nokia.com wrote:
> Hip hei!
>
> [d:\temp]type test.xsl
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:prefix="http://prefix.com">
>
> <xsl:output method="xml"
> indent="yes"
> encoding="ISO-8859-1" />
>
> <xsl:template match="/">
> <xsd:schema>
> <xsl:copy-of select="document('')/*/namespace::prefix" />
> <xsd:complexType name="prefix:typeName" />
> </xsd:schema>
> </xsl:template>
>
> </xsl:stylesheet>
>
> [d:\temp]saxon -t test.xsl test.xsl
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:prefix="http://prefix.com">
> <xsd:complexType name="prefix:typeName"/>
> </xsd:schema>
>
> Was this what you were after? Anyhow, note that you
>
> Note that you can't do
>
> <xsd:schema targetNamespace="http://whatever.com">
> <xsl:copy-of select="document('')/*/namespace::prefix" />
> <xsd:complexType name="prefix:typeName" />
> </xsd:schema>
>
> with Saxon 6.4.2, it throws an run-time error "Cannot copy a namespace node
> to an element after attributes have been added". In jd.xslt, MSXML, and
> Xalan this works. With Saxon you can do it by using xsl:attribute
>
> <xsd:schema>
> <xsl:copy-of select="document('')/*/namespace::prefix" />
> <xsl:attribute
> name="targetNamespace">http://whatever.com</xsl:attribute>
> <xsd:complexType name="prefix:typeName" />
> </xsd:schema>
>
> Hope this helps
>
> Jarno
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list