2.1 Third section

     f) paragraph 6

     g) paragraph 7

     h) paragraph 8

     i) paragraph 9

  2.2 Forth section

     j) paragraph 10

     k) paragraph 11

     l) paragraph 12

  2.3 Fifth section

     m) paragraph 13

     n) paragraph 14

     o) paragraph 15

     p) paragraph 16

3. Third chapter

  3.1 Sixth section

     q) paragraph 17

     r) paragraph 18

Форматирование номеров

Возвращаясь немного назад, напомним, что результатом первого этапа выполнения xsl:number является список номеров, который может быть пустым или содержать одно или несколько чисел. Несложно увидеть, что количество номеров в этом списке будет зависеть от следующих условий.

□ Список номеров будет пустым, если в области нумерации не оказалось нумеруемых узлов.

□ Список номеров будет состоять не более чем из одного числа при использовании методов single и any.

□ Список номеров будет состоять из нуля или более чисел (по одному на каждый уровень нумерации) при использовании метода multiple.

На этапе форматирования список номеров преобразуется в строку и вставляется результирующее дерево в виде текстового узла.

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

Форматирование списка номеров производится в соответствии со значениями атрибутов format, lang, letter-value, grouping-separator и grouping-size, назначение и использование которых мы и будем разбирать в этом разделе.

Основным атрибутом форматирования является атрибут format, который содержит последовательность форматирующих токенов. Каждый форматирующий токен состоит из букв и цифр; он определяет процедуру форматирования для каждого числа из списка форматируемых номеров. В значении атрибута format форматирующие токены отделяются друг от друга сочетаниями символов, которые не являются буквами и цифрами. Такие сочетания называются разделяющими последовательностями. При форматировании они остаются в строковом выражении номера без изменений.

Пример

В примере к методу multiple мы использовали следующий элемент xsl:number:

<xsl:number

 format='     1.1.'

 level='multiple'

 count='doc|chapter|para'

 from='doc'/>

Разберем строение атрибута format этого элемента (на рис. 8.12 пробелы обозначены символами ''):

Рис. 8.12. Строение атрибута format элемента xsl:number

Список номеров в том примере состоял из номера элемента chapter (числа 2) и номера элемента para (тоже 2). Номер, генерируемый элементом xsl:number, будет состоять из:

□ разделяющей последовательности '□□□□□', которая будет скопирована, как есть;

□ числа 2, которое получается в результате форматирования номера 2 форматирующим токеном '1';

□ разделяющего символа '.';

□ числа 2, которое получается в результате форматирования номера 2 вторым форматирующим токеном '1';

□ разделяющего символа '.'.

Объединив все эти части, мы получим отформатированный номер '□□□□□2.2'.

Несложно заметить, что главную роль при преобразовании списка номеров в их строковое представление играют форматирующие токены. Каждый такой токен преобразовывает соответствующий ему номер в строку. В табл. 8.3 мы приведем описания этих преобразований.

Таблица 8.3. Форматирующие токены

Токен Описание Примеры
Токен Преобразование
1 Форматирует номер в виде строкового представления десятичного числа 1 1 '1'
Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату