Формат XSL-число без округления

Есть ли что-то похожее на format-number в XSL, которое может принимать число и форматировать его как "# 0.00", а не округлять его?

Так,

  • 5 станет 5,00
  • 14,6 станет 14,60
  • 1,375 станет 1,37

Просто формат числа не работает, потому что он будет округлять 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>

Большое спасибо заранее!

1 ответ

Решение
<xsl:value-of select="<xsl:value-of 

Не очень хорошо сформирован и поэтому не смог бы пройти мимо парсера XML.

Я предполагаю, что вы ограничены 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:template>

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

</xsl:stylesheet>

который производит

-
5.00
-
14.60
-
1.37
-
Другие вопросы по тегам