XSLT在多个元素之间添加值

时间:2012-05-22 09:11:50

标签: xml xslt

我遇到了XML / XSLT中的一个简单问题

我无法在问题上找到正确的名称,因此似乎无法找到任何解决方案。

XML:

<root>
   <entry gid ="001">
      <level_1>
         <target_value>50</target_value>
      </level_1>
   </entry>

   <entry gid ="001">
      <level_1>
         <target_value>30</target_value>
      </level_1>
   </entry>

   <entry gid ="002">
      <level_1>
         <target_value>40</target_value>
      </level_1>
   </entry>

   <entry gid ="002">
      <level_1>
         <target_value>20</target_value>
      </level_1>
   </entry>
</root>

XSL:

<xsl:for-each select="entry[@gid='001']">
   <xsl:if test="level_1/target_value != ''">
      <xsl:value-of select="sum(level_1/target_value)" />
   </xsl:if>
</xsl:for-each>

结果: 5030

任何帮助都会受到很大关注!

1 个答案:

答案 0 :(得分:1)

如您所见,您的转换总计唯一的level_1/target_value元素,并为每个entry[@gid='001']元素输出。

由于您希望所有 <entry>元素的总数为gid 001,因此您必须在提交给sum()的节点集中写入该元素。 }。

XSLT看起来像这样

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

  <xsl:output method="text" />

  <xsl:template match="/root">
    <xsl:value-of select="sum(entry[@gid='001']/level_1/target_value)" />
  </xsl:template>

</xsl:stylesheet>

<强>输出

80