Стивен Холзнер - XSLT

Тут можно читать онлайн Стивен Холзнер - XSLT - бесплатно полную версию книги (целиком) без сокращений. Жанр: Интернет, издательство Питер, год 2002. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Холзнер - XSLT краткое содержание

XSLT - описание и краткое содержание, автор Стивен Холзнер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.

Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.

Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике

XSLT - читать онлайн бесплатно полную версию (весь текст целиком)

XSLT - читать книгу онлайн бесплатно, автор Стивен Холзнер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Применение оси preceding

Ось precedingсодержит все узлы, расположенные перед контекстным узлом в соответствии с установленным в документе порядком, исключая всех предков контекстного узла, а также исключая узлы атрибутов и узлы пространств имен.

Пусть, например, мне нужно задать для содержимого элемента текст «This planet is farther from the Sun than Mercury.» (Эта планета расположена дальше от Солнца, чем Меркурий.), если рассматриваемая планета действительно дальше от Солнца, чем Меркурий. Один из способов сделать это — проверить, расположен ли Меркурий перед рассматриваемой планетой в соответствии с установленным в документе порядком, при помощи оси preceding(листинг 7.13).

Листинг 7.13. Применение оси preceding

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

This planet is farther from the Sun than Mercury.

Если текущая планета расположена после Меркурия, я могу вставить сообщение в ее элемент . Результат следующий:

Mercury

.0553

58.65

1516

.983

43.4

Venus

.815

116.75

3716

.943

This planet is farther from the Sun than Mercury.

Earth

1

1

2107

1

This planet is farther from the Sun than Mercury.

Применение оси preceding-sibling

Ось preceding-siblingсодержит всех предшествующих братьев контекстного узла. Заметьте, что если контекстным узлом является узел атрибута или узел пространства имен, ось preceding-siblingбудет пуста.

Что, если, например, вам нужно создать шаблон, который будет выбирать только элементы в элементе Меркурия? Для этого можно проверить, существуют ли братья, предшествующие элементу , которые являются элементами со строковым значением « Mercury». Если применить ось preceding-sibling(листинг 7.14), поиск будет ограничен текущим элементом , что означает, что Меркурий не будет выбран, если вы только не находитесь в нужном элементе .

Листинг 7.14. Применение оси preceding-sibling

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

This is the planet Mercury, closest to the Sun.

А вот результат:

Mercury

.0553

58.65

1516

.983

This is the planet Mercury, closest to the Sun.

Venus

.815

116.75

3716

.943

66.8

Earth

1

1

2107

1

128.4

Применение оси self

Ось selfсодержит только контекстный узел. В соответствии с одним из сокращений XPath, как мы увидим дальше, вместо « self::node()» можно использовать «.».

Эту ось полезно иметь в виду, поскольку, как вы помните из главы 4, если не задать ось, осью по умолчанию будет child::, а в некоторых случаях вам может понадобиться обратиться к действующему узлу. Например, [self::PLANET]примет значение истины только если контекстным узлом будет элемент .

В следующем примере я объединяю шаблоны для элементов и в один шаблон. Поскольку у этих элементов разный формат, я должен обращаться с ними по-разному внутри одного и того же шаблона (что можно сделать проверкой значений оси self::NAME, которая возвращает непустой набор узлов, если контекстным, узлом является элемент , и self::MASS, возвращающей непустой набор узлов, если контекстным узлом является элемент ):

.

.

.

На этом мы завершаем рассмотрение новых осей XPath. Давайте перейдем к примерам.

Примеры путей расположения

Мы изучили достаточно теории путей расположения. Но, понятно, лучше всего осваивать этот материал на примерах, поэтому я привожу следующий список примеров путей расположения (сокращенные варианты рассматриваются после этого списка):

child::PLANЕТ. Возвращает дочерние элементы контекстного узла;

child::text(). Возвращает все дочерние текстовые узлы контекстного узла;

child::node(). Возвращает всех детей контекстного узла;

attribute::UNIT. Возвращает атрибут UNITконтекстного узла;

descendant::PLANET. Возвращает все элементы-потомки контекстного узла;

ancestor::PLANET. Возвращает всех предков контекстного узла;

ancestor-or-self::PLANET. Возвращает предков контекстного узла. Если контекстным узлом тоже является , возвращает также контекстный узел;

descendant-or-self::PLANET. Возвращает элементы-потомки контекстного узла. Если контекстным узлом тоже является , возвращает также контекстный узел;

self::PLANET. Возвращает контекстный узел, если им является элемент ;

child::PLANET/descendant::NAME. Возвращает элементы-потомки дочерних элементов контекстного узла;

child::*/child::PLANET. Возвращает всех внуков контекстного узла;

/. Возвращает корневой узел;

/descendant::PLANET. Возвращает все элементы в документе;

/descendant::PLANET/child::NAME. Возвращает все элементы с родителем в документе;

child::PLANET[position()=3]. Возвращает третьего ребенка контекстного узла;

child::PLANET[position()=last()]. Возвращает последнего ребенка контекстного узла;

/descendant::PLANET[position() = 3]. Возвращает третий элемент в документе;

child::PLANETS/child::PLANET[position()=4]/child::NAME[position()=3]. Возвращает третий элемент четвертого элемента элемента ;

child::PLANET[position()>3]. Возвращает всех детей контекстного узла после первых трех;

preceding-sibling::NAME[position()=2]. Возвращает второй предыдущий элемент-брат контекстного узла;

child::*[self::NAME or self::MASS]. Возвращает детей и контекстного узла.

child::*[self::NAME or self::MASS][position()=last()]. Возвращает последнего ребенка или контекстного узла.

Как видите, синтаксис некоторых выражений достаточно запутан, и набирать их также довольно долго. Но, как и для образцов, существует сокращенная форма синтаксиса XPath.

Сокращенный синтаксис XPath

Сокращения синтаксиса XPath могут быть весьма удобными. Ниже приведены правила:

self::node()может быть сокращено как .;

parent::node()может быть сокращено как ..;

child::childnameможет быть сокращено как childname;

attribute::childnameможет быть сокращено как @childname;

/descendant-or-self::node()/может быть сокращено как //.

Например, путь расположения .//PLANET— сокращение для self::node()/descendant-or-self::node()/child::PLANET. Можно также сократить выражение предиката [position()=3]как [3], [position()=last()]как [last()]и т.д. Работать с путями расположения XPath при помощи сокращенного синтаксиса значительно проще. В следующем списке перечислен ряд примеров путей расположения с использованием сокращенного синтаксиса:

PLANETвозвращает дочерние элементы контекстного узла;

*возвращает все дочерние элементы контекстного узла;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Холзнер читать все книги автора по порядку

Стивен Холзнер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




XSLT отзывы


Отзывы читателей о книге XSLT, автор: Стивен Холзнер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x