Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-08.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
422.91 Кб
Скачать

01). Поздравление

02). Напоминание.

Для нумерации большими и малыми русскими буквами необходимо задавать алфавитно-цифровой символ в виде ссылок на сущности: "&#х410;" (русская заглавная буква "A") и "&#х430;" (русская строчная буква "а"). Например, задание значения атрибута в виде"а) "приведет к выводу сообщений в следующей форме:

а) Поздравление

б) Напоминание.

Атрибут letter-valueустраняет неясности в последовательностях нумерации, использующих буквы. Во многих языках обычно используются две основные последовательности нумерации, использующие буквы. В одной из них нумерация производится буквенными значениями в алфавитном порядке, в другой же числовое значение каждому пункту назначается по-другому, так как это принято для данного языка. В английском языке это будет соответствовать последовательностям нумерации, задаваемым лексемами форматированияaиi. В некоторых языках первый член обеих последовательностей одинаков, а потому одной лексемы форматирования будет недостаточно. Значение"alphabetic"указывает алфавитную последовательность, значение"traditional"– альтернативную. Если атрибутletter-valueне указан, порядок разрешения любых неоднозначностей определяется реализацией. Этим атрибутом надо пользоваться осторожно, поскольку в разных процессорах он реализуется по-разному.

При использовании цифровых форматов нумерации (иными словами, строк вида 1,01,001и так далее) цифры в номере можно разделить на груп­пы, получив, например, такие номера как "2.00.00" из20000или "0-0-0-2" из2. Для этой цели вxsl:numberиспользуется пара атрибутовgrouping-separatorиgrouping-size.

Атрибут grouping-separatorзадает символ, который следует использовать для разбивки номера на группы цифр, в то время какgrouping-sizeуказы­вает размер группы. Эти атрибуты всегда должны быть вместе: если хотя бы один из них опущен, второй просто игнорируется.

Если задать элемент xsl:numberв следующем виде:

<xsl:number count="header" format="000000001)"

grouping-separator=":" grouping-size="2"/>,

то список тем примет следующий вид:

0:00:00:00:01)Поздравление

0:00:00:00:02)Напоминание.

Атрибут ordinalзадает строку, которая будет использоваться как окончания в порядковых числительных, например, для английского языка1st,2nd,3rd,4th,. Допустимые окончания порядковых задаются в значении атрибута в виде списка, элементы которого отделяются друг от друга пробелами, причем каждый элемент начинается с символа "~", например, "~ый ~ой ~ий ~ая~ое ~ые". Реализация процессора XSLT может обеспечивать правильную подстановку окончаний порядковых числительных с учетом значений атрибутовlangиformat. Если процессор такой возможности не обеспечивает, вместо порядковых выводятся количественные числительные.

5.3.16. Форматирование чисел в xslt

XSLTпредоставляет мощные возможности для форматирования строкового представления чисел при помощи функцииformat-numberи элементаxsl:decimal-format.

Запись функции имеет следующий вид:

строкаformat-number(число,строка-формата,имя-decimal-format)

Первым пара­метром функции является число, которое необходимо преобразовать в строку, приме­нив при этом форматирование. Вторым параметром являетсястрока-формата– образец, в соответствии с которым будет форматироваться число. Третий, необязательный параметр указывает имя элементаxsl:decimal-format, который следует применять.

Образец форматирования в XSLT определяется точно так же, как в классе DecimalFormatязыкаJava.

Прежде всего, образец форматирования может состоять из двух частей: пер­вая часть определяет форматирование положительного числа, вторая часть – отрицательного.

В случае если вторая часть образца форматирования опущена, отрицатель­ные числа форматируются точно так же, как и положительные, но им предшествует префикс отрицательного числа (по умолчанию, символ "-").

Используемые в строке формата символы делятся на форматирующие и неформатирующие.

