Контекст для XPath-выражений

Оценка выражения XPath зависит от контекста, к которому обращается выражение. Контекст состоит из узла, по которому оценивается выражение, а также из связанной с ним среды, включающей следующие компоненты.

  • Порядковый номер узла контекста в документе относительно одноуровневых элементов.

  • Размер контекста, т. е. число одноуровневых элементов узла контекста плюс один.

  • Привязки переменных, с которыми разрешаются ссылки на переменные.

  • Библиотека функций.

  • Объявления пространств имен в области выражения.

Для того, чтобы лучше понять концепцию контекста, представьте дерево, содержащее узлы. Запрос всех узлов X из корня дерева возвратит один набор резултьтатов, в то время, как запрос этих узлов из ветви дерева возвратит другой набор результатов. Таким образом, результат выражения зависит от контектса, к которому оно обращается при выполнении.

Выражения XPath могут сопоставить специальные шаблоны в одном конкретном контексте, затем вернуть результаты и выполнить дополнительные обращения к контексту возвращенных узлов. Это обеспечивает выражениям XPath исключительную гибкость при поиске по дереву документа.

Базовые выражения XPath

Далее приведены базовые типы выражений XPath. Каждый из типов описан ниже.

  • Текущий контекст

  • Корень документа

  • Корневой элемент

  • Рекурсивный спуск

  • Конкретный элемент

ms256199.collapse_all(ru-ru,VS.120).gifПримеры

В следующих примерах приведены некоторые базовые выражения 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.