【问题标题】:XSLT function format_number does not work for 0 with format for leading zeroesXSLT 函数 format_number 不适用于具有前导零格式的 0
【发布时间】:2013-12-29 18:02:28
【问题描述】:

我想将 XSLT 中的数字格式化为一个带有前导零的 4 位数字。

例如

1234 -> 1234
12   -> 0012
1    -> 0001
0    -> 0000

因此我使用函数format-number如下:

format-number(somevalue, '0000')

这适用于除了 0 作为 somevalue 之外的所有内容。在这里,我得到 0 而不是 0000。

【问题讨论】:

  • 你输出的结果到底如何?
  • 您使用哪个版本的 XSLT 2.0 处理器?
  • 不只是版本...哪个 XSLT 处理器? format-number(.,'0000') 使用 XSLT 并且大多数处理器都返回 '0000' ...使用 Xalan 和 Saxon 6 (1.0) 和 Saxon HE/PE/EE (2.0) 进行测试
  • 我将 Saxon 9 HE 用于 XSLT,然后通过 FOP 1.1 将结果通过管道传输以生成 PDF。
  • 我正在输出这样的结果:

标签: xslt xslt-2.0


【解决方案1】:

我有一个代码 sn-p 和一个模板来添加前导零。 也许它可以帮助你:

<IDTNR>
 <xsl:call-template name="checkAndConvertNumeric">
     <xsl:with-param name="numValue" select="somevalue"/>
     <xsl:with-param name="numFormat" select="'0000'"/>
   </xsl:call-template>
</IDTNR>

<xsl:template name="checkAndConvertNumeric">
    <xsl:param name="numValue" />
    <xsl:param name="numFormat" />
    <xsl:choose>
        <xsl:when test="normalize-space(number($numValue)) = 'NaN'">
            <xsl:value-of select="$numValue" />
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="string(format-number($numValue,$numFormat))" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

排队

<xsl:with-param name="numFormat" select="'0000'"/>

您指定需要多少个零。

【讨论】:

    【解决方案2】:

    我刚刚发现了问题。我的问题是对如下数字的错误检查。

    <xsl:choose>
        <xsl:when test="not(number(somevalue))">
            <xsl:value-of select="concat(somevalue, ' =&#160;')"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="concat(format-number(somevalue, '0000'), ' =&#160;')"/>
        </xsl:otherwise>
    </xsl:choose>
    

    number(0) 得到 0 而 not(0) 为真。因此 0 是 nt 格式的。

    我按照 Peter 在帖子中的建议更改了号码检查,现在它可以正常工作了。

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      相关资源
      最近更新 更多