I'm sure someone with more savvy can tell you how to do this with
accumulators, but it seems that there is a straightforward way to do this
with streaming iterate.
Use burst-mode streaming to iterate through each <TRANSACTION> element.
This <xsl:iterate> instruction should have two parameters, each one a map:
<xsl:param name="item_count_map" select="map:new()"/>
<xsl:param name="sum_map" select="map:new()"/>
The first one will keep track of the number of <ITEM1> elements with a
given grouping key. The second map will sum up the values in the
<SUBITEM2.1> elements.
Each round of the iteration, you will make new maps by updating the current
map.
For each transaction, check whether the grouping key is a key of the map.
If so, the new maps (the one for the next iteration of the <xsl:iterate>
instruciton) will have that key updated. If the grouping-key is not a key
of the map, add it to each map.
On Fri, Jul 14, 2017 at 12:09 AM, Felix Sasaki felix(_at_)sasakiatcf(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
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.
- Felix
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <-list/1312897> (by
email <>)
--
"A false conclusion, once arrived at and widely accepted is not dislodged
easily, and the less it is understood, the more tenaciously it is held." -
Cantor's Law of Preservation of Ignorance.
--~----------------------------------------------------------------
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
--~--