xsl-list
[Top] [All Lists]

namespace declarations in generated stylesheet

2003-04-11 10:52:29
Hey all,

I have noticed a remarkable discrepancy between the behavior of Saxon and Xalan
over the following stylesheet and instance:

--------------------------------------------------------------------------------
--------
<?xml version="1.0" encoding="utf-8"?>
<my:document xmlns:my="http://www.my.net/MyMarkup";>
<element status="current" name="report"/>
</my:document>


--------------------------------------------------------------------------------
--------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:fo="http://www.w3.org/1999/XSL/Format";
  xmlns:fox="http://xml.apache.org/fop/extensions";
  xmlns:my="http://www.my.net/MyMarkup";

  <xsl:output method="xml"
    encoding="utf-8"/>
  <xsl:template match="/">
    <xsl:element name="xsl:stylesheet">
      <xsl:element name="xsl:param">
        <xsl:attribute name="name">
          <xsl:text>report.style</xsl:text>
        </xsl:attribute>
        <xsl:attribute name="select">
          <xsl:text>/root/param[(_at_)name = 'style']/@value</xsl:text>
        </xsl:attribute>
      </xsl:element>
    </xsl:element>
    <xsl:apply-templates/>
  </xsl:template>
</xsl:stylesheet>



In generating the xsl:stylesheet declaration in the result, Saxon won't allow me
to declare anything other than xslns:xsl and this it does for me.  Xalan also
won't let me change it but returns all the namespaces declared on the stylesheet
generating the output.

Saxon output:
--------------------------------------------------------------------------------
--------
<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:param name="report.style" select="/root/param[(_at_)name =
'style']/@value"/></xsl:stylesheet>

Xalan output:
--------------------------------------------------------------------------------
--------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:my="http://www.my.net/MyMarkup";
xmlns:fox="http://xml.apache.org/fop/extensions";
xmlns:fo="http://www.w3.org/1999/XSL/Format";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:param name="report.style" select="/root/param[(_at_)name =
'style']/@value"/></xsl:stylesheet>


The question is, who's right?  What behavior should I be expecting?  I thought I
ought to be able to just whip up a set of namespace declarations with something
like:

<xsl:element name="xsl:stylesheet">
  <xsl:attribute name="xmlns:my">
    <xsl:text>http://www.my.net/my markup</xsl:text>
  </xsl:attribute>
</xsl:element>

But that don't work for either tool and I think I am just beginning to see why.
Can anyone enlighten me?


Much obliged,

Mike Haarman


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>