Книга: Технология 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="&#x221E;"
 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 должны определять десятичные форматы с различными именами (за исключением тех случаев, когда значения их атрибутов полностью совпадают).

Оглавление книги

Оглавление статьи/книги

Генерация: 1.559. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз