xsl-list
[Top] [All Lists]

RE: for-each and summing based on group

2005-01-05 11:26:15
When changing the xsl from 1.0 to 2.0 there 
were errors.
Is it simpler to do that, or use Muenchian grouping for the Customer?

If you were saying that a stylesheet that worked under 1.0 didn't work under
a 2.0 processor, then this is unusual and it would be nice to know the
details.

Michael Kay
http://www.saxonica.com/



<xsl:for-each select="Trade">

<xsl:sort select="Customer"/> 

<tr class="r{position() mod 2}">

<td><xsl:value-of select="Customer"/> </td>

<td><xsl:value-of select="TradeId"/><xsl:text/></td>

<td><xsl:value-of select="Type"/><xsl:text/></td>

<td align="right">
<xsl:value-of select="format-number(sum(Step
   
[concat(substring(MinFlowDate,7),substring(MinFlowDate,1,2),su
bstring(MinFlowDate,4,2))&gt;=
concat(substring($global,7),substring($global,1,2),substring($
global,4,2))]
   
[concat(substring(MinFlowDate,7),substring(MinFlowDate,1,2),su
bstring(MinFlowDate,4,2))&lt;
concat(substring($global,7)+3,substring($global,1,2),substring
($global,4,2))]
   /StepCharge)+ sum(Step
   
[concat(substring(MinFlowDate,7),substring(MinFlowDate,1,2),su
bstring(MinFlowDate,4,2))&gt;=
concat(substring($global,7),substring($global,1,2),substring($
global,4,2))]
   
[concat(substring(MinFlowDate,7),substring(MinFlowDate,1,2),su
bstring(MinFlowDate,4,2))&lt;
concat(substring($global,7)+3,substring($global,1,2),substring
($global,4,2))]
   /StepSetoff)  , '###,###,##0')"/>
</td>

</xsl:for-each>

Thanks,
Dmitri

-----Original Message-----
From: Michael Kay <mike(_at_)saxonica(_dot_)com>
Sent: Jan 5, 2005 4:50 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] for-each and summing based on group

First read up about standard grouping techniques such as 
Muenchian grouping
at http://www.jenitennison.com/xslt/grouping

Computing a subtotal for each group is then a minor variant of the
technique: instead of merely iterating over the items in the 
group using
xsl:for-each, you can assign the node-set comprising the group to a
variable, and then sum over that using the sum() function.

Like all grouping problems, it's much easier in 2.0:

<xsl:for-each-group select="rows" group-by="columnA">
  <xsl:apply-templates select="current-group()"/>
  <subtotal><xsl:value-of 
select="sum(current-group()/columnB)"/></subtotal>
</xsl:for-each-group>

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: dsk [mailto:dmitrik(_at_)mindspring(_dot_)com] 
Sent: 05 January 2005 04:09
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] for-each and summing based on group


within a for-each there might be various sets of values which 
produce the 
following grid, where val is equal to a number

a  val val val
a  val val val
a  val val val
b  val val val
b  val val val
c  val val val
c  val val val

what is the best way to insert a sum line for the first
column a, one for b, and one for c.

is a nested for each needed? or checking to see if the 
following value is 
not equal to the preceding, then then summing?

thanks,
Dmitri

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.802 / Virus Database: 545 - Release Date: 11/26/2004



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--