Re: [xsl] for vs. for-each

Subject: Re: [xsl] for vs. for-each
From: "director@xxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 14 Mar 2021 18:54:14 -0000
The dot in your second expression picks up the context from $values. You should use current():

<xsl:for-each select="1 to count($values)">
   <xsl:sequence select="$values[current()]"/>
</xsl:for-each>


jk


On 2021-03-14 14:04, Michael MC<ller-Hillebrand mmh@xxxxxxxxx wrote:
Folks,

Given a variable with a sequence of values

<xsl:variable name="values" select="(1,2,3,4,5)" as="xs:double+"/>

these are three methods to report its content:

<xsl:sequence select="for $i in 1 to count($values) return $values[$i]"/>

<xsl:for-each select="1 to count($values)">
    <xsl:sequence select="$values[.]"/>
</xsl:for-each>

<xsl:for-each select="1 to count($values)">
    <xsl:sequence select="$values[current()]"/>
</xsl:for-each>

The first works as expected, the second does not, but the third
astonishingly enough gives me the same result as the first. Check it
out:

https://xsltfiddle.liberty-development.net/ei5R4v8/2

I read/understand that there is a difference between a for expression
and a path expression, but since we can use atomized values in
xsl:for-each, I would like to see more similarity between for and
for-each.

Should this be on the wishlist for XSLT 4 or do I have to
learn/understand some more concepts?

Puzzled greeting,

- Michael

Current Thread