Последние учебники веб-разработки
 

XPath Топоры


Пример XML документа

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

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

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

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

</bookstore>

XPath Топоры

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

AxisName результат
предок Выбирает все предок (parent, grandparent, etc.) текущего узел
предок или-я Выбирает все предок (parent, grandparent, etc.) текущего узел и сам текущий узел
атрибут Выбирает все атрибуты текущего узла
ребенок Выбирает все дочерние узлы текущего узла
потомок Выбирает все потомки (children, grandchildren, etc.) текущего узла
потомок или-я Выбирает все потомки (children, grandchildren, etc.) текущего узла и сам по себе текущий узел
следующий Выбирает все в документе после закрытия тега текущего узла
следующая-родственный Выбирает все братья и сестры после текущего узла
Пространство имен Выбирает все узлы пространства имен текущего узла
родитель Выбирает родителя текущего узла
предшествующий Выбирает все узлы, которые появляются перед текущим узлом в документе, за исключением предков, узлы атрибутов и узлы пространств имен
предшествующее-родственный Выбирает все братья и сестры до текущего узла
сам Выбирает текущий узел

Расположение Path Expression

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

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

An absolute location path:

/step/step/...

A relative location path:

step/step/...

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

Шаг состоит из:

  • ось (defines the tree-relationship between the selected nodes and the current node)
  • узел-тест (identifies a node within an axis) в (identifies a node within an axis)
  • ноль или более предикат (to further refine the selected node-set)

Синтаксис шага расположения является:

axisname::nodetest[predicate]

Примеры

пример результат
ребенок :: книга Выбирает все книжные узлы, которые являются потомками текущего узла
атрибут :: Ланг Выбирает lang атрибут текущего узла
ребенок :: * Выбирает все элементы, дети текущего узла
атрибут::* Выбирает все атрибуты текущего узла
ребенок :: text() Выбирает все текстовые узлы потомков текущего узла
ребенок :: node() Выбирает все дочерние узлы текущего узла
Потомок :: книга Выбирает все книги потомков текущего узла
предок :: книга Выбирает все книги предков текущего узла
предок или-я :: книга Выбирает все книги предков текущего узла - и тока, а также, если это книга узел
ребенок :: * / ребенок :: цена Выбирает все ценовые внука текущего узла