Рис. 6.9. Расположение в документе осей навигации
На этом рисунке не показано расположение осей атрибутов и пространств имен вследствие того, что эти оси не имеют в документе физического направления.
Каждая ось имеет
Кроме того, каждой оси соответствует прямое или обратное направление просмотра, которое определяет, в каком порядке будут перебираться узлы, выбираемые этой осью. Оси навигации, которые содержат узлы, предшествующие в порядке просмотра документа контекстному узлу, имеют обратное направление просмотра, все остальные оси просматриваются в прямом порядке. Поскольку оси как self и parent не могут содержать более одного узла, порядок просмотра для них не играет никакого значения.
Базовые типы узлов и направление их просмотра можно свести в одну таблицу (табл. 6.1).
| Ось навигации | Базовый тип узла | Направление просмотра |
|---|---|---|
self | Узел элемента | Нет |
child | Узел элемента | Прямое |
parent | Узел элемента | Нет |
descendant | Узел элемента | Прямое |
descendant-or-self | Узел элемента | Прямое |
ancestor | Узел элемента | Обратное |
ancestor-or-self | Узел элемента | Обратное |
following | Узел элемента | Прямое |
following-sibling | Узел элемента | Прямое |
preceding | Узел элемента | Обратное |
preceding-sibling | Узел элемента | Обратное |
attribute | Узел атрибута | Прямое |
namespace | Узел пространства имен | Прямое |
Базовый тип влияет на то, как в данном шаге выборки будет выполняться тест узла, а направление просмотра на позицию, которую будет занимать тот или иной узел в данном направлении.
Легче всего понять, какие узлы и в каком порядке содержат те или иные оси навигации, представив это графически. Рис. 6.10 иллюстрирует выбор узлов осями навигации. Здесь показано дерево документа, контекстный узел, выделенный жирной линией, и множество узлов, содержащееся в данной оси, ограниченное пунктиром. Узлы выбранного множества пронумерованы в порядке просмотра оси.
Рис. 6.10. Расположение и порядок просмотра осей навигации в документе
Приведем продукцию AxisName, которая описывает синтаксис осей навигации.
