Re: [xsl] for vs. for-each

Subject: Re: [xsl] for vs. for-each
From: "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 14 Mar 2021 18:57:08 -0000
In:

<xsl:sequence select="$values[.]"/>

... the context when opening the predicate is
$values and not the current item from the for-each.

In:

<xsl:sequence select="$values[current()]"/>

... the context when opening the predicate begins
at $values but current() jumps the context back
to the beginning of the XPath expression, which
is the current item from the for-each.

So it is readily explained. And it isn't a
difference between for and for-each, it is that
your predicate value either uses the context of
the XPath node test (the ".") or ignores the
context of the node test (the $i and current()).

I hope this helps.

. . . . . Ken

At 2021-03-14 18:05 +0000, 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



--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/s/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |

Current Thread