我想显示印度的价格,如下:
5,55,555
不
555,555
应该没有小数。应该有一个逗号,如下:
我的代码:
<Price>555555</Price>
<xsl:decimal-format name="Format_INR" grouping-separator="," />
<xsl:value-of select="format-number(Price, '#,##,###', 'Format_INR')" />
但它显示
555,555
我做错了什么?
感谢您的帮助。
答案 0 :(得分:1)
format-number()的XSLT 2.0规范允许在示例中使用不规则的分组分隔符。
XSLT 1.0规范基于DecimalFormat的Java规范,它需要在分组分隔符之间定期间隔。
(更确切地说:JDK 7规范需要定期间隔,或者无论如何,它将最后一个间隔视为要使用的间隔:( 最后一个间隔与整数之间的间隔是使用的那个。所以“#,##,###,####”==“######,####”==“##,####,# ###“。但是XSLT 1.0规范特别指的是JDK 1.1.8,现在很难找到;我的回忆是这些问题非常模糊,而JDK规范的后续版本本质上是记录了初始实现中的错误。在JDK 1.1.8含糊不清的情况下,XSLT 1.0实现可以自由地执行。)
答案 1 :(得分:0)
如前所述,在 XSLT 2.0 中,您可以使用:
<xsl:value-of select="format-number(Price, '#,##,###')" />
这将容纳最多9,999,999的数字。在此之上,您需要添加更多分隔符,例如:
<xsl:value-of select="format-number(Price, '##,##,##,###')" />
适用于最高999,999,999的数字等等。
在 XSLT 1.0 中,您可以执行以下操作:
<xsl:choose>
<xsl:when test="Price >= 1000">
<xsl:value-of select="format-number(floor(Price div 1000), '#,##')" />
<xsl:text>,</xsl:text>
<xsl:value-of select="format-number(Price mod 1000, '000')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number(Price, '#,###')" />
</xsl:otherwise>
</xsl:choose>
这适用于{em>任何量级的Price
。如果您需要重复使用它,请考虑将其设置为命名模板。
请注意,这两种方法都不需要您定义xsl:decimal-format
。