XSLT添加不存在的节点

时间:2015-02-25 11:12:38

标签: xslt xslt-1.0

我有一个像这样的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!

会很感激一些好的建议:)

亚历

2 个答案:

答案 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)"/>