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


Проверки имен

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

В следующей таблице приводятся основные типы узлов для различных осей.

Ось Основной тип узла

Любая ось, отличная от оси attribute:: , либо ось namespace:: (то есть ось, которая может содержать элементы)

element

attribute

attribute

namespace

namespace

Имя, указанное при проверке имен, может иметь один из следующих трех типов: звездочка (*), QName или выражение NCName:*. В следующей таблице показаны примеры использования каждого из этих типов имен совместно с указанной осью для определения расположения конкретного набора узлов.

Имя Возвращаемое значение Пример

* (звездочка)

True для любого узла основного типа.

ancestor::* выбирает всех предков узла контекста.

attribute::* выбирает все атрибуты узла контекста.

namespace::* выбирает все пространства имен узла контекста.

QName

True для любого узла основного типа, чье развернутое имя идентично развернутому имени, указанному типом имени QName.

child::para выбирает все содержащие элементы узлы <para>, являющиеся дочерними по отношению к узлу контекста. Если узел контекста не имеет дочерних узлов <para>, выбирается пустой набор узлов.

NCName:*

True для любого узла основного типа, чье развернутое имя имеет URI-код пространства имен, до которого разворачивается имя NCName, независимо от локального имени.

child::ns:* выбирает все содержащие элементы дочерние узлы, входящие в пространство имен с префиксом ns.

Замечания

Если задан тип имени QName, то выражение XPath сначала разворачивает имя QName, основываясь на контекстных объявлениях пространств имен в XML-файле. Процесс разворачивания идентичен процессу разворачивания для имен элементов в открывающем и закрывающем тегах, за исключением того, что в этом случае не используется пространство имен по умолчанию, объявленное с префиксом xmlns. Если имя QName не содержит префикса, то выражение XPath ищет узлы, чьи локальные имена совпадают с заданным именем QName и чей URI-код пространства имен имеет значение NULL. Тип имени QName вызовет ошибку, если префикс QName не соответствует ни одному из контекстных объявлениях пространств имен в файле.

Если задан тип имени NCName:*, то выражение XPath развертывает имя NCName тем же образом, что и префикс имени QName. Точно так же тип имени NCName:* вызывает ошибку, если часть имени NCName не соответствует ни одному из префиксов, содержащихся в контекстных объявлениях пространств имен в файле.

См. также

Справочник

Проверки узлов
Проверки типов узлов
Проверки целевых инструкций по обработке