Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
• value
(необязательный). Форматируемое число;
• format
(необязательный). Определяет формат вывода. Устанавливается в шаблон значений атрибута, возвращающий строку форматирования;
• lang
(необязательный). Определяет язык, чьи соглашения следует использовать для нумерации. Устанавливается в код языка, который можно применять в атрибуте xml:lang
;
• letter-value
(необязательный). Позволяет выбрать различные схемы нумерации. устанавливается в «alphabetical» (алфавитная) или «traditional» (обычная);
• grouping-separator
(необязательный). Символ для разделения групп разрядов — например, запятая. Устанавливается в шаблон значений атрибутов, возвращающий единственный символ;
• grouping-size
(необязательный). Количество разрядов в каждой группе — определяет место применения разделителя групп разрядов. Устанавливается в шаблон значений атрибутов, возвращающий число.
СОВЕТ ПО НУМЕРАЦИИ
Как можно видеть из этого списка атрибутов, существует весьма много возможных схем нумерации. Операции нумерации могут стать довольно сложными, поэтому есть один прием: если нумерация будет становиться слишком сложной и запутанной, я просто выведу результирующий документ без нумерации и затем воспользуюсь второй таблицей стилей, которая применит нумерацию.
Существует три основных способа нумерации, в зависимости от установки атрибута уровня ( level
): « single
», « multiple
» или « any
». В следующих разделах мы по очереди рассмотрим каждую из этих схем, начав с одноуровневой нумерации, которая установлена по умолчанию .
Одноуровневая нумерация
Одноуровневая нумерация — это простая нумерация, когда перенумеровываются узлы-братья на одном уровне. Этот тип нумерации установлен по умолчанию. В листинге 5.11 при помощи одноуровневой нумерации перенумеровываются планеты в planets.xml
.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
.
.
.
.
А вот результат:
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
1. Mercury | .0553 (Earth = 1) | 1516 miles | 58.65 days |
2. Venus | .815 (Earth = 1) | 3716 miles | 116.75 days |
3. Earth | 1 (Earth = 1) | 2107 miles | 1 days |
Этот результат показан на рис. 5.2.

Рис. 5.2.Одноуровневая нумерация элементов
По умолчанию при нумерации используются числа, но есть и другие возможности. Например, если бы я использовал , планетам были бы присвоены буквы a, b и с:
The Planets Table
The Planets Table
.
.
.
Ниже приведены возможные в атрибуте format
лексемы и соответствующие им виды нумерации:
• 1порождает последовательность 1, 2, 3…;
• 01порождает последовательность 01, 02, 03…;
• другие числа Unicode в других системах счисления порождают последовательности аналогично двум предыдущим правилам;
• апорождает последовательность a, b, с…, аа, ab…;
• Апорождает последовательность А, В, С…, АА, АВ…;
• iпорождает последовательность i, ii, iii, iv…, ix, x, xi, xii…;
• Iпорождает последовательность I, II, III, IV…, IX, X, XI, XII…
Нумерация на произвольных уровнях
Иногда может потребоваться просто подсчитать узлы определенного типа независимо от их уровня в документе. Например, в различных местах иерархии документа не исключено наличие нескольких элементов , и вам может быть нужно просто трактовать документ как поток данных, подсчитывая встречающиеся элементы .
Вот как примерно это будет выглядеть, если в planets.xml
элементы встречаются на различных уровнях:
Planets Table
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
.
.
.
Чтобы сосчитать общее число элементов , в таблице стилей можно установить атрибут level
в «any» (листинг 5.12).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Name | Mass | Radius | Day |
a. Mercury | .0553 (Earth = 1) | 1516 miles | 58.65 days |
b. Venus | .815 (Earth = 1) | 3716 miles | 116.75 days |
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
.
.
.
.
Получаем результат (заметьте, что текст каждого элемента , независимо от его уровня в документе, пронумерован):
The Planets Table
The Planets Table
1. Planets Table
Name | Mass | Radius | Day |
2. Mercury | .0553 (Earth = 1) | 1516 miles | 58.65 days |
3. Venus | .815 (Earth = 1) | 3716 miles | 116.75 days |
4. Earth | 1 (Earth = 1) | 2107 miles | 1 days |
При помощи атрибута from
можно указать, с какого узла-предка начинать отсчет; например, если установить узел-предок в элемент так:
то процессор XSLT осуществит обратный просмотр только до первого предка и начнет нумерацию с этой точки документа.
Многоуровневая нумерация
Элемент также поддерживает многоуровневую нумерацию — такую как 3.1.2.5 и т. п. Для работы с ней нужно установить атрибут level
в «multiple». При помощи атрибута count
можно указать, узлы какого типа вы хотите нумеровать, установив этот атрибут в образец, например: " PART|CHAPTER|PARAGRAPH
". При обработке элементов процессор XSLT нумерует узлы в соответствии с иерархией документа.
В примере я нумерую каждый уровень в иерархии элементов planets.xml
, установив атрибут count
в «*» для выбора всех элементов. Можно также указать формат нумерации при помощи атрибута format
. При многоуровневой нумерации атрибут format
задает формат для различных уровней, например «1.1.1.» задает нумерацию 1., 2., … и т.д. для узлов верхнего уровня, 1.1., 1.2., … и т.д. для узлов уровнем ниже и 1.2.1., 1.2.2., … и т. д. для следующего уровня вниз. Вот как выглядит таблица стилей для этого примера в листинге 5.13.
Листинг 5.13. Многоуровневая нумерация
<���хsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Вот результат преобразования planets.xml в новый XML-документ, в котором перенумерованы все уровни элементов в соответствии с иерархией документа:
1.
1.1.
Интервал:
Закладка: