XSLT 添加不存在的节点

XSLT add not existing nodes

我有一个 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)。所以语句 returns NaN !

希望得到一些好的建议:)

亚历克斯

只要所有 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)"/>

在这种情况下,因为它是直接求和,所以您可以这样做

<xsl:value-of select="sum(item[code=1.1 or code=1.2 or
                               code=1.3.1 or code=1.3.2]/amt)"/>