This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: How to output a xmlns:prefix attribute (special case)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]