Пути расположения (XPath)

Путь расположения представляет собой выражение XPath, которое используется для выбора набора узлов, относящихся к узлу контекста. Результатом оценки выражения пути расположения является набор узлов, содержащий узлы, определенные путем расположения. В путь расположения могут рекурсивно входить выражения, используемые для фильтрации наборов узлов.

Синтаксически путь расположения состоит из одного и более шагов определения расположения, отделенных друг от друга косой чертой (/):

locationstep/locationstep/locationstep

Каждый шаг определения расположения в порядке очереди выбирает набор узлов, относящихся к узлу контекста, т. е. к узлу, выбранному предыдущим шагом определения расположения. Путь расположения, выраженный подобным образом, является относительным путем расположения. Абсолютный путь расположения берет начало от корневого элемента:

/locationstep/locationstep/locationstep

Шаги определения расположения в пути расположения оцениваются слева направо. Крайний левый шаг определения расположения выбирает набор узлов, относящихся к узлу контекста. Эти узлы затем становятся узлами контекста для обработки следующего шага определения расположения. Обработка узлов и смена узла контекста повторяется до тех пор, пока не будут обработаны все шаги определения расположения.

Путь расположения может иметь как полный, так и сокращенный синтаксис.

Путь расположения с полным синтаксисом выглядит следующим образом.

axis::node-test[predicate]

В этом синтаксисе элемент axis определяет, как узлы, выбранные шагом определения расположения, располагаются относительно узла контекста. Элемент node-test определяет тип узла и развернутое имя узлов, выбранных шагом определения расположения. Элемент predicate является критерием фильтра, используемым для дальнейшего уточнения выбора узлов в шаге определения расположения. Предикаты являются необязательными элементами. В данном случае путь расположения состоит только из элементов axis:: и node-test. В следующей таблице приведено несколько примеров.

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

Описание

child::para[last()]

Выбирает последний элемент <para> узла контекста.

parent::para

Выбирает элемент <para>, являющийся родительским по отношению к контекстному узлу.

child::text()

Выбирает все дочерние текстовые узлы контекстного узла.

child::div/child::para

Выбирает дочерние элементы <para> элемента <div>, который является дочерним по отношению к узлу контекста.

В сокращенном синтаксисе пути расположения указатель оси (axis::) выражается в шаге определения расположения неявно, вместо этого он описывается набором ярлыков. В следующей таблице приведено несколько примеров.

Сокращенный синтаксис пути расположения

Описание

para

Выбирает элементы <para> узла контекста.

../para

Выбирает элемент <para>, являющийся родительским по отношению к контекстному узлу.

text()

Выбирает все дочерние текстовые узлы контекстного узла.

./div/para

Выбирает дочерние элементы <para> элемента <div> узла контекста.

Ниже приводится сводка некоторых сокращений.

Полный синтаксис

Сокращенный синтаксис

child::*

*

attribute::*

@*

/descendant-or-self::node()

//

self::node()

.

parent::node()

..

Содержание

В следующих подразделах подробно обсуждается синтаксис и использование фрагментов путей расположения.указаны все пункты?