Формат XSLT-числа с запятой - PullRequest
8 голосов
/ 21 сентября 2010

Я пытаюсь отформатировать этот и другие элементы одинаково, чтобы это выглядело следующим образом: 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. Любая помощь с благодарностью.

Спасибо.

// Daniel

Ответы [ 3 ]

11 голосов
/ 21 сентября 2010

Использование :

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().

4 голосов
/ 10 июля 2013

Дополнительный вызов translate() в ответе Дмитрия Новатчева кажется ненужным Использование <xsl:decimal-format> должно быть достаточно, например:

<xsl:decimal-format name="euroFormat" decimal-separator="," grouping-separator="."/>
<xsl:value-of select="format-number(text(), '###.###,00', 'euroFormat')"/>
0 голосов
/ 12 июня 2013

Вы можете просто сделать это следующим образом:

<xsl:value-of select="format-number(number, '#,###')"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...