我一直在尝试获取不同节点中元素的总和(总)值,但经过一周的示例后面的示例,我没有接近解决方案。
我得到的是字符串中列出的不同值而不是总和。
用于获取值的选择是:
<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'
答案 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)"/>