[xsl] Avoiding namespace generation in elements

Subject: [xsl] Avoiding namespace generation in elements
From: Jacobus Reyneke <jacobusreyneke@xxxxxxxxx>
Date: Thu, 2 Jun 2011 19:29:42 +0200
Good day,

I am transforming a XML file to XSD using Saxon and XSLT 2.0

I am manually creating the 'schema' element, since I am adding
namespaces to it. This causes Saxon in add
xmlns:xs="http://www.w3.org/2001/XMLSchema"; to each of the child
elements. Using exclude-default-prefixes="xs" has no effect.

Sample output:
<xs:schema targetNamespace="http://my.happydomain123.com/test/testing/1.0";
            xmlns:tt="http://my.happydonain123.com/test/testtypes/1.0";
            xmlns:xs="http://www.w3.org/2001/XMLSchema"; >
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema"; name="Testing1">
   <xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema";
name="TestAgent2" type="tt:TestAgent"/>
</xs:shcema>

Crappy way of creating main schema that is causing the headache:
<xsl:value-of disable-output-escaping="yes">
&lt;</xsl:value-of>xs:schema targetNamespace="<xsl:value-of
select="$ns-map/namespaces/namespace[@pim-ns=$target-namespace and
@version=$target-namespace-version]/@namespace-uri"></xsl:value-of>"
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            <xsl:for-each select="$distinct-namespaces">
                <xsl:variable name="pim-ns" select="./text()"
as="text()"></xsl:variable>xmlns:<xsl:value-of
select="$ns-map/namespaces/namespace[@pim-ns=$pim-ns and
@version=max($ns-map/namespaces/namespace[@pim-ns=$pim-ns]/@version)]/@prefix
"></xsl:value-of>="<xsl:value-of
select="$ns-map/namespaces/namespace[@pim-ns=$pim-ns and
@version=max($ns-map/namespaces/namespace[@pim-ns=$pim-ns]/@version)]/@namesp
ace-uri"></xsl:value-of>"
            </xsl:for-each>
elementFormDefault="qualified"<xsl:value-of
disable-output-escaping="yes">&gt;</xsl:value-of>

As you can see, I am creating namespace attributes on the fly, which
is why I can't just add <xs:schama> as part of my xslt.

Kind regards,
Jacobus

Current Thread