使用 添加数字XSL
时,使用 显示结果exponent
。例如,如果ProductID
是1111
<xsl:value-of select="@ProductID + 1000000"/>
它显示类似于1.1111E6
,但是我希望结果是1001111
。
谢谢。
使用 添加数字XSL
时,使用 显示结果exponent
。例如,如果ProductID
是1111
<xsl:value-of select="@ProductID + 1000000"/>
它显示类似于1.1111E6
,但是我希望结果是1001111
。
谢谢。
您可能正在使用非模式感知转换,因此@ProductID 的值是无类型的,这意味着当您进行算术运算时,结果是 xs:double。如果你做了整数算术:
xs:integer(@ProductID) + 1000000
结果将是一个 xs:integer 并且会这样输出。
在 XPath 1.0 中,所有算术都是 xs:double 算术,但是数字到字符串的转换规则通过要求将“整数”作为整数输出来隐藏这个事实。
您似乎正在使用 XSLT 2.0 处理器(我正在使用的所有 5-6 个不同的 XSLT 1.0 处理器都会产生想要的答案 - 1001111
.
使用 XSLT 2.0 处理器,只需转换@ProductID
为xs:decimal
:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:value-of select="xs:decimal(@ProductID) + 1000000"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于以下 XML 文档时:
<t ProductID="1111"/>
产生了想要的正确结果:
1001111
请注意:
使用xs:decimal(someNumber)
构造函数和十进制算术保证结果的最大精度,以防万一someNumber
可以有一个非整数值。
该类型xs:decimal
是 的基本类型xs:integer
,即 anyxs:integer
也是xs:decimal
,因此此解决方案也适用于任何整数值。