Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Вот результат; показаны выбранные предки всех трех элементов , включая сам элемент , при условии, что у него имеется атрибут AUTHOR
:
PLANETS PLANET MASS
PLANETS PLANET
PLANETS
Применение оси descendant
Ось descendant
(потомок) содержит всех потомков контекстного узла. Заметьте, что сюда не входят атрибуты или узлы пространств имен, поскольку они не считаются дочерними узлами.
В следующем примере (листинг 7.6) демонстрируется работа с этой осью. На этот раз я хочу добавить примечание к элементу Меркурия: Sorry, Mercury has blown up and is no longer available.
(Извините, но Меркурий взорвался и больше не доступен.). Чтобы найти Меркурий, мне достаточно только проверить, имеет ли какой-либо потомок элемента строковое значение « Mercury
», что я сделаю при помощи выражения XPath внутри предиката выбора.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Sorry. Mercury has blown up and is no longer available.
Вот результирующий документ, дополненный новым элементом только для Меркурия:
Mercury
.0553
58.65
1516
.983
43.4
Sorry, Mercury has blown up and is no longer available.
Venus
.815
116.75
3716
.943
66.8
.
.
.
Применение оси descendant-or-self
Ось descendant-or-self
содержит всех потомков контекстного узла и сам контекстный узел. Заметьте, однако, что она не содержит атрибутов и узлов пространств имен.
В следующем примере (листинг 7.7) демонстрируется работа с осью. В этом случае я создал упрощенную таблицу стилей (подробнее об упрощенных таблицах стилей см. главу 2), которая обрабатывает все элементы с использованием потомков, генерируя уже знакомую нам HTML-таблицу данных о планетах.
The Planets Table
The Planets Table
</Н1>
Name | Mass | Radius | Day |
Вот и все. Я применил здесь упрощенную таблицу стилей, чтобы подчеркнуть, что при помощи таких осей потомков, как
descendant
или descendant-or-self
, вы можете автоматически обрабатывать все выбираемые узлы, во многом аналогично тому, как это делают элементы или .
Применение оси following
Ось following (следующий) содержит все узлы, расположенные после контекстного узла в соответствии с установленным в документе порядком (другими словами, в порядке, в котором они появляются в документе, начиная с его начала), исключая всех потомков контекстного узла, а также исключая узлы атрибутов и пространств имен.
В этом примере (листинг 7.8) я выбираю каждый элемент и копирую все последующие элементы в результирующий документ.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Далее показан результат. Обратите внимание на то, что, когда этот шаблон выбирает элемент Меркурия, он копирует все последующие элементы — то есть Венеру, затем всех потомков Венеры, далее Землю и затем всех потомков Земли. После этого он выбирает элемент Венеры и копирует все следующие элементы, то есть Землю и всех потомков Земли:
Venus
.815
116.75
3716
.943
66.8
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Earth
1
1
2107
1
128.4
Earth
1
1
2107
1
128.4
Earth
1
1
2107
1
128.4
С другой стороны, при использовании оси following-sibling
в результирующий документ будут скопированы только следующие братья, то есть только элементы , как мы увидим в следующем разделе.
Применение оси following-sibling
Ось following-sibling
содержит всех последующих братьев контекстного узла.
Например, я могу выбрать каждый элемент и скопировать в результирующий документ все узлы в оси following-sibling
следующим образом (листинг 7.9).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
При этом сначала копируются два узла-брата, следующие за Меркурием (Венера и Земля), затем копируется следующий узел-брат Венеры, Земля. У самой Земли нет следующих за ней братьев, поэтому результат выглядит так:
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Earth
1
1
2107
1
128.4
Применение оси namespace
Ось namespace
содержит узлы пространств имен контекстного узла. Заметьте, что эта ось пуста, если контекстным узлом не является элемент. У элемента присутствует узел пространства имен для:
• каждого атрибута элемента, чье имя начинается с «xmlns:»;
• каждого атрибута элемента-предка, чье имя начинается с «xmlns:» (конечно, если сам элемент или ближайший предок не объявит пространство имен заново);
• атрибута xmlns
, если элемент или предок имеет атрибут xmlns
.
В следующем примере (листинг 7.10) я хочу отобразить пространство имен элемента в результирующем документе, и в исходном документе я присвоил пространству имен значение «http://www.starpowder.com».
Mercury
.0553
58.65
1516
.983
43.4
.
.
.
Вот таблица стилей (листинг 7.11), в которой я проверяю пространства имен, используемые в элементе .
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
А вот результирующий документ (заметьте, что вид документа может меняться в зависимости от процессора XSLT):
http://www.starpowder.com
Применение оси parent
Ось parent (родитель) содержит родителя (и только родителя) контекстного узла, если таковой имеется.
Предположим, что я хочу изменить содержимое элемента Земли на «The mass of Earth is set to 1.>> (Масса Земли принимается за 1). В следующем шаблоне (листинг 7.12) для этого проверяется, содержит ли родитель элемента элемент со строковым значением «Earth».
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The mass of Earth is set to 1.
И вот результат:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
The mass of Earth is set to 1.
1
2107
1
128.4
Интервал:
Закладка: