Чтение онлайн

на главную

Жанры

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

Шрифт:

• 

xsl:exclude-result-prefixes
(необязательный). Определяет, какие пространства имен не будут скопированы в результирующее дерево. Принимает значения списка префиксов пространств имен, разделенных символами- разделителями;

• 

xsl:extension-element-prefixes
(необязательный). Заставляет процессор XSLT трактовать дочерние элементы элемента буквального результата в перечисленных пространствах имен как элементы расширения, а не элементы буквального результата;

• 

xsl:use-attribute-sets
(необязательный). Атрибуты в перечисленных наборах атрибутов добавляются в элемент буквального результата и копируются
в результирующее дерево. Принимает значение списка
QName
, идентифицирующих поименованные элементы
<xsl:attribute-set>
;

• 

xsl:version
(необязательный). Устанавливает версию элементов XSL в элементе буквального результата. Принимает численное значение.

Теперь можно начать работать с этой информацией.

Совпадающие элементы в шаблонах

Для указания того, с каким узлом или узлами вы хотите работать в шаблоне, в XSLT имеются разнообразные способы поиска или выбора узлов. Следует установить атрибут

match
элемента
<xsl:template>
в образец (pattern), определяющий имя узла или узлов, с которыми вы хотите работать. В главе 3, посвященной шаблонам, будет показано, как создавать образцы. Например, образец «/» соответствует корневому узлу; образец «*» задает любой узел элемента; образцу «PLANET» удовлетворяют все узлы элемента
<PLANET>
и т.д.

Для начала я создал короткий пример, заменяющий корневой узел, — а следовательно, и весь документ — на HTML-странице. Первое, что я сделал, — создал шаблон с элементом

<xsl:template>
, установив атрибут
match
в образец для совпадения

<?xml version="1.0">

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/">

 .

 .

 .

 </xsl:template>

</xsl:stylesheet>

Когда устанавливается соответствие с корневым узлом, шаблон применяется к самому узлу. В данном случае (листинг 2.2) я хочу заменить корневой узел документом HTML, поэтому я только включу этот документ HTML непосредственно в качестве содержимого элемента

<xsl:template>
.

Листинг 2.2. Простейшее преобразование

<?xml version="1..0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/">

<HTML>

<HEAD>

<TITLE>

A trivial transformation

</TITLE>

</HEAD>

<BODY>

This transformation has replaced the entire document.

</BODY>

</HTML>

 </xsl:template>

</xsl:stylesheet>

Результат:

при помощи элемента
<xsl:template>
я установил правило в таблице стилей. Когда процессор XSL считывает документ, первым узлом является корневой узел. Это правило находит данный корневой узел, и от того процессор XSL копирует литералы в результирующее дерево, что даст нам HTML doc и заменит его документом HTML, генерируя следующий результат:

<HTML>

 <HEAD>

<TITLE>

A trivial transformation

</TITLE>

 </HEAD>

 <BODY>

This transformation has replaced the entire document.

 </BODY>

</HTML>

Рассмотренный пример иллюстрирует первое, устаревшее преобразование. Была создана простая таблица стилей с единственным элементом

<xsl:template>
, который содержит только элемент буквального результата. Все, что сделано в примере, — замена всего документа XML на документ HTML, что не очень впечатляет. Далее мы увидим, как работает рекурсивная обработка с использованием элемента
<xsl:apply-templates>

Элемент <xsl:apply-templates>

В уже написанном нами основном шаблоне корневой узел искался по выражению "/" и заменялся на элемент буквального вывода. Однако, когда мы ищем корневой узел, обычно нам нужно обработать и всю оставшуюся часть документа, что мы сделаем при помощи элемента

<xsl:apply-templates>
.

В следующем списке перечислены атрибуты этого элемента:

• 

select
(необязательный). Набор обрабатываемых узлов. Если атрибут опущен, автоматически обрабатываются все потомки узла. Устанавливается в выражение;

• 

mode
(необязательный). Устанавливает режим обработки. К этому узлу применяются правила шаблона с режимом выбора. Принимает значение типа
QName
.

Элемент

<xsl:apply-templates>
может содержать ноль или более элементов
<xsl:sort>
, или ноль или более элементов
<xsl:with-param>
.

В следующем примере шаблон ищет корневой узел и замещает его элементом буквального результата <HTML>:

<?xml version="1.0">

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/">

<HTML>

</HTML>

 </xsl:template>

 .

 .

 .

С другой стороны, мы только нашли корневой узел, а дерево данных planets.xml имеет ряд узлов под корневым узлом:

Поделиться:
Популярные книги

Лорд Системы 12

Токсик Саша
12. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 12

Младший научный сотрудник 2

Тамбовский Сергей
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Младший научный сотрудник 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Неестественный отбор.Трилогия

Грант Эдгар
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Неестественный отбор.Трилогия

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Беглец

Кораблев Родион
15. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Беглец

Я – Орк

Лисицин Евгений
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я – Орк

Смерть может танцевать 2

Вальтер Макс
2. Безликий
Фантастика:
героическая фантастика
альтернативная история
6.14
рейтинг книги
Смерть может танцевать 2

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1