我有一个像这样的XML片段
<lines>
<item><code>1.1</code><amt>1000.00</amt></item>
<item><code>1.3.1</code><amt>2000.00</amt></item>
<item><code>1.3.2</code><amt>3000.00</amt></item>
<item><code>2.1</code><amt>4000.00</amt></item>
...
</lines>
我想要所有1 *节点的总和。完整列表是已知的,所以我可以编写如下内容:
<xsl:value-of select="item[code=1.1]/amt +
item[code=1.2]/amt + item[code=1.3.1]/amt + item[code=1.3.2]/amt"/>
问题是任何(甚至所有)节点都可以不存在(例如示例中的1.2)。所以声明返回NaN!
会很感激一些好的建议:)
亚历
答案 0 :(得分:1)
如果所有amt
都是有效小数,则可以使用此选项:
<xsl:value-of select="sum(item[starts-with(code, '1')]/amt)"/>
如果您只想对数字求和并省略NaN值(如果有的话),请使用:
<xsl:value-of select="sum(item[starts-with(code, '1.') and number(amt)]/amt)"/>
答案 1 :(得分:1)
在这种情况下,因为它是一个直接的总和,你可以做
<xsl:value-of select="sum(item[code=1.1 or code=1.2 or
code=1.3.1 or code=1.3.2]/amt)"/>