XSL - 如何添加具有相同属性的所有值?

XSL - how to add all values with the same attribute?

所以我有这个 XML 代码,我需要在其中添加具有相同 ID 的所有值。从 Identity 属性中获取 ID,而不是将其与值 10 或其他值进行比较。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="random.xsl"?>
<RootName>
    <RandomRootNode>
        <RandomNode>
            <Identity sid="10">abc</Identity>
            <Identity sid="20">def</Identity>
            <Identity sid="30">ghi</Identity>
        </RandomNode>
    </RandomRootNode>
    <SeriesRootNode>
        <Series>
            <Ran dustId="10">1</Ran>
            <Ran dustId="20">2</Ran>
            <Ran dustId="30">3</Ran>
        </Series>
        <Series>
            <Ran dustId="10">4</Ran>
            <Ran dustId="20">5</Ran>
            <Ran dustId="30">6</Ran>
        </Series>
        <Series>
            <Ran dustId="10">7</Ran>
            <Ran dustId="20">8</Ran>
            <Ran dustId="30">9</Ran>
        </Series>
    </SeriesRootNode>
</RootName>

所以为此我需要显示这样的东西

| ID | name | total |
|----|------|-------|
| 10 | abc  | 12    |
| 20 | def  | 15    |
| 30 | ghi  | 18    |

我试过了,但我只能得到所有的总和。所以我得到

| ID | name | total |
|----|------|-------|
| 10 | abc  | 45    |
| 20 | def  | 45    |
| 30 | ghi  | 45    |

我该怎么做?
我对编写 XSLT 还很陌生。

这是一个有效的 random.xsl
其输出在浏览器中符合要求。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>

    <!-- Demo template -->
    <xsl:template match="/RootName/RandomRootNode/RandomNode">
      <table border="1">
        <th width="50">ID</th><th>name</th><th>total</th>
        <xsl:for-each select="Identity">
          <xsl:variable name="curID" select="@sid" />
          <tr>
            <td align="center"><xsl:value-of select="$curID" /></td>
            <td align="center"><xsl:value-of select="text()" /></td>
            <td align="center"><xsl:value-of select="sum(/RootName/SeriesRootNode/Series/Ran[@dustId=$curID]/text())" /></td>
          </tr>
        </xsl:for-each>
      </table>
    </xsl:template>

    <!-- Remove not matched text nodes -->
    <xsl:template match="text()" />

</xsl:stylesheet>