我想要转换的XML包含类似7.3248378E7的内容,XSL-FO处理器本身不支持这种内容(最终在PDF文件中以NaN结尾)。是否有一种很好的方式(与脏黑客相反)转换这种数字格式?
非常感谢。
答案 0 :(得分:1)
我发现这篇文章:XSL Transform for converting 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
答案 1 :(得分:0)
项目是否指定为xs:float或xs:double,而不是xs:decimal?如果这不起作用,那么我认为你将不得不采用“肮脏的黑客”方法。请参阅XSLT page中的“要求29”。
答案 2 :(得分:0)
今天我必须通过科学转换来解决类似的问题。最后我不得不编写自己的XSLT转换模板,因为这里提到的Michael Case的原始“convertSciToNumString”在其他答案中有一些错误。
这是一篇关于此实现和转换测试的文章。 http://www.orm-designer.com/article/xslt-convert-scientific-notation-to-decimal-number