[xsl] Re: XPath expression that yields the same resultasxsl:for-each-group?

Subject: [xsl] Re: XPath expression that yields the same resultasxsl:for-each-group?
From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 30 May 2019 21:46:26 -0000
Hi Folks,

Some fun queries ...

Context Node: the Test element (root element).

Collect the set of row elements and store them in an XSLT variable:

<xsl:variable name="rows" select="row" as="element(row)*" />

Group the rows using the composite key ARPT__IDENT | TRM__IDENT and store the
groups in an XSLT variable:

<xsl:variable name="groups" as="array(element(row))*" select="
    let $keys :=
        distinct-values($rows/concat(ARPT__IDENT, '|', TRM__IDENT))
    return
        for $i in $keys
        return
            array {$rows[$i = concat(ARPT__IDENT, '|', TRM__IDENT)] }
    "/>

How many groups are there?

Query: count($groups)
Result: 2

What is the content of the first group?

Query: $groups[1]
Result:
<row>
    <ARPT__IDENT>A</ARPT__IDENT>
    <TRM__IDENT>X</TRM__IDENT>
    <Data>Foo</Data>
</row>
<row>
    <ARPT__IDENT>A</ARPT__IDENT>
    <TRM__IDENT>X</TRM__IDENT>
    <Data>Bar</Data>
</row>

What is the content of the second group?

Query: $groups[2]
Result:
<row>
    <ARPT__IDENT>A</ARPT__IDENT>
    <TRM__IDENT>Y</TRM__IDENT>
    <Data>Blah</Data>
</row>
<row>
    <ARPT__IDENT>A</ARPT__IDENT>
    <TRM__IDENT>Y</TRM__IDENT>
    <Data>Plugh</Data>
</row>

Wicked cool!

Thanks for all your help!

/Roger

Current Thread