xsl-list
[Top] [All Lists]

Re: [xsl] Add numbers

2007-10-09 08:18:01
<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>
--~--

<Prev in Thread] Current Thread [Next in Thread>