1

我一直在尝试获取不同节点中元素的总和(总)值,但是在一个又一个例子搞砸了一周之后,我离解决方案还差了一步。

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

用于获取值的选择是:

<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'

4

2 回答 2

1

试试这个:

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

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

于 2012-10-28T00:33:17.267 回答
1

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

你应该使用:

<xsl:value-of 
     select="sum(//workgroups/workgroup/agentstatus
                   /status[key/text()='Available, No ACD']/value)"/>
于 2012-10-28T00:34:58.473 回答