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

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

Жанры

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

Шрифт:

<?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).

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

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Возвращение Безумного Бога

Тесленок Кирилл Геннадьевич
1. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Войны Наследников

Тарс Элиан
9. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Войны Наследников

Ленька-гимназист

Семин Никита
1. Дорогой Леонид Ильич
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ленька-гимназист

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

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

Фараон

Распопов Дмитрий Викторович
1. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Фараон

Виконт. Книга 2. Обретение силы

Юллем Евгений
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
7.10
рейтинг книги
Виконт. Книга 2. Обретение силы

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

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

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

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия