xsl:decimal-format¶
XSLT позволяет изменять специальные символы, влияющие на форматирование строки. Именованный набор таких символов и некоторых других указаний называется десятичным форматом и определяется элементом xsl:decimal-format
.
От атрибутов этого элемента зависит, как будут обрабатываться символы образца форматирования и как число будет отображаться на выходе.
Синтаксис¶
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Атрибуты:
name
- необязательный атрибут, задает расширенное имя десятичного формата. Если имя не указано, это означает, что элемент
xsl:decimal-format
определяет десятичный формат по умолчанию. decimal-separator
- необязательный атрибут, задает символ, разделяющий целую и дробную части числа. Значением этого атрибута по умолчанию является символ ".", с Unicode-кодом
#x2e
. Атрибутdecimal-separator
рассматривается как специальный символ образца форматирования. Кроме того, он будет использован как разделяющий символ при выводе; grouping-separator
- необязательный атрибут, задает символ, группирующий цифры в целой части записи числа. Такие символы используются, например, для группировки тысяч ("1,234,567.89"). Значением по умолчанию является символ ",", код
#x2c
.grouping-separator
рассматривается как специальный символ образца форматирования. Помимо этого, он будет использован как разделяющий символ групп цифр при выводе числа; percent
- необязательный атрибут, задает символ процента. Значением по умолчанию является символ "%", код
#x25
. Этот символ будет распознаваться в образце форматирования и использоваться при выводе; per-mille
- необязательный атрибут, задает символ промилле. Значением по умолчанию является символ "‰", код
#x2030
. Символ промилле распознается в образце форматирования и используется в строковом представлении числа; zero-digit
- необязательный атрибут, задает символ нуля. Значением по умолчанию является символ "0", код
#x30
. В качестве цифр при отображении числа будут использоваться символ нуля и 9 символов, следующих за ним. Символ нуля распознается в образце форматирования и используется при выводе строкового представления числа; digit
- необязательный атрибут, определяет символ, который используется в образце форматирования для определения позиции необязательного символа. Значением по умолчанию является символ "#". Этот символ распознается как форматирующий символ необязательной цифры. Он не включается в строковое представление числа;
pattern-separator
- необязательный атрибут, определяет символ, который используется в образце форматирования для разделения положительного и отрицательного форматов числа. Он не включается в строковое представление числа. Значением этого атрибута по умолчанию является символ ";";
infinity
- необязательный атрибут, задает строку, которая будет представлять бесконечность. Значением по умолчанию является строка "Infinity";
NaN
- необязательный атрибут, задает строку, которая будет представлять не-числа. Значением по умолчанию является строка "NaN";
minus-sign
- необязательный атрибут, задает символ, который будет использоваться для обозначения отрицательных чисел. Значением по умолчанию является символ "-", код
#x2D
.
Описание и примеры¶
Элемент xsl:decimal-format
не имеет смысла без функции format-number()
. Все, на что влияют его атрибуты — это формат, который будет использоваться при преобразовании чисел в строку функцией format-number
.
Примеры¶
Определение десятичного формата:
1 2 3 4 5 6 7 8 9 10 11 |
|
Примеры функций format-number:
1 2 3 4 5 6 7 8 |
|
Определение десятичного формата:
1 |
|
Примеры функций format-number:
1 2 |
|
Определение десятичного формата:
1 |
|
Примеры функций format-number:
1 2 |
|
Десятичный формат, определяемый элементом xsl:decimal-format
, в отличие от многих других элементов не может переопределяться в преобразованиях со старшим порядком импорта. Элементы xsl:decimal-format
должны определять десятичные форматы с различными именами (за исключением тех случаев, когда значения их атрибутов полностью совпадают).
В XSLT 2.0 устанавливаются более жесткие ограничения синтаксиса таблиц стилей. Например, таблица стилей с командой 1 div 0
работать не будет. Помните, что в любой элемент XSLT 2.0 можно включить атрибут version
, если требуется использовать поведение XSLT 1.0 в таблице стилей XSLT 2.0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Элементу <xsl:stylesheet>
задается атрибут version
со значением 2.0
, однако позднее в элемент <xsl:value-of>
включается атрибут version="1.0"
. В результате поведение XSLT 1.0 активизируется только для одного элемента, а это означает, что при делении на нуль будет получено значение Really, really big
. При использовании стандартного поведения XSLT 2.0 таблица стилей выдает исключение и осмысленный вывод не генерируется.
В XSLT 2.0 деление xs:double
на нуль возвращает строку Infinity
, а деление xs:integer
или xs:decimal
на нуль приводит к ошибке времени выполнения. Если привести выражение в таблице стилей к виду xs:double(1) div xs:double(0)
, таблица стилей отработает без ошибок и выдаст тот же результат (Infinity
), что и таблица стилей XSLT 1.0 с выражением 1 div 0
.
См. также¶
format-number()
— функция для форматирования чисел.
Ссылки¶
xsl:decimal-format
MDN (рус.)xsl:decimal-format
MSDN (en)