Контекст для XPath-выражений
Оценка выражения XPath зависит от контекста, к которому обращается выражение. Контекст состоит из узла, по которому оценивается выражение, а также из связанной с ним среды, включающей следующие компоненты.
Положение узла контекста в порядке документа относительно одноуровневых элементов.
Размер контекста, т. е. число одноуровневых элементов узла контекста плюс один.
Привязки переменных, с которыми разрешаются ссылки на переменные.
Библиотека функций.
Объявления пространств имен в области выражения.
Для того, чтобы лучше понять концепцию контекста, представьте дерево, содержащее узлы. Запрос всех узлов X из корня дерева возвратит один набор резултьтатов, в то время, как запрос этих узлов из ветви дерева возвратит другой набор результатов. Таким образом, результат выражения зависит от контектса, к которому оно обращается при выполнении.
Выражения XPath могут сопоставить специальные шаблоны в одном конкретном контексте, затем вернуть результаты и выполнить дополнительные обращения к контексту возвращенных узлов. Это обеспечивает выражениям XPath исключительную гибкость при поиске по дереву документа.
Базовые выражения XPath
Далее приведены базовые типы выражений XPath. Каждый из типов описан ниже.
Текущий контекст
Корень документа
Корневой элемент
Рекурсивный спуск
Конкретный элемент
Примеры
В следующих примерах приведены некоторые базовые выражения XPath. Более сложные выражения создаются при комбинировании этих простых выражений, а также благодаря использованию различных операторов и специальных символов XPath.
Текущий контекст
Выражение с префиксом в виде точки и косой черты (./) явным образом использует в качестве контекста текущий контекст. Например, следующее выражение ссылается на все элементы<author>
внутри текущего контекста../author
Обратите внимание, что это выражение эквивалентно следующему.
author
Корень документа
Выражение с префиксом в виде косой черты (/) использует в качестве контекста корень дерева документа. Например, следующее выражение ссылается на все элементы<bookstore>
в корне этого документа./bookstore
Корневой элемент
Выражение, использующее косую черту и звездочку (/*), использует в качестве контекста корневой элемент. Например, следующее выражение находит корневой элемент документа./*
Рекурсивный спуск
Выражение, используюшее двойную косую черту (//), указывает на поиск, который может включать ноль или более уровней иерархии. Если этот оператор отображается в начале шаблона, то контекст является относительным по отношению к корню документа. Например, следующее выражение ссылается на все элементы<author>
внутри в любом месте внутри текущего документа.//author
Префикс .// указывает, что контекст начинается на уровне иерархии, указанном в текущем контексте.
Конкретные элементы
Выражение, которое начинается с имени элемента, ссылается на запрос конкретного элемента, который начинается от текущего узла контекста. Например, следующее выражение ссылается на элемент<background.jpg>
внутри элемента<images>
в текущего узле контекста.images/background.jpg
Следующее выражение ссылается на коллекцию элементов
<book>
внутри элементов<bookstore>
в текущего узле контекста.bookstore/book
Следующее выражение ссылается на все элементы
<first.name>
внутри текущего узла контекста.first.name
Примечание
Имена элементов могут включать точку (.).Эти имена могут использоваться как и любые другие имена.
Контекст в объекте DOM
При использовании выражений XPath с объектами Microsoft XML DOM контекстом является объект Node, причем вызывается его метод selectNodes, либо selectSingleNode.
При использовании XPath напрямую из объекта DOM контекст определяется из конкретного узла.
Контекст в XSLT
При использовании XPath напрямую из XSLT, контекст определяется текущим узлом.
Другие ресурсы
Дополнительные сведения см. в документе "Язык XPath версии 1.0 (рекомендовано W3C 16 ноября 1999 г.)" по адресу www.w3.org/TR/xpath.