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

ЖАНРЫ

Технология XSLT

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

Шрифт:

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

 percent="символ"

 per-mille="символ"

 zero-digit="символ"

 digit="символ"

 pattern-sераrator="символ"/>

XSLT

позволяет изменять специальные символы, влияющие на форматирование строки. Именованный набор таких символов и некоторых других указаний называется десятичным форматом и определяется элементом
xsl:decimal-format
. От атрибутов этого элемента зависит, как будут обрабатываться символы образца форматирования и как число будет отображаться на выходе:

Атрибут

name
элемента
xsl:decimal-format
задает расширенное имя десятичного формата. Если имя не указано, это означает, что элемент
xsl:decimal-format
определяет десятичный формат по умолчанию.

Остальные атрибуты контролируют интерпретацию форматирующего образца и вывод строкового представления числа следующим образом:

□ 

decimal-separator
— задает символ, разделяющий целую и дробную части числа. Значением этого атрибута по умолчанию является символ "
.
", с Unicode-кодом
#x2e
. Атрибут
decimal-separator
рассматривается как специальный символ образца форматирования. Кроме того, он будет использован как разделяющий символ при выводе;

□ 

grouping-separator
— задает символ, группирующий цифры в целой части записи числа. Такие символы используются, например, для группировки тысяч ("
1,234,567.89
"). Значением по умолчанию является символ "
,
", код
#x2c
.
grouping-separator
рассматривается как специальный символ образца форматирования. Помимо этого, он будет использован как разделяющий символ групп цифр при выводе числа;

□ 

percent
— задает символ процента. Значением по умолчанию является символ "
%
", код
#x25
. Этот символ будет распознаваться в образце форматирования и использоваться при выводе;

□ 

per-mille
— задает символ промилле. Значением по умолчанию является символ "
", код
#х2030
. Символ промилле распознается в образце форматирования и используется в строковом представлении числа;

□ 

zero-digit
— задает символ нуля. Значением по умолчанию является символ "
0
", код
#x30;
. В качестве цифр при отображении числа будут использоваться символ нуля и 9 символов, следующих за ним. Символ нуля распознается в образце форматирования и используется при выводе строкового представления числа;

Поделиться с друзьями: