Мастер выражений XPath — Параметры описания синтаксиса

С помощью параметров описания синтаксиса можно указать для выражений XPath операторы и путь к расположению. Операторы используются для изменения числовых значений, формирования пути и сравнения строковых или числовых значений. Путь к расположению описывает расположение узла или группы узлов в документе XML.

Существует два типа пути к расположению: полный и относительный. Полный путь начинается с постоянной точки ссылки — от корневого узла. Относительный путь начинается с переменной точки — от узла контекста.

Путь к расположению возвращает множество узлов, являющееся набором узлов (любая часть документа XML: элемент, атрибут, пространство имен или комментарий). Путь к расположению состоит из ступеней расположения. Каждая ступень состоит из двух частей:

Ступень расположения имеет следующий вид:

ось: проверка-узла

Ступени расположения можно объединять, используя символ косая черта. Каждая ступень полученного пути к расположению задает узел контекста для следующего пути в этой ступени.

Для того чтобы открыть параметры описания синтаксиса, перейдите на вкладку Описание мастера выражений XPath.

Модификаторы оси

Каждая ступень расположения XPath удаляется по оси от узла контекста. Например, если выбрать в качестве оси child (дочерние), то выражение XPath будет выполнять поиск среди всех дочерних объектов узла контекста.

Ось Расположение, в котором выполняется поиск узлов
ancestor:: Корневой узел и все узлы-элементы, содержащие узел контекста.
ancestor-or-self :: Все предки узла контекста, а также сам узел.
attribute:: Все атрибуты узла контекста.
child:: Все дочерние объекты узла контекста. Узлы атрибутов и пространств имен не являются дочерними объектами каких-либо узлов, хотя у них есть родительские узлы.

Это значение по умолчанию.

descendant:: Все узлы, содержащиеся в узле контекста, то есть любые дочерние объекты или дочерние объекты дочерних объектов и так далее. Потомки есть только у корневого узла и узлов-элементов. Как и в оси child, в оси descendant не может содержаться узлов пространств имен или атрибутов.
descendant-or-self:: Любой потомок узла контекста или сам узел контекста.
following:: Все узлы, начинающиеся после окончания узла контекста, кроме узлов атрибутов и узлов пространств имен.
following-sibling::  Все узлы, следующие за окончанием узла контекста и имеющие тот же родительский узел. Узлы атрибутов и пространств имен не имеют сестер.
namespace::  Все пространства имен в области узла контекста.
parent::  Элемент или корневой узел, непосредственно содержащий узел контекста. Только корневой узел не имеет родительского узла.
preceding::  Все узлы, заканчивающиеся до начала узла контекста, кроме узлов атрибутов и узлов пространств имен.
preceding-sibling:: Все узлы, предшествующие началу узла контекста и имеющие тот же родительский узел. Узлы атрибутов и пространств имен не имеют сестер.
self::  Сам узел контекста.

Проверки узлов

У каждой ступени расположения имеется по крайней мере одна ось и одна проверка узла. Проверка узлов дополнительно уточняет узлы, выбранные в ступени расположения. Например, если выбрать в качестве ступени расположения child:: comment( ), то выражение XPath возвратит все дочерние объекты узла комментариев.

Узел Возвращаемое значение
* Выбирает все элементы, независимо от их имени. Например: child::* выберет все дочерние элементы узла контекста, а attribute::* выберет все атрибуты узла контекста.
comment ( ) Все узлы комментариев.
node( ) Все узлы, независимо от типа.
processing-instruction ('целевой-объект' ) При отсутствии аргументов возвращает все инструкции по обработке. При одном аргументе целевой-объект типа string выбирает все инструкции по обработке, имеющие указанный целевой объект.
text( ) Все текстовые узлы. Например: child::text() выбирает все дочерние текстовые узлы узла контекста.

Операторы

Существует три разных типа операторов:
  • Набор узлов: операторы для объединения или определения пути
  • Булевские: операторы сравнения строковых или числовых выражений
  • Число: операторы для изменения числовых значений

Набор узлов

Оператор Функция
| Оператор объединения. В двух наборах узлов объединяются все узлы (с удалением одинаковых узлов).
/ Выбирает все дочерние узлы.
// Выбирает узлы-потомки.

Булевский

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

Оператор Возвращает
<= true — если значение первого числового выражения меньше или равно значению второго; false — в противном случае.
< true — если значение первого числового выражения меньше значения второго; false — в противном случае.
>= true — если значение первого числового выражения больше или равно значению второго; false — в противном случае.
> true — если значение первого числового выражения больше значения второго; false — в противном случае.
= true — если оба выражения (строковое или числовое) имеют одинаковое значение; false — в противном случае.
!= true — если два выражения (строковое или числовое) имеют разные значения; false — в противном случае.
и true — если оба булевских значения равны true; false — в противном случае.
или false — если только оба значения равны false; true — в противном случае.

Число

С помощью этих операторов можно изменять числовые значения.

Оператор Возвращает
+ Сумму двух числовых выражений.
- Разность между первым числовым выражением и вторым.
* Произведение двух числовых выражений.
div Результат деления первого числового выражения на второе.
mod \ Результат деления по модулю первого числового выражения на второе (возвращается остаток).

Комментарии