Чтение онлайн

на главную

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

[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="строка"

Поделиться:
Популярные книги

Проклятый Лекарь. Род III

Скабер Артемий
3. Каратель
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Проклятый Лекарь. Род III

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Измена. Возвращение любви!

Леманн Анастасия
3. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Возвращение любви!

Неудержимый. Книга XI

Боярский Андрей
11. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XI

Сердце Дракона. Том 9

Клеванский Кирилл Сергеевич
9. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.69
рейтинг книги
Сердце Дракона. Том 9

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Под маской моего мужа

Рам Янка
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Под маской моего мужа

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Газлайтер. Том 12

Володин Григорий Григорьевич
12. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 12

Сиротка

Первухин Андрей Евгеньевич
1. Сиротка
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Сиротка

Охота на эмиссара

Катрин Селина
1. Федерация Объединённых Миров
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Охота на эмиссара

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12