Re: Processiing arrays in XSLT 4

On Sat, Jan 9, 2021 at 8:38 AM Michael Kay <mike@saxonica.com> wrote:

> It seems a no-brainer to provide an XSLT instruction along the lines
>
>
>
.   .   .   .   .


> <xsl:for-each-member select="array" bind-to="member" position="pos">
>    <xsl:if test="$pos ne 1">,</xsl:if>
>    <xsl:for-each select="$member">
>       ...
>
>
+1


> That's the way I would do it if it weren't so inconsistent with the way
> other things are done. Also, many arrays in practice have members that are
> single items (or perhaps zero-or-one items), and binding "." in those cases
> seems more intuitive.
>
> Another possibility is to bind "." to a zero-arity function that returns
> the current member: so to access the current member you write select=".()".
> Is that just too weird, or would people get used to it? The attraction is
> that it doesn't involve inventing any new machinery - no new functions, no
> additions to the dynamic context, and position() and last() work nicely.
>
> Related to this is how array construction works. I'm currently proposing
>
> <xsl:array>
>   <xsl:for-each select="1 to 10">
>     <xsl:array-member select=". * 2"/>
>   </xsl:for-each>
> </xsl:array>
>
>
This seems very complicated and ugly.

Why not just:

<xsl:array select ="{expressionProducingAnArray}"/>


Thanks,
Dimitre

Received on Saturday, 9 January 2021 17:26:12 UTC