Пути доступа

Путь доступа представляет собой выражение 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()

..

В этом разделе

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