xsl-list
[Top] [All Lists]

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

2017-07-14 03:06:13
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
--~--
<Prev in Thread] Current Thread [Next in Thread>