当我尝试对浮点变量求和时,会导致所有变量的串联字符串而不是总和。我不知道该怎么办。
<xsl:for-each select="G_1/G_2/FILE_FRAGMENT/SLO_CALPERS_PAYROLL/Person_DG">
<xsl:choose>
<xsl:when test="Run_Results_Record/Run_Results_DG/Run_Results/Input_Value_Base_Name= 'Amount' and Run_Results_Record/Run_Results_DG/Run_Results/Amount != 0">
<xsl:value-of select="sum(format-number(Run_Results_Record/Run_Results_DG/Run_Results/Amount, '0.00'))"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
预期
<results>23.46</results>
实际结果
<results>0.9311.2111.32</results>
答案 0 :(得分:1)
操作顺序错误。您应该:
Amount
个值。因此,对于我的示例数据:
<main>
<Amount>1.7</Amount>
<Amount>3.3</Amount>
</main>
我执行了以下脚本:
<xsl:template match="main">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<Sum><xsl:value-of select="format-number(sum(Amount), '0.00')"/></Sum>
</xsl:copy>
</xsl:template>
(+ 身份模板),得到:
<main>
<Amount>1.7</Amount>
<Amount>3.3</Amount>
<Sum>5.00</Sum>
</main>
您的代码的另一个缺陷是您放入求和指令 在循环内(和选择)。
这样,每次您的代码找到“允许的” 金额(!= 0)时 它求和并输出仅一个值。
结果是您得到了各个值的连接。
我的建议是: