- 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