Книга: Технология XSLT
Элемент xsl:decimal-format
Элемент 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 символов, следующих за ним. Символ нуля распознается в образце форматирования и используется при выводе строкового представления числа;
? digit
— определяет символ, который используется в образце форматирования для определения позиции необязательного символа. Значением по умолчанию является символ "#
". Этот символ распознается как форматирующий символ необязательной цифры. Он не включается в строковое представление числа;
? pattern-separator
— определяет символ, который используется в образце форматирования для разделения положительного и отрицательного форматов числа. Он не включается в строковое представление числа. Значением этого атрибута по умолчанию является символ ";";
? infinity
— задает строку, которая будет представлять бесконечность. Значением по умолчанию является строка "Infinity
";
? NaN
— задает строку, которая будет представлять не-числа. Значением по умолчанию является строка "NaN
";
? minus-sign
— задает символ, который будет использоваться для обозначения отрицательных чисел. Значением по умолчанию является символ "-
", код #x2D
.
Элемент xsl:decimal-format
не имеет смысла без функции format-number
. Все, на что влияют его атрибуты — это формат, который будет использоваться при преобразовании чисел в строку функцией format-number
.
Примеры
Определение десятичного формата:
<xsl:decimal-format
name="format1"
decimal-separator=","
minus-sign="N"
grouping-separator=":"
infinity="∞"
NaN="not-a-number"
percent="%"
digit="$"
pattern-separator="|"/>
Примеры функций format-number
:
format-number(123456.78, '$,0000', 'format1)
? '123456,7800'
?
format-number(-123456.78, '$,00$$', 'format1') 'N123456,78'
?
format-number(123456.78, '$,0000|$,0000-', 'format1') '123456,7800'
?
format-number(-123456.78, '$,00001$,0000-', 'format1') '123456,7800-'
?
format-number(-123456.78, '000:000:000,00$$', 'format1') 'N000:123:456,78'
?
format-number('zero', '000:000:000,00$$', 'format1') -> 'not-a-number'
format-number(1 div 0, '$,$', 'format1') '?'
?
format-number(-1 div 0, '$,$', 'format1') 'N?'
Определение десятичного формата:
<xsl:decimal-format name="format2" zero-digit="/"/>
Примеры функций format-number
:
format-number(123456789, '#', 'format2')
? '012345678'
?
format-number(123456789, '#') '123456780'
Определение десятичного формата:
<xsl:decimal-format name="format3" zero-digit="1"/>
Примеры функций format-number
:
format-number(123456789, '#', 'format3')
? '23456789:'
?
format-number(12345.06789, '#.#####', 'format3') '23456.1789:'
Десятичный формат, определяемый элементом xsl:decimal-format
, в отличие от многих других элементов не может переопределяться в преобразованиях со старшим порядком импорта. Элементы xsl:decimal-format
должны определять десятичные форматы с различными именами (за исключением тех случаев, когда значения их атрибутов полностью совпадают).
- Элемент : создание числовых форматов
- Дополнительные элементы и функции
- Создание свободно позиционируемых элементов
- 6.4. Рабочий лист Excel и его структурные элементы
- Information request
- SCTP Generic header format
- Использование отдельных процессоров XSLT
- Письма с элементами графики и вложениями
- Элемент STYLE
- 4.4. Логические элементы и синтез логических схем
- 4.7 Структурные элементы SAN
- Добавление, изменение и удаление элементов списка