使用sum函数时如何保留十进制格式

时间:2016-01-20 15:03:40

标签: xslt

我需要添加每次出现的totalPackageQuantity,totalGrossVolume和totalGrossWeight

<packageTotal>
  <packageTypeCode>BX</packageTypeCode>
  <totalPackageQuantity>3</totalPackageQuantity>
  <totalGrossVolume measurementUnitCode="CBM">0.026000</totalGrossVolume>
  <totalGrossWeight measurementUnitCode="KGM">2.880000</totalGrossWeight>
</packageTotal>
  <packageTotal>
  <packageTypeCode>BX</packageTypeCode>
  <totalPackageQuantity>3</totalPackageQuantity>
  <totalGrossVolume measurementUnitCode="CBM">0.026000</totalGrossVolume>
  <totalGrossWeight measurementUnitCode="KGM">2.880000</totalGrossWeight>
</packageTotal>

在上面的xml结构中,每个

的预期值

5.760000(总重量)

0.052000(总总体积)

我目前正在使用此

sum(packageTotal/totalGrossWeight)

使用sum函数去掉一些十进制值,我需要十进制格式。如果只出现一次,则该值将保持不变。

1 个答案:

答案 0 :(得分:1)

不可能&#34;保留&#34;格式,因为给定的值必须在它们可以求和之前转换为数字 - 并且数字没有格式。

如果您知道所需的精度是小数点后六位,那么只需使用:

<xsl:value-of select="format-number(sum(packageTotal/totalGrossWeight), '0.000000')"/>

如果您需要动态恢复原始格式,请尝试:

<xsl:variable name="format" select="translate(packageTotal[1]/totalGrossWeight, '123456789', '000000000')" />
<xsl:value-of select="format-number(sum(packageTotal/totalGrossWeight), $format)"/>