Hi all.
My question is about a [last()] predicate in a simple step. Running the
following stylesheet on itself yields unexpected results using Saxon and Xalan.
I thought the XPath ".//x[last()] should return the last x-Element in
document order. However, it returns the first one. Changing the selection to
".//x[2] returns nothing at all! Yet, the XPath ".//x" returns all x-Elements
and
the first x-Element has the position 1 and the second 2.
Is this a bug in the mentioned XSLT processors or have I missed something?
Thanks for your attention,
Stefan Wachter
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:message>
<xsl:for-each select=".//x[(_at_)u]">
<xsl:value-of select="concat(@u, '(', position(), ') ')"/>
</xsl:for-each>
</xsl:message>
<xsl:message><xsl:value-of select=".//x[last()]/@u"/></xsl:message>
<a>
<x u="1"/>
</a>
<a>
<x u="2"/>
</a>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list