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

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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать
Листинг 4.2. Выбор элементов

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

Very heavy!

А вот результирующий XML-документ:

Mercury

Very heavy!

58.65

1516

43.4

Earth

Very heavy!

1

2107

1

128.4

При задании осей в образцах можно воспользоваться рядом сокращений, применяемых практически повсеместно.

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

Для образцов существует два правила сокращения осей:

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

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

В следующем списке перечислен ряд примеров образцов с сокращенным синтаксисом; в конце главы вы увидите много других.

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

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

@UNITS. Выбирает атрибут UNITSузла;

@*. Выбирает все атрибуты контекстного узла;

*/PLANET. Выбирает всех внуков контекстного узла;

//PLANET. Выбирает всех потомков корня документа;

PLANETS//PLANET. Выбирает все элементы , являющиеся потомками дочерних элементов контекстного узла;

//PLANET/NAME. Выбирает все элементы , дочерние по отношению к ;

PLANET[NAME]. Выбирает детей контекстного узла, у которых есть дочерние элементы .

В таком образце, как " child::PLANET", " child" является осью, a " PLANET" — условием узла, что представляет собой вторую часть образцов шага.

Образцы шага, часть 2: условия узла

Условия узла (node test) составляют вторую часть образцов шага. В качестве условий узла можно использовать названия узлов или символ подстановки *для выбора и узлов, и их типов. Например, выражение child::*/child::NAMEвыбирает все элементы , являющиеся правнуками контекстного узла.

Помимо названий узлов и символа подстановки, можно применять также следующие условия узлов:

comment()выбирает узлы комментария;

node()выбирает узел любого типа;

processing-instruction()выбирает узел инструкции обработки. В скобках можно указать название выбираемой инструкции обработки;

text()выбирает текстовый узел.

В следующих разделах мы изучим эти условия узлов и рассмотрим примеры их применения.

Выбор комментариев

Текст комментариев можно выбрать при помощи образца comment(). Разумеется, не следует хранить данные, которые попадут в выходной документ, в комментариях входного документа. Тем не менее, вам может потребоваться преобразовать комментарии из формы в какую-то другую форму, используемую другим языком разметки, — например, элемент .

В следующем примере я извлеку комментарии из planet.xmlи включу их в полученные выходные данные.

Venus

"(Earth = 1)">.815

116.75

3716

.943

66.8

Чтобы извлечь комментарии и поместить их в элементы , я включил правило только для комментариев (листинг 4.3).

Листинг 4.3. Выбор комментариев

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

Вот результат для Венеры, в котором комментарий преобразован в элемент :

Venus

.815

116.75

3716

.943

66.8B перигелии</СОММЕNT>

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

Выбор узлов при помощи node()

В образце условие узла nodeвыбирает любой узел, за исключением корневого узла — помните, что в действительности это child::node(). Предположим, мы хотим создать таблицу стилей, копирующую произвольный документ XML, используя . (В главе 3 для этого применялся элемент .) Можно начать так, как показано в следующем примере. В этом случае в применяемом шаблоне для выбора любого элемента или любого атрибута используется операция OR, с которой мы познакомимся позже в этой главе (этот шаблон фактически выбирает себя — для того чтобы продолжать копирование на много уровней вглубь):

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

Однако посмотрите на результат — обратите внимание на то, что в этой версии, выбирающей только элементы и атрибуты ( @*|*), не копируются узлы-разделители и текстовые узлы:

Это, конечно, неполно. Если я, с другой стороны, буду выбирать по образцу " @*|node()" вместо " @*|*", новое правило шаблона выберет все узлы за исключением корневого узла (который создается в результирующем дереве автоматически), поэтому символы-разделители будут скопированы, так же как и текст (листинг 4.4).

Листинг 4.4. Копирующая таблица стилей

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

Новый результат:

Mercury

.0553

58.65

1516

.983

43.4

Venus

.815

116.75

3716

.943

66.8

Venus

.815

116.75

3716

.943

66.8

Earth

1

2107

1

128.4

Следующее выражение выбирает элементы с атрибутом COLOR:

.

.

.

А что, если нам требуется выбрать планеты, у которых атрибут COLORимеет значение " BLUE" (голубой)? Это можно сделать при помощи операции =, как показано в листинге 4.5.

Листинг 4.5. Применение операции =

<"xml version="1.0"?>

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

The is blue.

Таблица стилей из листинга 4.5 отбирает планеты с голубым цветом и убирает остальные, выключая правило по умолчанию для текстовых узлов. Результат следующий:

The Earth is blue.

Создание предикатов

Предикаты — настоящие выражения XPath, и XPath гораздо ближе к настоящему языку, чем образцы: к примеру, выражения XPath могут возвращать не только списки узлов, но также логические, строковые и числовые значения. Выражения XPath могут работать не только с текущим узлом или дочерними узлами: можно работать с родительскими узлами, узлами-предками и другими узлами.

Глава 7 полностью посвящена XPath, но имеет смысл предоставить введение в предмет здесь, при обсуждении образцов, потому что часть предиката образца обладает наибольшими возможностями. В предикатах могут быть все виды выражений; в следующем списке перечислен ряд возможных типов, которые будут изучены в следующих разделах:

• наборы узлов;

• логические выражения;

• числа;

• строки.

Предикаты: наборы узлов

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

Интервал:

Закладка:

Сделать


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

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




XSLT отзывы


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


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

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