Пути расположения (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() |
.. |
Содержание
В следующих подразделах подробно обсуждается синтаксис и использование фрагментов путей расположения.указаны все пункты?