Валиков Алексей Н.
Шрифт:
Кроме того, каждой оси соответствует прямое или обратное направление просмотра, которое определяет, в каком порядке будут перебираться узлы, выбираемые этой осью. Оси навигации, которые содержат узлы, предшествующие в порядке просмотра документа контекстному узлу, имеют обратное направление просмотра, все остальные оси просматриваются в прямом порядке. Поскольку оси как
Базовые типы узлов и направление их просмотра можно свести в одну таблицу (табл. 6.1).
Таблица 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. Расположение и порядок просмотра осей навигации в документе
Приведем продукцию
Оси навигации показывают, в каком направлении следует искать узлы, — среди тех, которые предшествовали контекстному узлу, или тех, которые будут следовать за ним, родительские или дочерние элементы, узлы атрибутов или пространств имен.
При этом оси навигации могут содержать узлы разных типов и с разными именами. Следующая часть шага выборки, тест узла уточняет, что конкретно мы ищем.
Тесты узлов
Вторая часть шага выборки, тест узла, оставляет из множества, которое содержит ось навигации, только узлы, соответствующие определенному типу или имеющие определенные имена.
Продукция
Раскрыв продукции
Рассмотрим подробно каждый случай.
□ Тест узла