Ось XPath (Axes)

XML-пример документ

Мы будем использовать этот XML-документ в следующем примере:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Ось XPath

Ось может определять набор узлов относительно текущего узла. Результат
Имя оси ancestor
Выберите всех предков текущего узла (родителя, дедушки и т.д.). ancestor-or-self
Выберите всех предков текущего узла (родителя, дедушки и т.д.) и сам узел. Выберите все атрибуты текущего узла.
attribute Выберите все подэлементы текущего узла.
child descendant
Выберите все потомки текущего узла (дочери, внучки и т.д.). descendant-or-self
Выберите все потомки текущего узла (дочери, внучки и т.д.) и сам узел. following
Выберите все узлы после окончания тега текущего узла в документе. namespace
Выберите все узлы пространства имен текущего узла. parent
Выберите родителя текущего узла. preceding
Выберите все узлы перед началом тега текущего узла в документе. preceding-sibling
Выберите все узлы, предшествующие текущему узлу в том же уровне. self

Выберите текущий узел.

Выражение пути позиции

Путь позиции может быть абсолютным или относительным.

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

/step/step/...

Относительный путь позиции:

step/step/...

Каждый шаг вычисляется на основе узлов в текущем наборузлов

Шаг (step) включает:

Ось (axis)
Определите деревенские отношения между выбранным узлом и текущим узлом
Тест узла (node-test)
Идентифицируйте узлы в определенном предике
Ноль или более предикатов (predicate)
Более глубоко уточните所选ый набор узлов

Грамматика шага:

Имя оси::узел тест[предикат]

Пример

Пример Результат
child::book Выберите все узлы book, являющиеся подузлами текущего узла.
attribute::lang Выберите атрибут lang текущего узла.
child::* Выберите все подэлементы текущего узла.
attribute::* Выберите все атрибуты текущего узла.
child::text() Выберите все текстовые подузлы текущего узла.
child::node() Выберите все подузлы текущего узла.
descendant::book Выберите всех descendants book для текущего узла.
ancestor::book Выберите всех предков book
ancestor-or-self::book Выберите всех предков book и текущий узел (если текущий узел является узлом book)
child::*/child::price Выберите все потомки price для текущего узла.