Am 14.07.2017 um 09:09 schrieb Felix Sasaki felix(_at_)sasakiatcf(_dot_)com:
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.
<TRANSACTION-LIST>
<TRANSACTION>
<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> ...
</TRANSACTION-LIST>
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:copy>
<xsl:for-each-group select="copy-of(TRANSACTION)"
group-by="ITEM2/SUBITEM2/GROUPING-KEY">
<xsl:copy>
<item1-count><xsl:value-of
select="count(current-group()/ITEM1)"/></item1-count>
Basically with copy-of the nodes are pulled into memory and you depend
on the pipelining explained in
https://www.w3.org/TR/xslt-30/#grounded-consuming-constructs.
--~----------------------------------------------------------------
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
--~--