Re: [xsl] Question on streaming and grouping with nested keys

Subject: Re: [xsl] Question on streaming and grouping with nested keys
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 14 Jul 2017 08:05:46 -0000
Am 14.07.2017 um 09:09 schrieb Felix Sasaki felix@xxxxxxxxxxxxxx:
> I want to analyse a list of transactions in XSLT 3.0 streaming mode. 
> Transactions should be grouped by a key which is nested inside each 
> transaction (see SUBITEM2.2/GROUPING-KEY below). For the grouped 
> transactions, there are items to count or items with numeric values to 
> some up, see ITEM1 and ITEM2/SUBITEM2.1.
>     <ITEM1> something to count </ITEM1>
>     <ITEM2>
>       <SUBITEM2.1> something to sum up</SUBITEM2.1>
>       <SUBITEM2.2> ...
>         <GROUPING-KEY>some-key</GROUPING-KEY>
>       </SUBITEM2.2>
>     </ITEM2>
>   </TRANSACTION> ...
>   The output should be a list as follows:
> - Transaction following grouping key value 1:
>     Numbers of ITEM1
>     Sum of ITEM 2
> - Transactions following grouping key value 2, 3, ...n: the same list 
> with other values.
> I am wondering if this is possible with XSLT 3.0 streaming, since then 
> the XSLT processor "sees" the TRANSACTION element, it does not yet see 
> the nested grouping key.
As the grouping key is in a descendant element, you would need to use 
copy-of first e.g.
   <xsl:template match="TRANSACTION-LIST">
         <xsl:for-each-group select="copy-of(TRANSACTION)" 

Basically with copy-of the nodes are pulled into memory and you depend 
on the pipelining explained in

Current Thread