Sum没有添加浮点变量。它将XSLT中的值连接起来
当我尝试对浮点变量求和时,结果是所有变量的串联字符串,而不是求和。我不知道如何继续Sum没有添加浮点变量。它将XSLT中的值连接起来,xslt,Xslt,当我尝试对浮点变量求和时,结果是所有变量的串联字符串,而不是求和。我不知道如何继续 <xsl:for-each select="G_1/G_2/FILE_FRAGMENT/SLO_CALPERS_PAYROLL/Person_DG"> <xsl:choose> <xsl:when test="Run_Results_Record/Run_R
<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>
23.46
实际结果
<results>0.9311.2111.32</results>
0.9311.2111.32
您采取了错误的操作顺序。你应该:
- 第一笔金额<代码>金额代码>值
- 然后应用所需的格式(对刚刚计算的总和)
<main>
<Amount>1.7</Amount>
<Amount>3.3</Amount>
</main>
1.7
3.3
我执行了以下脚本:
<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>
1.7
3.3
5
代码中的另一个缺陷是将求和指令
在循环中(并选择)
这样,每次代码找到“允许”金额时(!=0)
它只对一个值求和并输出
结果是得到了串联的单个值
我的建议是:
- 完全放弃循环
- 选择也没有什么意义,因为零不太可能改变总和
- 在代码中,添加正确的XPath初始部分 (G_1/G_2/FILE_FRAGMENT/SLO_CALPERS_PAYROLL/Person_DG/Run_Results_Record/Run_Results_DG/Run_Results/)添加到select子句
sum
函数,该参数是一个节点集或包含数字的项目序列,然后你会根据sum()调用的结果调用format number
函数。到目前为止,您还没有显示相关的XML示例,因此很难判断您有哪些值以及使用的XPath表达式是否正确。我建议将所有样品切割到最低限度以证明问题,但允许其他人轻松复制。非常感谢!我把线圈掉了,它累加起来了!