Subject: "position()" inside a sorted apply-templates (Akin to: sorted for-each: preceding::sibling is not in sort order)
From: iwantto keepanon <iwanttokeepanon@xxxxxxxx>
Date: Wed, 16 Nov 2005 05:36:42 +0300 (MSK)
|
> > Working on a grouping problem I was trying to use preceding::sibling
> > on a selection of nodes that I had assembled with for-each and sorted.
I also have needed a preceding::sibling within the /sorted/ order, but I found a better algorithm
solved that.
Here's my question, while writing a stylesheet recently I got a node's position():
<li class="count">
<xsl:text>Photo </xsl:text>
<xsl:value-of select="position()" />
<xsl:text> of </xsl:text>
<xsl:value-of select="$total-photos" />
</li>
within the context:
<xsl:apply-templates select="atom:feed/atom:entry">
<xsl:sort select="position()" data-type="number" order="descending" />
</xsl:apply-templates>
(obviously an XSL transformation of Atom of a photo gallery)
So the last entry element (let's say 5) showed a position() of 1 ... which surprised me. I expected to
have to reverse the number with "$total-photos - position() + 1".
So the axes go in document order but functions do not? I am using libxslt 1.0.
Can anybody point me to the clause in the standard where it covers axes context vs. function context?
Thx,
--
Rodman
|