xsl-list
[Top] [All Lists]

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

2019-05-30 16:46:31
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
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>