К форматирующим символам относятся следующие символы:

  • символ обязательной позиции цифры (по умолчанию "0");

  • символ необязательной позиции цифры (по умолчанию "#");

  • символ-разделитель образцов форматирования для положительного и от­рицательного числа (по умолчанию ";");

  • символ-разделитель целой и дробной части (по умолчанию ".");

  • символ процента (по умолчанию "%").

Форматирующие символы при формировании выходной строки рассматриваются как шаблоны преобразования строки.

Все остальные символы считаются неформатирующими и выводятся в возвращаемой функцией строке без изменения.

Каждая из частей образца форматирования состоит из префикса, целой части, необязательной дробной части и суффикса.

Префикс или суффикс образца форматирования могут содержать символ процента. Если суффикс содержит символ процента, число должно быть умножено на 100 и выведено со знаком процента. Наличие символа процен­та в префиксе на форматирование не влияет.

Префикс задает строку, которая будет предшествовать числу, это может быть последовательность любых неформатирующих символов плюс символ процента. Аналогично, суффикс будет следовать за чис­лом, и он тоже не может содержать форматирующих символов (за исключе­нием символа процента).

Целая часть числа может начинаться несколькими символами, показывающими позиции, в которых цифры необязательны (по умолчанию "#"), и состоит из символов, показывающих позиции обязательных цифр (по умолчанию"0"), а также может содержать символы, показывающие позицию символа-разделителя групп цифр (по умолчанию ",").

Некоторые процессоры позволяют указывать несколько символов-разделителей. Однако даже в этом случае они учитывают только последний из этих символов.

Дробная часть числа начинается символом-разделителем целой и дробной части (по умол­чанию "."), продолжается последовательностью символов обязательных по­зиций цифр и заканчивается последовательностью символов не­обязательных позиций.

Примеры вызова функции format-number:

format-number(-1234.567,'#.00;negative #.00')

'negative 1234.57'.

format-number(0.45,'0.##%')'45.00%'.

format-number(1234.56,'000,00')'0,12,35'.

format-number (1234.567, '#.00'')'1234.57'.

format-number(1234.567,'#.0000')'1234.5670'.

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

Этот элемент имеет следующий синтаксис:

<xsl:decimal-format

name="имя"

decimal-separator="символ"

grouping-separator="символ"

infinity="строка"

minus-sign="символ"

NaN="строка"

percent="символ"

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

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

digit="символ"

pattern-separator="символ"

/>

Атрибут nameзадает расширенное имя деся­тичного формата. Это имя может указываться в качестве третьего параметра при вызове функцииformat-number. Если имя не указано, это означает, что элементxsl:decimal-formatопределяет десятичный формат по умолчанию.

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

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

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

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

  • per-mille– задает символ промилле. Значением по умолчанию является символ "". Символ промилле распознается в образце форма­тирования и используется в строковом представлении числа;

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

  • digit– определяет символ, который используется в образце форматиро­вания для определения позиции необязательного символа. Значением по умолчанию является символ "#". Этот символ распознается как формати­рующий символ необязательной цифры. Он не включается в строковое представление числа;

  • pattern-separator– определяет символ, который используется в образ­це форматирования для разделения положительного и отрицательного форматов числа. Он не включается в строковое представление числа. Значением этого атрибута по умолчанию является символ ";";

  • infinity– задает строку, которая будет представлять бесконечность. Значением по умолчанию является строка "infinity";

  • NaN– задает строку, которая будет представлять не-числа. Значением по умолчанию является строка "NaN";

  • minus-sign– задает символ, который будет использоваться для обозна­чения отрицательных чисел. Значением по умолчанию является символ "-".

Примеры использования элемента decimal-format:

Определение десятичного формата:

<xsl:decimal-format name="euro"

decimal-separator="," grouping-separator="."/>

меняет символы разделителей дробной и целой части, а также групп цифр, принятые в США, на европейские, например, при вызове функции в следующем элементе:

<xsl:value-of

select="format-number(26825.8, '#.###,00', 'euro')"/>,

Вызов этой функции возвратит значение 26.825,80.

Соседние файлы в папке Лекции