我正在努力生成元素名称的总和,当它们存在时会递增。
XML示例:
<Distributions>
<DIST_DISTRIBUTIONMETHOD_1>Check to Other</DIST_DISTRIBUTIONMETHOD_1>
<DIST_CREDITOR_1>MOTORS FINANCE</DIST_CREDITOR_1>
<DIST_AMOUNT_1>16710.04</DIST_AMOUNT_1>
<DIST_NET_1>No</DIST_NET_1>
<DIST_DISTRIBUTIONMETHOD_2>Check to Other</DIST_DISTRIBUTIONMETHOD_2>
<DIST_CREDITOR_2>WILLIAM HOOK</DIST_CREDITOR_2>
<DIST_AMOUNT_2>1239.86</DIST_AMOUNT_2>
<DIST_NET_2>Yes</DIST_NET_2>
</Distributions>
我需要总结DIST_AMOUNT_1,2等,总共可能存在15个可能存在或可能不存在的情况。
因此,在检查变量是否存在之后,我已将每个DIST_AMOUNT分配给变量。总和本身就是我遇到问题的地方,因为没有任何东西可以填充这笔款项而且我不知道为什么,我已经打败了我的头,并且现在用谷歌搜索答案。任何帮助表示赞赏。
我的XSL代码因此:
<xsl:variable name="DIST_TMP_1">
<xsl:choose>
<xsl:when test="//DIST_AMOUNT_1">
<xsl:value-of select="number(//DIST_AMOUNT_1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="number(0.00)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="DIST_TMP_2">
<xsl:choose>
<xsl:when test="//DIST_AMOUNT_2">
<xsl:value-of select="number(//DIST_AMOUNT_2)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="number(0.00)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="DIST_TMP_3">
<xsl:choose>
<xsl:when test="//DIST_AMOUNT_3">
<xsl:value-of select="number(//DIST_AMOUNT_3)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="number(0.00)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="ECD070_TOTAL_VAR">
<xsl:value-of select="sum($DIST_TMP_1+$DIST_TMP_2+DIST_TMP_3)"/>
</xsl:element>
答案 0 :(得分:2)
为什么你不能简单地做:
<xsl:value-of select="sum(/Distributions/*[starts-with(name(), 'DIST_AMOUNT_')])" />
或者,如果你必须明确,请执行:
<xsl:value-of select="sum((DIST_AMOUNT_1, DIST_AMOUNT_2, DIST_AMOUNT_3, ... DIST_AMOUNT_15))" />
(这是Distributions
的背景)。没有必要测试这些中的每一个是否存在:将忽略不存在的节点。