Поделиться через


Оси

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

Оси Описание

ancestor::

Предки узла контекста.

К предкам узла контекста относятся родительский узел узла контекста, родитель родителя и т. д.; таким образом, ось ancestor:: всегда включает в себя корневой узел, если только контекстный узел сам не является корневым узлом.

ancestor-or-self::

Узел контекста и его предки.

Ось ancestor-or-self:: всегда включает корневой узел.

attribute::

Атрибуты контекстного узла.

Ось будет пуста, если узел контекста не элемент.

child::

Дочерние элементы узла контекста.

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

descendant::

Потомки контекстного узла.

Потомком является дочерний объект или дочерний объект дочернего объекта и т. д.; таким образом, ось descendant:: никогда не содержит узлов атрибутов или пространства имен.

descendant-or-self::

Узел контекста и его потомки.

following::

Все узлы, расположенные на дереве после узла контекста, за исключением потомков, узлов атрибутов и узлов пространства имен.

following-sibling::

Все следующие элементы узла контекста с общим родителем.

На оси following-sibling:: указываются лишь те дочерние объекты родительского узла, которые отображаются на дереве после узла контекста. На этой оси не указываются все другие дочерние объекты, расположенные перед узлом контекста.

Если узел контекста является узлом атрибута или узлом пространства имен, ось following-sibling:: пуста.

namespace::

Узлы пространства имен узла контекста.

На каждое пространство имен, расположенное в области узла контекста, приходится по одному узлу пространства имен.

Ось будет пуста, если узел контекста не элемент.

parent::

Родитель узла контекста, если таковой имеется.

Родителем является узел, расположенный на дереве непосредственно над узлом контекста.

preceding::

Все узлы, расположенные на дереве перед узлом контекста, за исключением предков, узлов атрибутов и узлов пространства имен.

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

preceding-sibling::

Все предшествующие элементы узла контекста с общим родителем.

На оси preceding-sibling:: указываются лишь те потомки родительского узла, которые отображаются на дереве до узла контекста. На этой оси не указываются все другие дочерние объекты, расположенные после узла контекста.

Если узел контекста является узлом атрибута или узлом пространства имен, ось preceding-sibling:: пуста.

self::

Только сам контекстный узел.

Замечания

  • пространство имен
    Каждый элемент имеет связанный с ним набор узлов пространства имен, по одному узлу на каждый уникальный префикс пространства имен, расположенный в области этого элемента (включая префикс xml, неявно объявленный в рекомендациях по пространствам имен XML), и один узел для применяемого по умолчанию пространства имен, если оно расположено в области данного элемента. Элемент является родителем каждого из этих узлов пространства имен, однако узел пространства имен не является дочерним элементом своего родительского элемента. Узел пространства имен не может использоваться несколькими элементами. Если один узел элемента не идентичен другому узлу элемента, то ни один узел пространства имен одного узла элемента не будет идентичным узлам пространств имен другого узла элемента. Это значит, что элемент будет иметь узел пространства имен:

    • для каждого атрибута элемента, имя которого начинается с xmlns:;

    • для каждого атрибута элемента-предка, имя которого начинается с xmlns:, если только сам этот элемент или более близкий предок не объявит префикс повторно;

    • для атрибута xmlns, если элемент или один из предков имеет атрибут xmlns и значение атрибута xmlns для ближайшего подобного элемента не является пустым.

Элемент <sample> в следующем экземпляре

содержит следующие узлы пространств имен.

Элемент <sample> в следующем экземпляре

содержит следующие узлы пространств имен.

xmlns:sampletest="sampletest"

xmlns:test="test"

ms256456.note(ru-ru,VS.100).gifПримечание
Атрибут xmlns="" не объявляет пространство имен по умолчанию.

Узел пространства имен имеет развернутое имя: локальная часть представляет собой префикс пространства имен (префикс отсутствует, если узел пространства имен относится к пространству имен по умолчанию); значением идентификатора URI всегда является NULL.

Строковым значением узла пространства имен является указатель URI пространства имен, связанный с префиксом пространства имен; если указатель относительный, он должен разрешаться как URI пространства имен в развернутом имени.

Примеры

following::

Примеры оси following:: ссылаются на следующий документ экземпляра:

Запрос Возвращенные узлы

A/B[1]/following::*

A/B[1]/following::node()

preceding::

Пример оси preceding:: ссылается на следующий документ экземпляра:

Запрос Возвращенные узлы

A/B[2]/preceding::*

ось following-sibling::

Пример оси following-sibling:: ссылается на следующий документ экземпляра.:

Запрос Возвращенные узлы

A/B[1]/following-sibling::*

ось preceding-sibling::

Пример оси preceding-sibling:: ссылается на следующий документ экземпляра.:

Запрос Возвращенные узлы

A/B[2]/preceding-sibling::*

См. также

Справочник

Шаги доступа
Проверки узлов
Предикаты