您可以使用以下方式汇总金额:
<xsl:variable name="amountSum" select="sum(root/*[substring(name(), 1, 6) = 'Amount'])"/>
root/*[substring(name(), 1, 6) = 'Amount']
是一个选择器,用于选择名称以“Amount”开头的所有元素 - 即它选择:Amount1
, Amount2
, ...
在以下情况下会容易得多:
- 元素具有相同的名称(例如
Amount
),总和为:<xsl:variable name="amountSum" select="sum(Amount)"/>
- 某个父项中的所有元素都可以相加,总和为:(
<xsl:variable name="amountSum" select="sum(parentElement/*)"/>
这将 中的所有元素相加parentElement
)
然后您可以比较这些值:
<xsl:if test="OriginalAmount > $amountSum">.. sum is smaller ..</xsl:if>
(最好是使用>
而不是>
比较)
查看实时示例:
源 XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<OriginalAmount>2.2100</OriginalAmount>
<Amount1>1.0000</Amount1>
<Amount2>0.0000</Amount2>
<Amount3>1.0000</Amount3>
<Amount4>0.0000</Amount4>
</root>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:variable name="amountSum" select="sum(root/*[substring(name(), 1, 6) = 'Amount'])"/>
<xsl:value-of select="$amountSum"/>
<xsl:choose>
<xsl:when test="root/OriginalAmount > $amountSum">greater</xsl:when>
<xsl:otherwise>less</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>