Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Элементы буквального результата могут также обладать атрибутами, которые интерпретируются процессором XSLT. Например, при помощи атрибута version
можно указать, что все элементы XSLT внутри элемента буквального результата должны быть элементами XSLT версии 1.0:
RADIUS
В следующем списке перечислены все возможные атрибуты элемента буквального результата:
• Attribute Value Templates, шаблон значений атрибута (необязательный). Любые выражения XPath в фигурных скобках вычисляются, и результат в виде строкового значения копируется в атрибут в результирующем дереве. Устанавливается в шаблон значений атрибута (см. главу 3);
• xsl:exclude-result-prefixes
(необязательный). Определяет, какие пространства имен не будут скопированы в результирующее дерево. Принимает значения списка префиксов пространств имен, разделенных символами- разделителями;
• xsl:extension-element-prefixes
(необязательный). Заставляет процессор XSLT трактовать дочерние элементы элемента буквального результата в перечисленных пространствах имен как элементы расширения, а не элементы буквального результата;
• xsl:use-attribute-sets
(необязательный). Атрибуты в перечисленных наборах атрибутов добавляются в элемент буквального результата и копируются в результирующее дерево. Принимает значение списка QName
, идентифицирующих поименованные элементы ;
• xsl:version
(необязательный). Устанавливает версию элементов XSL в элементе буквального результата. Принимает численное значение.
Теперь можно начать работать с этой информацией .
Совпадающие элементы в шаблонах
Для указания того, с каким узлом или узлами вы хотите работать в шаблоне, в XSLT имеются разнообразные способы поиска или выбора узлов. Следует установить атрибут match
элемента в образец (pattern), определяющий имя узла или узлов, с которыми вы хотите работать. В главе 3, посвященной шаблонам, будет показано, как создавать образцы. Например, образец «/» соответствует корневому узлу; образец «*» задает любой узел элемента; образцу «PLANET» удовлетворяют все узлы элемента и т.д.
Для начала я создал короткий пример, заменяющий корневой узел, — а следовательно, и весь документ — на HTML-странице. Первое, что я сделал, — создал шаблон с элементом , установив атрибут match
в образец для совпадения
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
Когда устанавливается соответствие с корневым узлом, шаблон применяется к самому узлу. В данном случае (листинг 2.2) я хочу заменить корневой узел документом HTML, поэтому я только включу этот документ HTML непосредственно в качестве содержимого элемента .
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
A trivial transformation
This transformation has replaced the entire document.
Результат: при помощи элемента я установил правило в таблице стилей. Когда процессор XSL считывает документ, первым узлом является корневой узел. Это правило находит данный корневой узел, и от того процессор XSL копирует литералы в результирующее дерево, что даст нам HTML doc и заменит его документом HTML, генерируя следующий результат:
A trivial transformation
This transformation has replaced the entire document.
Рассмотренный пример иллюстрирует первое, устаревшее преобразование. Была создана простая таблица стилей с единственным элементом , который содержит только элемент буквального результата. Все, что сделано в примере, — замена всего документа XML на документ HTML, что не очень впечатляет. Далее мы увидим, как работает рекурсивная обработка с использованием элемента .
Элемент
В уже написанном нами основном шаблоне корневой узел искался по выражению "/" и заменялся на элемент буквального вывода. Однако, когда мы ищем корневой узел, обычно нам нужно обработать и всю оставшуюся часть документа, что мы сделаем при помощи элемента .
В следующем списке перечислены атрибуты этого элемента:
• select
(необязательный). Набор обрабатываемых узлов. Если атрибут опущен, автоматически обрабатываются все потомки узла. Устанавливается в выражение;
• mode
(необязательный). Устанавливает режим обработки. К этому узлу применяются правила шаблона с режимом выбора. Принимает значение типа QName
.
Элемент может содержать ноль или более элементов , или ноль или более элементов .
В следующем примере шаблон ищет корневой узел и замещает его элементом буквального результата :
xmlns:xsl="http://ww.w3.org/1999/XSL/Transform">
.
.
.
С другой стороны, мы только нашли корневой узел, а дерево данных planets.xml имеет ряд узлов под корневым узлом:
Mercury
.0553
58.65
1516
.983
43.4
.
.
.
Для обработки не только одного корневого узла можно использовать , добавив этот элемент следующим образом:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
Этот элемент дает указание процессору XSLT просмотреть все дочерние узлы корневого узла и попытаться найти шаблон, которому эти узлы удовлетворяют. Например, вам может потребоваться заменить все элементы на
Planet
.
.
.
Теперь можно добавить еще один шаблон для следующего уровня, включающего элементы . В этом случае я просто заменю каждый элемент элементом буквального результата
Planet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
Planet
Вот результат применения этой таблицы стилей:
<���Р>
Planet
</Р>
<���Р>
Planet
</Р>
Planet
</Р>
Как видите, от элемента ничего не осталось. Все, что осталось, — три элемента буквального результата
Planet
ПРОПУСК АТРИБУТА SELECT
Если опустить атрибут select, будут обрабатываться только дочерние узлы текущего узла, не включающие атрибуты или узлы пространств имен, так как они не считаются дочерними. Если вы хотите обрабатывать узлы этих видов, необходимо использовать атрибут select, как будет рассмотрено в главе 3.
Все это занимательно, но малопригодно практически. Было бы гораздо лучше, если бы мы, например, могли обратиться к фактическому значению каждого элемента (такому как имя каждой планеты) и работать с этими данными. И это, конечно, возможно.
Доступ к значениям узлов
Получить доступ к значению узла можно при помощи элемента , у которого есть два возможных атрибута:
Читать дальшеИнтервал:
Закладка: