Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
□ Список номеров будет состоять не более чем из одного числа при использовании методов single
и any
.
□ Список номеров будет состоять из нуля или более чисел (по одному на каждый уровень нумерации) при использовании метода multiple
.
На этапе форматирования список номеров преобразуется в строку и вставляется результирующее дерево в виде текстового узла.
Преобразование номеров из списка в строку имеет совершенно иной характер, нежели чем приведение числа к строковому типу. При форматировании номера нужно получить не просто строковое представление числа, здесь требуется сгенерировать значащий текстовый индекс, который совершенно необязательно должен иметь цифровую запись.
Форматирование списка номеров производится в соответствии со значениями атрибутов format
, lang
, letter-value
, grouping-separator
и grouping-size
, назначение и использование которых мы и будем разбирать в этом разделе.
Основным атрибутом форматирования является атрибут format
, который содержит последовательность форматирующих токенов. Каждый форматирующий токен состоит из букв и цифр; он определяет процедуру форматирования для каждого числа из списка форматируемых номеров. В значении атрибута format
форматирующие токены отделяются друг от друга сочетаниями символов, которые не являются буквами и цифрами. Такие сочетания называются разделяющими последовательностями. При форматировании они остаются в строковом выражении номера без изменений.
В примере к методу multiple
мы использовали следующий элемент 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' |
1 |
2 → '2' |
||
1 |
10 → '10' |
||
1 |
999 → '999' |
||
1 |
1000 → '1000' |
||
0...01 |
Форматирует номер в виде строкового представления десятичного числа; если получившая строка короче токена, она дополняется предшествующими нулями | 0001 |
1 → '0001' |
001 |
2 → '002' |
||
001 |
10 → '010' |
||
01 |
999 → '999' |
||
00001 |
1000 → '01000' |
||
A |
Форматирует номер в виде последовательности заглавных букв латинского алфавита | A |
1 → 'A' |
A |
2 → 'B' |
||
A |
10 → 'J' |
||
A |
27 → 'AA' |
||
A |
999 → 'ALK' |
||
A |
1000 → 'ALL' |
||
a |
Форматирует номер в виде последовательности строчных букв латинского алфавита | a |
1 → 'a' |
a |
2 → 'b' |
||
a |
10 → 'j' |
||
a |
27 → 'aa' |
||
a |
999 → 'alk' |
||
a |
1000 → 'all' |
||
I |
Форматирует номер заглавными римскими цифрами | I |
1 → 'I' |
I |
2 → 'II' |
||
I |
10 → 'X' |
||
I |
27 → 'XXVII' |
||
I |
999 → 'IM' |
||
I |
1000 → 'M' |
||
i |
Форматирует номер строчными римскими цифрами | i |
1 → 'i' |
i |
2 → 'ii' |
||
i |
10 → 'x' |
||
i |
27 → 'xxvii' |
||
i |
999 → 'im' |
||
i |
1000 → 'm' |
||
Другой | Форматирует номер k как k -й член последовательности, начинающейся этим токеном. Если нумерация таким токеном не поддерживается, вместо него используется токен 1 . |
Не поддерживающийся токен | 1 → '1' |
b |
10 → 'k' |
||
Б |
2 → 'В' |
||
Б |
27 → 'Ы' |
||
á |
999 → 'ανψ' |
||
å |
1000 → 'βζο' |
При использовании алфавитной нумерации процессор может учитывать значение атрибута lang
элемента xsl:number
для того, чтобы использовать буквы алфавита соответствующего языка. Однако на практике возможность эта поддерживается очень слабо: большинство процессоров поддерживают алфавитную нумерацию только с использованием латиницы. Поэтому для того, чтобы использовать при алфавитной нумерации кириллицу, вместо атрибута lang
следует использовать форматирующие токены " А
" (русская заглавная буква " А
") и " х430;
" (русская строчная буква " а
").
Для форматирования номеров в последовательности 1.1.a
, 1.1.б
, 1.1.в
, …, 1.2.а
и так далее можно использовать объявление вида:
format="1.х430;"
level="multiple"
count="chapter|section"
from="doc"/>
Представим теперь себе следующую ситуацию: нам нужно начать нумерацию с латинской буквы i
для того, чтобы получить последовательность номеров вида i
, j
, k
, l
, m
и так далее. Первое, что приходит в голову — это запись вида
Интервал:
Закладка: