Приведение строк к числам с использованием XSLT - PullRequest
3 голосов
/ 29 апреля 2010

Есть задача вывести некоторые данные, взятые из базы данных, используя XSLT. Текущий язык приложения - ru_RU, поэтому десятичный разделитель - запятая. Похоже,

<data>
  <row>
    <date value="28.04.2010"/>
    <clicks value="281"/>
    <depth value="1,7"/>
  <row>
  <row>
    <date value="29.04.2010"/>
    <clicks value="15"/>
    <depth value="3"/>
  <row>
<data>

Необходимо отформатировать значение глубины как десятичное число: 1,70 и 3,00. Когда я пытаюсь преобразовать значение ising:

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

Я получаю NaN , поскольку XSLT-процессор не считает запятую десятичным разделителем при приведении значения атрибута к числу.

Как-то помогает, когда я вручную «переводю» исходную строку из формата «десятичная запятая» в «десятичную точку» один

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

но выглядит довольно некрасиво.

Есть ли более правильный и централизованный способ сообщить процессору, что знак запятой является десятичным разделителем?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Нет более правильного или централизованного способа. Для этого я должен предварительно обработать файл XML с помощью специального xslt, который преобразует числа так же, как вы это делаете.

1 голос
/ 29 апреля 2010

Вы пытались использовать параметр локали format-number? (format-number имеет третий необязательный параметр)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...