RE: [xsl] Saxon output unused namespace declarations

Subject: RE: [xsl] Saxon output unused namespace declarations
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 23 Jul 2009 12:21:40 +0100
This isn't specific to Saxon and it's not even specific to XSLT 2.0. XSLT
(both in 1.0 and 2.0) specifies that a literal result element (such as
<out>) is copied from the stylesheet to the result tree with all its
in-scope namespaces, other than any namespaces listed in the
exclude-result-prefixes attribute. The reason for this being the default
behaviour is that the processor in general can't tell which namespaces are
used and which aren't (it's not just prefixes-in-content; there have
actually been some XML vocabulary designs in which the mere presence of a
namespace declaration is used to carry information).

So if you don't want the namespace, exclude it using
exclude-result-prefixes.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay



> -----Original Message-----
> From: Weihua JIANG [mailto:weihua.jiang@xxxxxxxxx]
> Sent: 23 July 2009 10:11
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Saxon output unused namespace declarations
>
> I am using SAXON  9.1.0.6J under Linux for XSLT 2.0.
>
> For following stylesheet:
> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="2.0" > <xsl:template match="/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>   <xsl:param name="p1" select="(xs:anyURI('one.uri'),
> xs:anyURI('eins.uri'))"/>
>   <xsl:param name="p2" select="(xs:anyURI('two.uri'),
> xs:anyURI('zwei.uri'))"/> <out>
>   <xsl:value-of select="$p1 != $p2"/> should be true </out>
> </xsl:template> </xsl:stylesheet>
>
> Saxon get the output as
> <?xml version="1.0" encoding="UTF-8"?><out
> xmlns:xs="http://www.w3.org/2001/XMLSchema";>true should be true </out>
>
> I am wondering why the namespace declaration for xmlns:xs is
> outputted. This namespace declaration is not used by the out element.
> So, from my opinion, to make the output as simple as
> possible, the XSLT 2.0 processor shall not output such declaration.
>
> But, since Saxon is the de facto XSLT 2.0 standard
> implementation. I guess this complies with XSLT 2.0 spec. Can
> anyone tell whether there is any statements in XSLT 2.0 spec
> saying something about it?
>
> Thanks
> Weihua

Current Thread