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

на главную - закладки

Жанры

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

Шрифт:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#"?>

<PLANETS>

 <PLANET>

<NAME>Mercury</NAME>

<MASS UNITS="(Earth = 1)">.0553</MASS>

<DAY UNITS="days">58.65</DAY>

<RADIUS UNITS="miles">1516</RADIUS>

<DENSITY UNITS="(Earth = 1)">.983</DENSITY>

<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B
перигелии-->

 </PLANET>

 .

 .

 .

Для обработки не только одного корневого узла можно использовать

<xsl:apply-templates>
, добавив этот элемент следующим образом:

<?xml version="1.0">

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

 </xsl:template>

 .

 .

 .

Этот элемент дает указание процессору XSLT просмотреть все дочерние узлы корневого узла и попытаться найти шаблон, которому эти узлы удовлетворяют. Например, вам может потребоваться заменить все элементы

<PLANET>
на
Planet
. Элементы
<PLANET>
— дочерние узлы элемента
<PLANETS>
, поэтому сначала я добавил новый шаблон для
<PLANETS>
, что говорит процессору о том, что следует продолжать поиск дочерних узлов:

<?xml version="1.0">

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

 </xsl:template>

 <xsl:template match="PLANETS">

<xsl:apply-templates/>

 </xsl:template>

 .

 .

 .

Теперь можно добавить еще один шаблон для следующего уровня, включающего элементы

<PLANET>
. В этом случае я просто заменю каждый элемент
<PLANET>
элементом буквального результата
Planet
(листинг 2.3).

Листинг 2.3. Использование <xsl:apply-templates/>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

 </xsl:template>

 <xsl:template match="PLANETS">

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANET">

Planet

 </xsl:template>

</xsl:stylesheet>

Вот

результат применения этой таблицы стилей:

<HTML>

 <Р>

Planet

 </Р>

 <Р>

Planet

 </Р>

 

Planet

 </Р>

</HTML>

Как видите, от элемента

<PLANETS>
ничего не осталось. Все, что осталось, — три элемента буквального результата
Planet
, которые заменили три элемента
<PLANET>
.

ПРОПУСК АТРИБУТА SELECT

Если опустить атрибут select, будут обрабатываться только дочерние узлы текущего узла, не включающие атрибуты или узлы пространств имен, так как они не считаются дочерними. Если вы хотите обрабатывать узлы этих видов, необходимо использовать атрибут select, как будет рассмотрено в главе 3.

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

Доступ к значениям узлов

Получить доступ к значению узла можно при помощи элемента

<xsl:value-of>
, у которого есть два возможных атрибута:

• 

select
(обязательный). Выходное значение. Устанавливается в выражение;

• disable-output-escaping (необязательный). Указывает, что символы, такие как

>
, будут отправляться в выходной поток как есть, не изменяясь на
&gt;
. Значения этого атрибута:
yes
или
no
.

Элемент

<xsl:value-of>
всегда пуст.

При помощи атрибута

select
можно указать, значение какого узла требуется получить. Например, вам может потребоваться значение узла
<NAME>
в каждом элементе
<PLANET>
, то есть текст, заключенный в этом узле. Это можно сделать следующим образом (листинг 2.4).

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

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Газлайтер. Том 14

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

Наследник павшего дома. Том IV

Вайс Александр
4. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том IV

Вернуть Боярство 11

Мамаев Максим
11. Пепел
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Вернуть Боярство 11

Кодекс Крови. Книга ХIII

Борзых М.
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIII

Кодекс Крови. Книга ХVII

Борзых М.
17. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVII

Трактир «Разбитые надежды»

Свержин Владимир Игоревич
1. Трактир "Разбитые надежды"
Фантастика:
боевая фантастика
7.69
рейтинг книги
Трактир «Разбитые надежды»

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Бывшая жена драконьего военачальника

Найт Алекс
2. Мир Разлома
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бывшая жена драконьего военачальника

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Идеальный мир для Демонолога 3

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

Отмороженный 13.0

Гарцевич Евгений Александрович
13. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 13.0

Город Богов 3

Парсиев Дмитрий
3. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 3