您可以使用金額金額:
<xsl:variable name="amountSum" select="sum(root/*[substring(name(), 1, 6) = 'Amount'])"/>
root/*[substring(name(), 1, 6) = '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>
(這是更好地使用>
代替>
相比)
見live example:
源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>
由於它看起來不錯,但到底是什麼[子(名(),1,6)是什麼意思?我有很多元素名稱(產品,creditdebitflag等),如何調用這些特定的元素名稱? – user1358072 2013-05-09 11:09:26
substring(name(),1,6)獲取元素名稱的前六個字符 - >從「Answer5」獲得「答案」。這是因爲需要不同名稱的總和元素。我會將其添加到答案中。 – lopisan 2013-05-09 11:15:49