Наиболее применяемые правила XPath

Будут приведены наиболее использующиеся правила выбора элементов, которые можно применять как при сборе данных так и при разработке систем автоматизации.

Выбор узлов

ВыражениеОписание
имя_узлаВыбирает все узлы с именем имя_узла
/Выбирает от корневого узла (всегда представляет собой абсолютный путь к элементу)
//Выбирает узлы в документе от текущего узла, который соответствует выбору, независимо от того, где они находятся
.Выбирает текущий узел
..Выбирает родителя текущего узла
@Выбирает атрибуты

Предикаты

ВыражениеОписание
//nodeName[1]Выбирает первый найденный узел с именем nodeName
//nodeName[last()]Выбирает последний найденный узел с именем nodeName
//nodeName[last()-1]Выбирает предпоследний найденный узел с именем nodeName
//nodeName[position()<3]Выбор первых двух узлов с именем nodeName
//nodeName[@attr]Выбор узлов с именем nodeName, имеющих атрибут attr
//nodeName[@attr=»value»]Выбор узлов с именем nodeName, имеющих атрибут attr с значением value

Выбор неизвестных узлов

ВыражениеОписание
*Соответствую любому узлу
@*Соответствую любому атрибуту
node()Соответствует любому узлу любого типа

Оси

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

Правила формирования выборки

Путь правила можно представить в виде шагов (пример абсолютного пути):

/step1/step2/step3

Каждый шаг анализируется по следующей схеме:

axisname::nodetest[predicate]

ВыражениеОписание
child::nodeNameВыбирает все узлы с именем nodeName, которые являются потомками текущего узла
attribute::attrВыбирает атрибут attr текущего узла
child::*Выбирает всех потомков текущего узла
attribute::*Выбирает все атрибуты текущего узла
child::text()Выбирает все текстовые узлы текущего узла
child::node()Выбирает всех ближайших потомков текущего узла
descendant::nodeNameВыбирает всех потомков текущего узла
ancestor::nodeNameВыбирает всех предков с именем nodeName текущего узла
ancestor-or-self::nodeNameВыбирает всех предков с именем nodeName текущего узла – и текущий узел, если он его имя также nodeName
child::*/child::nodeNameВыбирает все потомки с именем nodeName через один уровень от текущего узла

Операторы

ВыражениеОписание
|Вычисляет два набора узлов
+Сложение
Вычитание
*Умножение
divДеление
=Равенство
!=Неравенство
<Меньше, чем
<=Меньше или равно
>Больше, чем
>=Больше или равно
orИли
andИ
modОстаток от деления

Некоторые функции, использующиеся в предикатах

ВыражениеОписание
//nodeName[contains(@attr,»value»)]Возвращает узлы с именем nodeName, атрибут attr которых содержит строку value.
//nodeName[starts-with(@attr,»value»)]Возвращает узлы с именем nodeName, атрибут attr которых начинается с строки value