=> Главная База Знаний Xslt Примеры путей расположения


Примеры путей расположения

Примеры путей расположения

Мы изучили достаточно теории путей расположения. Но, понятно, лучше всего осваивать этот материал на примерах, поэтому я привожу следующий список примеров путей расположения (сокращенные варианты рассматриваются после этого списка):

• 

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.