<xsl:template match="first/second[1]">
<xsl:param name="sum">0</xsl:param>
<xsl:apply-templates select="following-sibling::first/second">
<xsl:with-param name="sum" select="sum(a/@val)" />
</xsl:apply-templates>
<xsl:if test="not(following-sibling::first/second)">
<xsl:value-of select="$sum + sum(a/@val)" />
</xsl:if>
</xsl:template>
On 10/9/07, Chaudhary, Harsh <HCHAUDHA(_at_)amfam(_dot_)com> wrote:
Hi,
I have an XML:
<?xml version="1.0" encoding="UTF-8"?>
<first>
<second>
<a val="4" key="one">b</a>
<a val="2" key="two">b</a>
</second>
<second>
<a val="3" key="one">c</a>
</second>
</first>
I need to group together the nodes which have the same key and then I
need to add the attribute "val" in all such cases.
So, The output I need is:
<op>
<one>
<val>7</val>
</one>
<two>
<val>2</val>
</two>
</op>
How do I go about doing this? I am using Xalan and XSLT 1.0.
I have used the Meunichian method to group the nodes with same keys
together. But I don't know how to proceed from there. I tried using the
sum() function but it won't work for me on account that even if I run a
for-each loop over the set of nodes with the same key, it just prints
out the value of "val" for each a element. I think I need to be in the
parent element for this to work.
Thanks,
Harsh.
--~------------------------------------------------------------------
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>
--~--