format-number(1234.567,'#.00;negative #.00') '1234.57'

format-number(-1234.567,'#.00/negative #.00') 'negative 1234.57'

format-number(-1234.567,'#.00') '-1234.57'

Каждая из частей образца форматирования состоит из префикса (NFPrefix), целой части (NFInteger), необязательной дробной части (NFFractional) и суффикса (NFSuffix).

[NF 2] NFSubpattern ::= NFPrefix NFinteger NFFractional? NFSuffix

Префикс или суффикс образца форматирования могут содержать символ процента. Если суффикс содержит символ процента, число должно быть умножено на 100 и выведено со знаком процента. Наличие символа процента в префиксе на форматирование не влияет.

Пример

format-number(0.45,'0.00%') '45.00%'

format-number(0.45,'0.##%') '45.00%'

format-number(0.45678,'%0.00') '%0.46'

format-number(0.45678,'0.####%') '45.678%'

Префикс задает строку, которая будет предшествовать числу, это может быть последовательность любых неформатирующих символов (NFChar) плюс символ процента (NFPercent). Аналогично, суффикс будет следовать за числом, и он тоже не может содержать форматирующих символов (за исключением символа процента).

[NF 3] NFPrefix ::= (NFChar NFPercent?)*

[NF 4] NFSuffix ::= (NFChar NFPercent?)*

Пример

Если мы хотим заключить наше число, к примеру, в квадратные скобки, мы должны будем включить в его образец форматирования префикс '[' и суффикс ']':

format-number(123456, '[#]') '[123456]'

Нетерминал NFinteger определяет, как будет выглядеть целая часть числа. Он начинается несколькими символами NFOptDigit (по умолчанию '#'), показывающими позиции, в которых цифры необязательны, и состоит из символов NFReqDigit (по умолчанию '0'), показывающих позиции обязательных цифр, а также символа NFGroupDelim (по умолчанию ','), показывающего позицию символа-разделителя групп цифр.

[NF 5] NFInteger ::= NFOptDigit*

                     (NFReqDigit* NFGroupDelim

                     | NFGroupDelim NFOptDigit*)?

                     NFReqDigit+

Примеры

format-number(1234.56,'#0000') '1235'

format-number(1234.56,'00000') '01235'

format-number(1234.56,'00,000') '01,235'

format-number(1234.56,'000,00') '0,12,35'

Замечание

Некоторые процессоры позволяют указывать несколько символов-разделителей. Однако даже в этом случае они учитывают только последний из этих символов.

Пример

format-number(123456789.0123,'0000,000,00') '1,23,45,67,89'

Дробная часть числа, представленная нетерминалом NFFraction, начинается символом-разделителем целой и дробной части NFFractionDelim (по умолчанию '.'), продолжается последовательностью символов обязательных позиций цифр NFReqDigit и заканчивается последовательностью символов необязательных позиций NFOptDigit:

[NF 6] NFFraction ::= NFFractionDelim NFReqDigit* NFOptDigit*

Примеры

format-number(1234.567,'#.00') '1234.57'

format-number(1234.567,'#.00#') '1234.567'

format-number(1234.567,'#.0000') '1234.5670'

Продукция NFChar, использующаяся при определении префикса (NFPrefix) и суффикса (NFSuffix), может содержать любые неформатирующие символы:

[NF 7] NFChar ::= (Char - NFSymbol)

К специальным форматирующим символам относятся следующие:

□ символ обязательной позиции цифры (по умолчанию '0');

□ символ необязательной позиции цифры (по умолчанию '#');

□ символ-разделитель образцов форматирования для положительного и отрицательного числа (по умолчанию ';');

□ символ-разделитель целой и дробной части (по умолчанию '.');

□ символ процента (по умолчанию '%').

Перечислим их продукции:

[NF 8] NFSymbol           ::= NFReqDigit

                              | NFOptDigit

                              | NFSubpatternDelim

                              | NFFractionDelim

                              | NFGroupDelim

                              | NFPercent

[NF 9] NFReqDigit         ::= '0'

[NF 10] NFOptDigit        ::= '#'

[NF 11] NFSubpatternDelim ::= ';'

[NF 12] NFFractionDelim   ::= '.'

[NF 13] NFGroupDelim      ::= ','

[NF 14] NFPercent         ::= '%'

Синтаксические правила, которые мы привели выше, пока не являются стандартными. Они корректно передают синтаксис образца форматирования, но являются более строгими, чем определения в документации языка Java.

Элемент xsl:decimal-format

Синтаксис элемента задан конструкцией вида:

<xsl:decimal-format

 name='имя'

 decimal-separator='символ'

 grouping-separator='символ'

 infinity='строка'

 minus-sign='символ'

 NaN='строка'

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату