Re: [xsl] more xsl:number confusion!

Subject: Re: [xsl] more xsl:number confusion!
From: Jack Matheson <jack@xxxxxxxxxxxxxx>
Date: Tue, 27 Sep 2005 15:53:19 -0500
EDIT: I excluded the 'descendant' portion of the AF calculation to make this easier to read =)
The 'self' portion is what I'm really concerned with.

Thanks again

I have the following input document:

<?xml version="1.0"?>

...and I am trying to determine why this stylesheet is not behaving as I would expect:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=""; version="1.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="a/b">
xsl:number result: (<xsl:number level="multiple" count="a" from="a"/>)
<xsl:variable name="S" select="."/>
<xsl:variable name="A" select="$S/ancestor-or-self::node() [local-name() = 'a']"/>
<xsl:variable name="F" select="$S/ancestor-or-self::node() [local-name() = 'a'][1]"/>
<xsl:variable name="AF" select="$A[count(.|$F) = count($F)]"/>
sequence number should contain: (<xsl:for-each select="$AF">
<xsl:value-of select="1 + count($AF/preceding-sibling::node() [local-name() = 'a'])"/>
<xsl:text> </xsl:text>

I emit the result of an xsl:number when both the from and count patterns are the parent of the context node. The result is empty.
However, if I follow the explicit instructions on how to determine a sequence number, it seems like this should contain a single
integer of value 1.

The output I get from Xalan and Saxon both is:

xsl:number result: ()

sequence number should contain: (1 )

Can anyone help explain why the xsl:number value is not the same as the hand-computed value?

NOTE: I used a very simple local-name() test in place of a node- type and node-name test. I realize
this is not the same as matching the pattern "a", but it should suffice for this example.

Current Thread