XSLT SUM()无法按预期工作

时间:2012-10-28 00:26:40

标签: xslt xpath sum

我一直在尝试获取不同节点中元素的总和(总)值,但经过一周的示例后面的示例,我没有接近解决方案。

我得到的是字符串中列出的不同值而不是总和。

用于获取值的选择是:

<xsl:for-each select="//workgroups/workgroup/agentstatus/status">
  <xsl:if test="key='Available, No ACD'">
    <xsl:value-of select="sum(value)"/>
  </xsl:if>
</xsl:for-each>

这会返回111而非预期值3

我在这里做错了什么?

这是xml version =“1.0”encoding ='utf-8'

2 个答案:

答案 0 :(得分:1)

试试这个:

<xsl:value-of select="sum(//workgroups/workgroup/agentstatus/status[./key/text()='Available, No ACD']/value)" />

通过XSLT的工作方式来处理循环,因此您不需要为每个或if语句指定一个 - 这都是xpath语句所暗示的。 如果这不起作用,请您发布正在运行它的XML的副本,然后我会根据需要更新xpath。

答案 1 :(得分:1)

您的代码选择所有状态元素,然后对于每个具有所需键值的代码,它输出sum(value)。因此,摘要会针对status的每个xsl:if点击单独运行。

您应该使用:

<xsl:value-of 
     select="sum(//workgroups/workgroup/agentstatus
                   /status[key/text()='Available, No ACD']/value)"/>