XSLT
Шрифт:
<DISTANCE UNITS="million miles">43.4</DISTANCE> <!--В перигелии-->
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE>This planet is farther from the Sun than Mercury.</DISTANCE> <!--В
перигелии-->
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE>This planet is farther from the Sun than Mercury.</DISTANCE> <!--В перигелии-->
</PLANET>
</PLANETS>
Применение оси preceding-sibling
Ось
preceding-sibling
содержит всех предшествующих братьев контекстного узла. Заметьте, что если контекстным узлом является узел атрибута или узел пространства имен, ось preceding-sibling
будет пуста. Что, если, например, вам нужно создать шаблон, который будет выбирать только элементы
<DISTANCE>
в элементе <PLANET>
Меркурия? Для этого можно проверить, существуют ли братья, предшествующие элементу <DISTANCE>
, которые являются элементами <NAME>
со строковым значением «Mercury
». Если применить ось preceding-sibling
(листинг 7.14), поиск будет ограничен текущим элементом <PLANET>
, что означает, что Меркурий не будет выбран, если вы только не находитесь в нужном элементе <PLANET>
. Листинг 7.14. Применение оси preceding-sibling
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="DISTANCE[preceding-sibling::*='Mercury']">
<DISTANCE>This is the planet Mercury, closest to the Sun.</DISTANCE>
</xsl:template>
<xsl:template match="@*|node">
<xsl:copy>
<xsl:apply-templates select="@*|node"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
А
<?xml version="1.0" encoding="utf-8"?>
<?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>This is the planet Mercury, closest to the Sun.</DISTANCE> <!--В перигелии-->
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--B перигелии-->
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->
</PLANET>
</PLANETS>
Применение оси self
Ось
self
содержит только контекстный узел. В соответствии с одним из сокращений XPath, как мы увидим дальше, вместо «self::node
» можно использовать «.». Эту ось полезно иметь в виду, поскольку, как вы помните из главы 4, если не задать ось, осью по умолчанию будет
child::
, а в некоторых случаях вам может понадобиться обратиться к действующему узлу. Например, [self::PLANET]
примет значение истины только если контекстным узлом будет элемент <PLANET>
.
Поделиться:
Популярные книги
Лекарь Империи 4
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Хозяин Стужи 5
5. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
6.60
рейтинг книги
Законы рода
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Ваше Сиятельство 6
6. Ваше Сиятельство
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Студиозус
3. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Лабиринт Сумерек
2. Квадрат мироздания
Фантастика:
фэнтези
6.00
рейтинг книги
Тринадцатый XI
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 4
4. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Я – Легенда
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Моров. Том 4
3. Моров
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Потомок бога 3
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Чевенгур
Проза:
советская классическая проза
6.75