Существует два типа пути к расположению: полный и относительный. Полный путь начинается с постоянной точки ссылки — от корневого узла. Относительный путь начинается с переменной точки — от узла контекста.
Путь к расположению возвращает множество узлов, являющееся набором узлов (любая часть документа 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 \ | Результат деления по модулю первого числового выражения на второе (возвращается остаток). |