【发布时间】:2015-12-07 17:07:54
【问题描述】:
我正在生成一个元素名称的总和,当它们存在时会递增。
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>
【问题讨论】:
-
Aggregate-function for sum and product in XPath 的可能重复项。最佳答案有一个 XSLT 1.0 部分;您可以省略“产品”部分,因为您只需要总和。
-
我不认为它是重复的,因为示例只使用了“价值”。不是 value_1、value_2 等。这些元素的名称不同,因此代码无法解决此问题。
-
您需要做的就是更改表达式以匹配标签。