[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: for vs. for-each

Subject: Re: for vs. for-each
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 15 Mar 2021 15:03:10 -0000
Re:  for vs. for-each
Finally a good progress has been made on one of the proposals for XPath 4:
Retrieving a sequence of items from a given sequence based on a sequence of
indexes
 (https://github.com/qt4cg/qtspecs/issues/50)

With this proposal:
https://github.com/qt4cg/qtspecs/issues/50#issuecomment-799228627 ,
Michael Kay defines a concrete operator syntax and explores and evolves the
main idea to its logical boundaries.

I find the result to match exactly what I had wished for.

Thank you, Dr. Kay!

On Sun, Mar 14, 2021 at 12:48 PM Dimitre Novatchev <dnovatchev@xxxxxxxxx>
wrote:

>
>
> On Sun, Mar 14, 2021 at 11:55 AM Michael Kay mike@xxxxxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>>  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.
>>
>
> Yes, we already do have the index-of() function, but we need a reverse to
> this:
>
> from-indexes($vSeq, $vIndexes)
>
> and this would produce a sequence with items each of which is the item of
> $vSeq at position the value of the $index-value in $vIndexes, when
> $index-value iterates over $vIndexes, ot more strictly:
>
>      for $ind in $vIndexes
>        return $vSeq[$ind]
>
> Why reverse of index-of() ?
>
> Because, for any $x in $vSeq it is true that
>
>      from-indexes($vSeq, index-of($vSeq, $x))
>
> is a sequence containing all $x items from $vSeq.
>
> Or:
>
>      $x eq distinct-values( from-indexes($vSeq, index-of($vSeq, $x)) )
>
> Or if we had sets in XPath, then:
>
>      set {$x} === set { from-indexes($vSeq, index-of($vSeq, $x)) }
>
> And this can also be written as:
>
>      set {$x}  ===  set { $vSeq => from-indexes( $vSeq => index-of($x)) }
>
>
> There is even this proposal for an operator notation for the
> from-indexes() function, but individual preferences at present seem to vary
> too much in order to choose such an operator:
>
> https://github.com/qt4cg/qtspecs/issues/50
>
>
> Thanks,
> Dimitre
>
>
>
>
>
>
>>
>> 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
>> >
>> >
>>
>>
>>
>

--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.