Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sum没有添加浮点变量。它将XSLT中的值连接起来_Xslt - Fatal编程技术网

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子句

这就是我正在使用的代码请编辑您的问题,并以格式良好且可读的方式插入任何代码示例,我们需要查看相关XSLT和相关XML输入示例。谢谢。这是我第一次使用stackoverflow。所以我必须弄清楚,通常你会先用一个参数调用
sum
函数,该参数是一个节点集或包含数字的项目序列,然后你会根据
sum()调用的结果调用
format number
函数。到目前为止,您还没有显示相关的XML示例,因此很难判断您有哪些值以及使用的XPath表达式是否正确。我建议将所有样品切割到最低限度以证明问题,但允许其他人轻松复制。非常感谢!我把线圈掉了,它累加起来了!