每个父节点的Sum内容值

时间:2018-03-25 10:34:36

标签: xml xslt

对于节点父节点的每个值,我想总结相关的元素值。在下面的例子中,我期望得到3个结果:第一个父项为30,第二个为50,第三个父项为0,因为它没有父值。 你可以帮助我得到这个结果并纠正我的代码吗? :

示例文件:

<root>
<parent>
<parentValue>Val1</parentValue>
<element>
<elementname>A</elementname>
<elementvalue>10</elementvalue>
</element>
<element>
<elementname>A</elementname>
<elementvalue>20</elementvalue>
</element>
</parent>
<parent>
<parentValue>Val2</parentValue>
<element>
<elementname>B</elementname>
<elementvalue>50</elementvalue>
</element>
</parent>
<parent>
<element>
<elementname>C</elementname>
<elementvalue>60</elementvalue>
</element>
</parent>
</root>

代码:

<xsl:template match="/">
    <xsl:for-each select="/root/parent/parentValue">
      <xsl:variable name="result">
        <xsl:value-of select="sum(elementvalue)" />
      </xsl:variable>
    </xsl:for-each>

1 个答案:

答案 0 :(得分:1)

设置两个模板

  <xsl:template match="parent[parentValue]">
     <xsl:value-of select="sum(element/elementvalue)"/>
  </xsl:template>

  <xsl:template match="parent[not(parentValue)]">0</xsl:template>

https://xsltfiddle.liberty-development.net/b4GWVn

或单一

  <xsl:template match="parent">
     <xsl:value-of select="sum(.[parentValue]/element/elementvalue)"/>
  </xsl:template>

https://xsltfiddle.liberty-development.net/b4GWVn/1