Re: [xsl] xsl:number on attribute nodes..

Subject: Re: [xsl] xsl:number on attribute nodes..
From: Jack Matheson <jack@xxxxxxxxxxxxxx>
Date: Mon, 15 Aug 2005 17:37:54 -0500
Sounds good. Thanks to both of you for the help.

This is a bug in Saxon 6.x

Oddly, Saxon 6.5.4 fixed a bug relating to the use of <xsl:number
level="any"/> when numbering attributes, but didn't fix the much simpler
case of <xsl:number level="single"/>. For level="single" (without any from
or count attribute, or in the case where the count pattern matches the
context node) the answer should always be 1, because an attribute has no
preceding siblings. I suspect that I originally implemented the restriction
in the code because I felt that the specification was unclear, but reading
it again I can't see any cause for doubt as to what the results should be. I
can't imagine any circumstance in which numbering attributes with
level="single" gives a useful result, but the result is well- defined and
Saxon is wrong to disallow it.


With level="any", I think the XSLT 1.0 spec is slighly ambiguous: does the
phrase:


"the set containing the current node and all nodes ... that are before the
current node ... excluding any namespace and attribute nodes"


mean

(a) "the set containing the current node and (all nodes ... that are before
the current node ... excluding any namespace and attribute nodes)"


or does it mean

(b) "(the set containing the current node and all nodes ... that are before
the current node ...) excluding any namespace and attribute nodes"


The XSLT 2.0 spec selects interpretation (a).

I will publish details of this bug in
http://saxon.sourceforge.net/saxon6.5.4/limitations.html

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


-----Original Message-----
From: Jack Matheson [mailto:jack@xxxxxxxxxxxxxx]
Sent: 09 August 2005 16:35
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] xsl:number on attribute nodes..

Can anyone tell me the correct action to take when xsl:number is
executed and the current node is an attribute?

I have a quick example:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
   <xsl:template match="/">
     <xsl:apply-templates select="//@* | //*"/>
   </xsl:template>

   <xsl:template match="@* | *">
     <xsl:number count="@* | *"/>
   </xsl:template>
</xsl:stylesheet>

Saxon 6.5.4 gives me the following error:
Error at xsl:number on line 8 of file:test.xsl:
   Attribute nodes cannot be numbered
Transformation failed: Run-time errors were reported

Xalan 2.7 produces the following output:
<?xml version="1.0" encoding="UTF-8"?>11

Is this an "up-to-the-implementer" case?

Any help would be appreciated!

-Jack

Current Thread