【问题标题】:XSLT format-number with comma带逗号的 XSLT 格式编号
【发布时间】:2010-09-21 09:33:27
【问题描述】:

我正在尝试格式化这个和其他类似的元素,所以它看起来像这样 2,590:

<Add_Amount>2,59</Add_Amount>

这样做:

<xsl:decimal-format name="dkk" decimal-separator="," grouping-separator="."/>

....

    <xsl:value-of select="translate(format-number(Add_Amount, '#.###,000', 'dkk'), ',', '.')" />

输出结果为 NaN。 非常感谢任何帮助。

谢谢。

//丹尼尔

【问题讨论】:

    标签: xml xslt format


    【解决方案1】:

    使用

    format-number(translate(., ',','.'), '#.###,000', 'd')
    

    这种转变

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text"/>
    
     <xsl:decimal-format name="d"
      decimal-separator="," grouping-separator="."/>
    
     <xsl:template match="/">
       <xsl:value-of select=
       "format-number(translate(., ',','.'), '#.###,000', 'd')"/>
     </xsl:template>
    </xsl:stylesheet>
    

    应用于提供的 XML 文档时

    <Add_Amount>2,59</Add_Amount>
    

    产生想要的结果

    2,590
    

    您的代码的问题是 2,59 不是有效数字,必须先转换为有效数字,然后才能将其作为format-number() 的第一个参数传递。

    【讨论】:

      【解决方案2】:

      Dimitre Novatchev 的回答中对translate() 的额外调用似乎没有必要。使用&lt;xsl:decimal-format&gt;应该就够了,像这样:

      <xsl:decimal-format name="euroFormat" decimal-separator="," grouping-separator="."/>
      <xsl:value-of select="format-number(text(), '###.###,00', 'euroFormat')"/>
      

      【讨论】:

      • 这是错误的: 返回 NaN
      【解决方案3】:

      你可以简单地这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        • 2013-12-10
        相关资源
        最近更新 更多