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)"/>
我有一个 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)"/>