【问题标题】:XSLT mapping giving alphanumeric for decimal valueXSLT 映射为十进制值提供字母数字
【发布时间】:2022-12-11 03:03:07
【问题描述】:

我有一个要求,我应该获得 -0.0000000005 的绝对值。我尝试使用 <xsl:value-of select='abs(-0.0000000005)' /> 和 <xsl:value-of select="translate(-0.0000000005, '-', '')" /> 。但没有任何效果,并且始终将字母数字值设为 5.0E10。请在此处提供帮助,以从任何十进制数中获取正确的绝对值。

需要正确绝对值的代码才能从十进制数中获取

【问题讨论】:

  • 您能否告诉我们您使用的是哪个 XSLT 处理器以及哪个版本的 XSLT?在 saxonica XSLT3 中,我从指令 &lt;xsl:value-of select='abs(-0.0000000005)' /&gt; 中得到了精确的 0.0000000005
  • 嗨 Truisme,这是 XSLT 1.0 版
  • 恐怕我还没有找到 XSLT 1.0 的简单解决方案。对于 XSLT 2.0 及更高版本,我在下面提供的答案应该适合您。
  • @Sandhya,您使用的是哪个 XSLT 处理器?当您说“什么都不起作用”时,请告诉我们它是如何失败的。我很惊讶任何 XSLT 1.0 处理器都会使用指数表示法生成输出:我们需要更多信息来帮助您解决这个问题。
  • @MichaelKay libxslt 如果该值已经是一个数字(如在给定的示例中),处理器将生成科学记数法。

标签: xslt mapping


【解决方案1】:

根据 XSLT 处理器,这可能对您有用:

<xsl:value-of select="xs:decimal(abs(-0.0000000005))" />

【讨论】:

    【解决方案2】:

    您可以尝试使用 format-number 函数来明确指定数字的格式。例如这样的事情:

    <xsl:value-of select="format-number(abs(-0.0000000005), '0.##########')" />
    

    (您提到使用 XSLT 1.0,但 abs 函数不在 XPath 1.0/XSLT 1.0 中。我假设您有一些提供该功能的扩展。其他 XSLT 1.0 用户可能想检查他们的 XSLT 处理器是否支持 @987654322 @EXSLT 的扩展函数。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2022-11-29
      • 2015-05-06
      • 1970-01-01
      • 2010-11-19
      • 2014-03-11
      • 1970-01-01
      相关资源
      最近更新 更多