XSL и европейский формат для валюты, когда введенное числовое значение имеет запятую для десятичной - PullRequest
0 голосов
/ 19 января 2011

Кажется, что функция форматирования числа не в состоянии обрабатывать европейское число для форматирования.Могу ли я что-нибудь сделать с параметром «число» этой функции, чтобы она работала?Что европейские программисты делают с этим?

Например;Приведенный ниже код работает, когда десятичный формат создается с десятичным разделителем, а разделители группировки определены И, когда параметру «число» в формате числа указан период «.»в качестве начального десятичного разделителя.

    <!-- define number format to use -->
    <xsl:decimal-format 
         name="european" 
         decimal-separator=',' 
         grouping-separator='.' />  
    <!-- format the number -->
    <xsl:value-of select="format-number(1234.56,
                                        '#.##0,00;(#.##0,00)',
                                        'european')"/>

ОДНАКО, если предоставленный числовой параметр уже частично отформатирован в евро, число типа 1234,56 ... где запятая "," находится в числе изначально, а неточка ".", тогда функция format-number вернет "NaN".

У кого-нибудь есть способ решить эту проблему?Или вы конвертируете первоначально предоставленное число 1234,56 в 1234,56, чтобы оно работало?

Кто-нибудь знает, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 19 января 2011

Для любых числовых данных вы должны использовать числовой формат, распознаваемый XSLT / XPath (т. Е. Двойной формат / для XSLT / XPath 1.0 или один из форматов, определенных в спецификации схемы с помощью XSLT / XPath 2.0), и форматировать их только длявыходное представление при необходимости.Если у вас есть входные данные в другом формате, тогда вам действительно нужно сначала преобразовать их с помощью строковых функций в формат, который XSLT / XPath принимает, например, number(translate('1234,56', ',', '.')) как самый простой подход в XPath 1.0 или использование relce в XPath 2.0.

0 голосов
/ 19 января 2011

Предполагается, что XML должен представлять значения, такие как даты и числа, в формате «международного стандарта», а затем презентация должна быть локализована в зависимости от предпочтений отдельных пользователей. Таким образом, format-number предназначен для того, чтобы принимать «международный формат» числа в качестве входных данных и создавать «локализованный номер» в качестве выходных данных. Если дизайн вашего XML не соответствует этому соглашению, вам придется преобразовать его «вручную», например, используя translate () в XSLT 1.0 или регулярные выражения в XSLT 2.0.

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