Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
The Planets Table
The Planets Table
Name | Mass | Radius | Day>/TD> |
Результат применения таблицы с использованием процессора Saxon (в котором особенно хорошо реализовано выравнивание) с требуемым выравниванием:
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Mercury | .0553 | 1516 | 58.65 |
Venus | .815 | 3716 | 116.75 |
Earth | 1 | 2107 | 1 |
Как видите, в XSLT обработке символов-разделителей приходится уделять достаточное внимание, но процедура упрощается, если вы знаете, что происходит.
ВЫРАВНИВАНИЕ ДОКУМЕНТОВ В ЭТОЙ КНИГЕ
Способ выравнивания документов зависит от конкретного процессора XSLT. В этой книге документы выровнены для удобочитаемости, даже если в действительности документы не были выровнены процессором XSLT.
Правила по умолчанию в шаблоне
Взгляните на следующую таблицу стилей XSLT — в ней заданы правила для выбора корневого узла, узлов и узлов :
xmlns:xsl="http.//www.w3.org/1999/XSL/Transform">
Обратите внимание на правило для элемента : в нем просто используется элемент для применения шаблонов ко всем дочерним узлам. Однако при обработке шаблона существует правило по умолчанию: если для элемента не задано правило, автоматически вызывается . Таким образом, следующая таблица стилей, в которой опущено правило для , делает в точности то же, что и предыдущая:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
В этом случае я воспользовался преимуществом правил по умолчанию для шаблона. Ниже приведены правила для каждого вида узлов, которые будут применены, если не задать правило для узла явно:
• Корневой узел.По умолчанию вызывается ;
• Узлы элементов.По умолчанию вызывается ;
• Узлы атрибутов.Копирует в результирующий документ значение атрибута, однако копирует его как текст, но не как атрибут;
• Текстовые узлы.Копирует в результирующий документ текст;
• Узлы комментариев.Нет обработки XSLT, ничего не копируется;
• Узлы инструкций обработки.Нет обработки XSLT, ничего не копируется;
• Узлы пространств имен.Нет обработки XSLT, ничего не копируется.
Наиболее важное правило по умолчанию применяется к элементам и может быть выражено следующим образом:
Это правило приведено здесь только для гарантии того, что каждый элемент, от корня и ниже, будет обрабатываться при помощи , если не предоставить другого правила, которое перекроет правило по умолчанию.
Правило по умолчанию для текстовых узлов можно выразить следующим образом: функция XSLT text
выбирает текст узла, так что текст текстового узла добавляется в выходной документ:
Правило по умолчанию того же вида применяется к атрибутам, которые добавляются в выходной документ при помощи следующего правила, где выражение "@*" выбирает любой атрибут:
По умолчанию инструкции обработки не вставляются в выходной документ, поэтому их правило по умолчанию можно выразить просто при помощи следующей функции-инструкции обработки XSLT, которая выбирает инструкции обработки (как мы увидим в главе 8):
То же верно для комментариев — их правило по умолчанию может быть выражено при помощи функции XSLT comment
, которая также будет рассмотрена в главе 8:
Подведем итоги рассмотрения правил по умолчанию: если вообще не задать никаких правил, все разбираемые символьные данные входного документа будут вставлены в выходной документ. Вот как выглядит таблица стилей, в которой не задано никаких явных правил:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
А вот результат применения этой таблицы стилей к planets.xml
. Заметьте, что правило по умолчанию для атрибутов не применялось, потому что они не являются дочерними по отношению к другим узлам:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
ПРАВИЛА ПО УМОЛЧАНИЮ И INTERNET EXPLORER
Одна из проблем при работе с XSLT в Internet Explorer 5.5 или младше состоит в том, что браузер не предоставляет никаких правил по умолчанию. Необходимо задавать все правила самостоятельно, если только не установлен процессор MSXML3 в режиме замены (подробнее см. главу 2) или вы не обновили браузер до Internet Explorer 6.0.
Кроме того, узлы-разделители исходного документа сохраняются, поэтому можно считать, что следующее правило также является правилом по умолчанию: .
Удаление содержимого
Если ваше правило для узла не работает, то есть оно пусто, содержимое выбранного узла не будет скопировано в выходной документ. Таким способом при создании выходного документа можно выборочно удалять содержимое из исходного документа.
Предположим, нам нужно удалить из planets.xml
все данные о планетах, за исключением их названий и данных о массе. Следующая таблица стилей выполняет данную задачу.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
А вот результирующий документ (отметьте, что я сохранил только элементы и ):
Mercury
.0553(Earth = 1)
Venus
.815(Earth = 1)
Earth
1(Earth = 1)
Таким способом можно фильтровать XML-документы, создавая новые XML-документы только с требуемыми данными.
Разрешение конфликтов шаблонов
Еще одним важным аспектом работы с шаблонами является разрешение конфликтов. Если двум шаблонам удовлетворяют один и тот же узел или набор узлов, для определения применяемого шаблона XSLT учитывает их приоритет.
У каждого шаблона есть приоритет по умолчанию, основанный на значении атрибута select
. Как правило, чем более сужающим является правило выбора или выражение (например, " PLANET
" и " *
"), тем выше его приоритет. В главе 4 мы рассмотрим, как процессор определяет приоритеты и как он работает с шаблонами, имеющими одинаковый приоритет.
Приоритет шаблона можно установить при помощи атрибута priority
. В приведенном ниже листинге 3.8 правило, созданное элементом , имеет меньший приоритет, чем правило, созданное элементом .
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
(Very heavy)
Процессор XSLT выбирает шаблон с наивысшим приоритетом, который добавляет текст " (Very heavy)
" после каждого значения массы. В следующем примере использован шаблон с наивысшим приоритетом:
Интервал:
Закладка: