- From: Michael Kay <mike@saxonica.com>
- Date: Tue, 12 Jan 2021 13:03:26 +0000
- To: Martin Honnen <martin.honnen@gmx.de>
- Cc: public-xslt-40@w3.org
Yes, that's right (I had already spotted it but didn't want to trouble anyone...) I think we can also allow <xsl:for-each map="$map"> creating items accessible as .?key and .?value. I've tried a few JSON-to-XML examples and it works quite nicely, including (probably) for grouping. I think the keywords array="X" and map="Y" work OK, rather that say element-in-array or entry-in-map. After all, X is an array and Y is a map. It would ideally be <xsl:for-each-in array="X"> but we don't want to change the instruction name. Or we could do <xsl:for-each in-array="X"> but it feels like unnecessary noise. Michael Kay Saxonica > On 12 Jan 2021, at 12:38, Martin Honnen <martin.honnen@gmx.de> wrote: > > > On 12.01.2021 12:27, Martin Honnen wrote: >> >> On 12.01.2021 11:25, Michael Kay wrote: >>> Mindful of DImitre's exhortation to avoid growing the language any >>> more than is necessary, I propose the following: >>> >>> * xsl:for-each, xsl:iterate, and xsl:for-each-group acquire an >>> attribute array=expression which can be used instead of >>> select=expression >>> >>> * specifying array="EXPR" is equivalent to specifying >>> select="array:for-each(EXPR, function($x){map{'value': $x})"/> > > > Is that meant as > > select="array:for-each(EXPR, function($x){map{'value': $x}})?*" > > ? > >>> >>> The effect is that you iterate over the members of the array, and >>> that you can refer to the current member of the array as .?value. The >>> position of the member within the array is available as position(). >>> >>> >> >> Does that work with for-each-group where inside of the instruction >> position() is supposed to give you the position of the current group and >> not the position of the item in the grouping population? >> >> Or how does grouping work if the population is a (single?) array created >> by array:for-each? >> >> >
Received on Tuesday, 12 January 2021 13:03:52 UTC