Subject: [xsl] More addition questions From: "Chaudhary, Harsh" <HCHAUDHA@xxxxxxxxx> Date: Wed, 10 Oct 2007 13:40:28 -0500 |
Hi, I am using Xalan and XSLT 1.0 for the following XML: <?xml version="1.0" encoding="UTF-8"?> <first> <second> <a val="4" key="1">a</a> <a val="2" key="2">b</a> </second> <second> <a val="3" key="1">c</a> <a val="8" key="2">d</a> <a val="1" key="2">e</a> </second> </first> OUTPUT: <?xml version="1.0" encoding="UTF-8" ?> <top> <sumsForEachElementByKeyMultipliedByPosition> <!-- sums For Each Element Grouped By Key And Multiplied By Position: --> <element key="1">7</element> <!-- This would be e.g. (4 + 3) * 1 --> <element key="1">14</element> <!-- This would be e.g. (4 + 3) * 2 --> </sumsForEachElementByKeyMultipliedByPosition> <sumsForEachElementByKeyMultipliedByPosition> <element key="2">11</element> <!-- This would be e.g. (2 + 8 + 1) * 1 --> <element key="2">22</element> <!-- This would be e.g. (2 + 8 + 1) * 2 --> <element key="2">33</element> <!-- This would be e.g. (2 + 8 + 1) * 3 --> </sumsForEachElementByKeyMultipliedByPosition> <!-- This is where I am stuck. Basically, after doing the above, I want to add the numbers by each group again so the oupput should look like... --> <sumOfAGroup> <sum>21</sum> <!-- 7 + 14 --> <sum>66</sum> <!-- 11 + 22 + 33 --> </sumOfAGroup> </top> XSLT: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:key name="a" match="//a" use="@key"/> <xsl:template match="/"> <top> <xsl:for-each select="//a[generate-id() = generate-id(key('a', @key)[1])]"> <sumsForEachElementByKeyMultipliedByPosition> <xsl:for-each select="key('a', @key)"> <element> <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute> <xsl:value-of select="sum( key('a', @key)/@val ) * position()"/> </element> </xsl:for-each> </sumsForEachElementByKeyMultipliedByPosition> </xsl:for-each> <sumOfAGroup> <!-- STUCK --> </sumOfAGroup> </top> </xsl:template> </xsl:stylesheet> Any suggestions without doing a mullti-pass? Thanks, HC.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Convert CALS Table, Andrew Welch | Thread | Re: [xsl] More addition questions, David Carlisle |
Re: [xsl] Convert CALS Table, Andrew Welch | Date | Re: [xsl] More addition questions, David Carlisle |
Month |