Пример 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() | Выбирает все дочерние узлы текущего узла |
Потомок :: книга | Выбирает все книги потомков текущего узла |
предок :: книга | Выбирает все книги предков текущего узла |
предок или-я :: книга | Выбирает все книги предков текущего узла - и тока, а также, если это книга узел |
ребенок :: * / ребенок :: цена | Выбирает все ценовые внука текущего узла |