
Can anyone account for the behavior exhibited by the position function in a predicate in the following code sample: <xsl:variable name="x" select="'A', 'B', 'C'" as="xs:string*"/> <xsl:variable name="y" select="'a', 'b', 'c'" as="xs:string*"/> <xsl:for-each select="$x"> <xsl:variable name="pos" select="position()"/> <xsl:message select="position()"/> <xsl:message select="., $y[position()]"/> <xsl:message select="., $y[$pos]"/> </xsl:for-each> As the output below shows, when the value of position is stored in a variable and the variable is used in a predicate, you get what you would expect, the selection of a single item corresponding to the current position. But when position() is used directly in the predicate, it returns all the items in the sequence: [Saxon-PE] 1 [Saxon-PE] A a b c [Saxon-PE] A a [Saxon-PE] 2 [Saxon-PE] B a b c [Saxon-PE] B b [Saxon-PE] 3 [Saxon-PE] C a b c [Saxon-PE] C c Any ideas, or is this simply a bug? Mark