我要转换的 XML 包含类似 7.3248378E7 的内容,XSL-FO 处理器本身不支持它(在 PDF 文件中以 NaN 结尾)。有没有一种很好的方法(与肮脏的黑客相反)来转换这种数字格式?
非常感谢。
我找到了这篇文章:XSL Transform for convert from Scientific notation to decimal number,它提供了 XSLT 1.0 样式表。
包含/导入样式表后,调用convertSciToNumString模板进行转换:
<xsl:call-template name="convertSciToNumString">
<xsl:with-param name="myval" select="'7.3248378E7'"/>
</xsl:call-template>
产生:73248378
这可以评估为一个数字,应该可以解决您的 NaN 问题:
<xsl:variable name="num">
<xsl:call-template name="convertSciToNumString">
<xsl:with-param name="myval" select="'7.3248378E7'"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$num"/> + 1 = <xsl:value-of select="$num + 1" />
产生:73248378 + 1 = 73248379
项目是指定为 xs:float 还是 xs:double,而不是 xs:decimal?如果这不起作用,那么我认为您将不得不采用“肮脏的黑客”方法。请参阅XSLT 页面中的“要求 29” 。
今天我不得不用科学转换来解决一个类似的问题。最后我不得不编写自己的 XSLT 转换模板,因为 Michael Case 在其他答案中提到的原始“convertSciToNumString”有一些错误。
这是一篇关于此实现和转换测试的文章。 http://www.orm-designer.com/article/xslt-convert-scientific-notation-to-decimal-number