Re: [xsl] for vs. for-each

Subject: Re: [xsl] for vs. for-each
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 14 Mar 2021 18:55:44 -0000
$values[.] obviously doesn't work because the value of the context item within
square brackets is different from the value outside.

The fact that the value of "." is context-dependent often causes difficulties
like this, but it's fundamental to the design of XPath..

The real culprit here is the overloading of A[B] to do both subscripting and
filtering. Changing the focus is necessary for filtering, but it gets in the
way for subscripting. I would argue that this is a design mistake (in fact, I
tried to argue this before XPath 1.0 was finalized) but it's impossible to
change it now. For 4.0, however, I would like to see better ways of accessing
items in a sequence by position, and there has been much discussion about how
best to achiieve this.

Michael Kay
Saxonica

> On 14 Mar 2021, at 18:04, Michael MC<ller-Hillebrand mmh@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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