[xsl] xmlns created literally

Subject: [xsl] xmlns created literally
From: Jesper Tverskov <jesper@xxxxxxxxxxx>
Date: Thu, 26 Feb 2009 12:16:38 +0100
We are allowed to create xmlns or xmlns:* the literal way, but we can
apparently not use attribute value template for the namespace. This is
probably not that surprising since we cannot create xmlns or xmlns:*
with xsl:attribute.

But it surprices me that we don't get an error message. The following
stylesheet is tested with Saxon 9 in Oxygen and with AltovaXML 2009 in
XMLSpy:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output indent="yes"/>
    <xsl:template name="start" match="/">
        <xsl:param name="x" select="'asdf'"/>
        <catalog>
            <product xmlns="asdf">some data</product>
            <product xmlns="{$x}">some data</product>
        </catalog>
    </xsl:template>
</xsl:stylesheet>

We get the following output in Oxygen:

<catalog>
   <product xmlns="asdf">some data</product>
   <product xmlns="{$x}">some data</product>
</catalog>

And the following output in XMLSpy:

<catalog>
<product xmlns="asdf">some data</product>
<product xmlns="%7B$x%7D">some data</product>
</catalog>

The one even more strange than the other! Should it have been an error
message instead? Or should the attribute value template work?


Cheers,
Jesper Tverskov

http://www.xmlkurser.dk
http://www.xmlplease.com

Current Thread