xsl-list
[Top] [All Lists]

Re: [xsl] for vs. for-each

2021-03-14 13:55:49
$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 Müller-Hillebrand mmh(_at_)docufy(_dot_)de 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> 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


--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--


<Prev in Thread] Current Thread [Next in Thread>