XSLT
Шрифт:
В следующем примере я объединяю шаблоны для элементов
<NAME>
и <MASS>
в один шаблон. Поскольку у этих элементов разный формат, я должен обращаться с ними по-разному внутри одного и того же шаблона (что можно сделать проверкой значений оси self::NAME
, которая возвращает непустой набор узлов, если контекстным, узлом является элемент <NAME>
, и self::MASS
, возвращающей непустой набор узлов, если контекстным узлом является элемент <MASS>
): <xsl:template match="PLANET">
<TR>
<TD><xsl:apply-templates select="NAME"/></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
</TR>
</xsl:template>
<xsl:template match="NAME | MASS">
<xsl:if test="self::NAME">
<xsl:value-of select="."/>
</xsl:if>
<xsl:if test="self::MASS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:if>
</xsl:template>
.
.
.
На
Примеры путей расположения
Мы изучили достаточно теории путей расположения. Но, понятно, лучше всего осваивать этот материал на примерах, поэтому я привожу следующий список примеров путей расположения (сокращенные варианты рассматриваются после этого списка):
•
child::PLANЕТ
. Возвращает дочерние элементы <PLANЕТ>
контекстного узла; •
child::text
. Возвращает все дочерние текстовые узлы контекстного узла; •
child::node
. Возвращает всех детей контекстного узла; •
attribute::UNIT
. Возвращает атрибут UNIT
контекстного узла; •
descendant::PLANET
. Возвращает все элементы-потомки <PLANET>
контекстного узла; •
ancestor::PLANET
. Возвращает всех предков <PLANET>
контекстного узла; •
ancestor-or-self::PLANET
. Возвращает предков <PLANET>
контекстного узла. Если контекстным узлом тоже является <PLANET>
, возвращает также контекстный узел; •
descendant-or-self::PLANET
.
<PLANET>
контекстного узла. Если контекстным узлом тоже является <PLANET>
, возвращает также контекстный узел; •
self::PLANET
. Возвращает контекстный узел, если им является элемент <PLANET>
; •
child::PLANET/descendant::NAME
. Возвращает элементы-потомки <NAME>
дочерних элементов <PLANET>
контекстного узла; •
child::*/child::PLANET
. Возвращает всех внуков <PLANET>
контекстного узла; •
/
. Возвращает корневой узел; •
/descendant::PLANET
. Возвращает все элементы <PLANET>
в документе; •
/descendant::PLANET/child::NAME
. Возвращает все элементы <NAME>
с родителем <PLANET>
в документе; •
child::PLANET[position=3]
. Возвращает третьего ребенка <PLANET>
контекстного узла; •
child::PLANET[position=last]
. Возвращает последнего ребенка <PLANET>
контекстного узла; •
/descendant::PLANET[position = 3]
. Возвращает третий элемент <PLANET>
в документе; •
child::PLANETS/child::PLANET[position=4]/child::NAME[position=3]
. Возвращает третий элемент <NAME>
четвертого элемента <PLANET>
элемента <PLANETS>
; •
child::PLANET[position>3]
. Возвращает всех детей <PLANET>
контекстного узла после первых трех; •
preceding-sibling::NAME[position=2]
. Возвращает второй предыдущий элемент-брат <NAME>
контекстного узла; •
child::*[self::NAME or self::MASS]
. Возвращает детей <NAME>
и <MASS>
контекстного узла. •
child::*[self::NAME or self::MASS][position=last]
. Возвращает последнего ребенка <NAME>
или <MASS>
контекстного узла. Как видите, синтаксис некоторых выражений достаточно запутан, и набирать их также довольно долго. Но, как и для образцов, существует сокращенная форма синтаксиса XPath.
Сокращенный синтаксис XPath
Сокращения синтаксиса XPath могут быть весьма удобными. Ниже приведены правила:
•
self::node
может быть сокращено как .
; •
parent::node
может быть сокращено как ..
; •
child::childname
может быть сокращено как childname
;
Поделиться:
Популярные книги
Эволюционер из трущоб. Том 4
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Измена. Возвращение любви!
3. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Газлайтер. Том 14
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Вперед в прошлое 2
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Адвокат вольного города 3
3. Адвокат
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Шайтан Иван 2
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
На границе империй. Том 8
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Кодекс Крови. Книга II
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Жена моего брата
1. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Государь
3. Рюрикова кровь
Фантастика:
мистика
альтернативная история
историческое фэнтези
6.25
рейтинг книги
Законы Рода. Том 8
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00