1

我要转换的 XML 包含类似 7.3248378E7 的内容,XSL-FO 处理器本身不支持它(在 PDF 文件中以 NaN 结尾)。有没有一种很好的方法(与肮脏的黑客相反)来转换这种数字格式?

非常感谢。

4

3 回答 3

1

我找到了这篇文章: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

于 2010-02-27T14:04:20.963 回答
0

项目是指定为 xs:float 还是 xs:double,而不是 xs:decimal?如果这不起作用,那么我认为您将不得不采用“肮脏的黑客”方法。请参阅XSLT 页面中的“要求 29” 。

于 2010-02-26T14:47:33.037 回答
0

今天我不得不用科学转换来解决一个类似的问题。最后我不得不编写自己的 XSLT 转换模板,因为 Michael Case 在其他答案中提到的原始“convertSciToNumString”有一些错误。

这是一篇关于此实现和转换测试的文章。 http://www.orm-designer.com/article/xslt-convert-scientific-notation-to-decimal-number

于 2010-04-20T15:23:56.327 回答