3

XSLのformat-numberに似たもので、数値を取得して「#0.00」のようにフォーマットし、丸めることができないものはありますか?

それで、

  • 5は5.00になります
  • 14.6は14.60になります
  • 1.375は1.37になります

format-numberは、1.375から1.38に丸められるため、機能しません。

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

この連結部分文字列の混乱は、5では機能せず(「。」がないため)、14.6の終わりにゼロを追加しません。

<xsl:value-of select="concat(substring-before(MY_NUMBER,'.'), '.',  substring(substring-after(MY_NUMBER,'.'),1,2))" />

私は厄介なことをしなければならないでしょう:

<xsl:choose>
    <xsl:when test=""></xsl:when>
    <xsl:otherwise></xsl:otherwise>
</xsl:choose>

よろしくお願いします!

4

1 に答える 1

9

XSLT 1に制限されていると思いますので、このようなもの

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:template match="/">
:
<xsl:call-template name="f">
<xsl:with-param name="n" select="5"/>
</xsl:call-template>
:
<xsl:call-template name="f">
<xsl:with-param name="n" select="14.6"/>
</xsl:call-template>
:
<xsl:call-template name="f">
<xsl:with-param name="n" select="1.375"/>
</xsl:call-template>
:
<xsl:call-template name="f">
<xsl:with-param name="n" select="-12.1234"/>
</xsl:call-template>
:
</xsl:template>

<xsl:template name="f">
<xsl:param name="n"/>
<xsl:value-of select="format-number(floor($n*1000) div 1000, '#0.00')"/>
</xsl:template>

</xsl:stylesheet>

を生成します

:
5.00
:
14.60
:
1.38
:
-12.12
:
于 2013-01-16T00:45:16.440 に答える