代码之家  ›  专栏  ›  技术社区  ›  Mork0075

使用XSLT(FO)将科学符号转换为双精度

  •  1
  • Mork0075  · 技术社区  · 14 年前

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

    3 回复  |  直到 14 年前
        1
  •  1
  •   Mads Hansen    14 年前

    我发现这个帖子: XSL Transform for converting from scientific notation to decimal number

    包含/导入样式表后,调用 convertSciToNumString

    <xsl:call-template name="convertSciToNumString">
        <xsl:with-param name="myval" select="'7.3248378E7'"/>
    </xsl:call-template>
    

    生产: 73248378

    <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

        2
  •  0
  •   mpez0    14 年前

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

        3
  •  0
  •   Ludek Vodicka    14 年前

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

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