This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Accumulating Sum ( Sum Across Rows)
- From: "KUMAR NINGASHETTY" <kningashetty at deltafunding dot com>
- To: <xsl-list at lists dot mulberrytech dot com>, <j3322ptm at yahoo dot de>
- Date: Tue, 02 Apr 2002 18:47:29 -0500
- Subject: Re: [xsl] Accumulating Sum ( Sum Across Rows)
- Reply-to: xsl-list at lists dot mulberrytech dot com
Here is the XSL snippet i am using and adopting the sum() function you specified . It doesnt give me the sum rather
it gives me the concatenation of numbers across the rows... For example in this XML example it gives 41 instead of
5 ( 4+1)
can you throw some solution on this again to calculate SUM across ROWS ..I am attaching XML again if anyone wanna
take a look at it ...
Note : pete , I have changed XML slightly to look simple ...
<!-- XSL snippet -->
<xsl:key name="distinct-region" match="//company/vehicle/region/region_name" use="text()"/>
<xsl:template match="/" >
<xsl:for-each select="//company/vehicle/region/region_name[generate-id()=generate-id(key('distinct-region', text()))]">
<xsl:variable name="sumN">
<xsl:for-each select="key('distinct-region', text())">
<xsl:variable name="uid" select="ancestor::vehicle/@id"/>
<xsl:value-of select="sum(ancestor::data/review/vehicle[@idref=$uid)"/>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$sumN"/>
</xsl:for-each>
</xsl:template>
<!-- XML -->
<data>
<company>
<vehicle id="768">
<region >
<region_name><![CDATA[Region 4]]></region_name>
</region>
<company_name><![CDATA[ABC Inc.]]></company_name>
<status><![CDATA[t]]></status>
</vehicle>
<vehicle id="232">
<region >
<region_name><![CDATA[Region 4]]></region_name>
</region>
<company_name><![CDATA[BBC Inc.]]></company_name>
<status><![CDATA[f]]></status>
</vehicle>
</company>
<review>
<vehicle idref="768">1</vehicle>
<vehicle idref="232">4</vehicle>
</review>
</data>
HTML o/P
—-----------------
Comp stat typN Total
----- ----- ---- -----
ABCInc t 1 5
BBCInc f 4 5
( i am having probs calculating Total )
Thanx again
-Kumar
>>> j3322ptm@yahoo.de 04/02/02 03:00PM >>>
KUMAR NINGASHETTY wrote:
...
> Comp stat typN Total
> ----- - ----- ---- -----
> ABCInc t 1 5
> BBCInc f 4 5
>
> Problem : I could populate first 3 columns..To populate the
> 4th column 'Total' which is sum frm each row of column 'typeN'
Check whether the sum() function solves your problem.
Try something like
<xsl:variable name="totalN" select="vehicle/count[type='N']"/>
and use the variable.
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list