Будут приведены наиболее использующиеся правила выбора элементов, которые можно применять как при сборе данных так и при разработке систем автоматизации.
Выбор узлов
Выражение
Описание
имя_узла
Выбирает все узлы с именем имя_узла
/
Выбирает от корневого узла (всегда представляет собой абсолютный путь к элементу)
//
Выбирает узлы в документе от текущего узла, который соответствует выбору, независимо от того, где они находятся
.
Выбирает текущий узел
..
Выбирает родителя текущего узла
@
Выбирает атрибуты
Предикаты
Выражение
Описание
//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