Указание пути доступа (SQLXML 4.0)
Запросы XPath указываются в форме выражения. Существуют различные типы выражений. Путь доступа представляет собой выражение для выбора набора узлов относительно контекстного узла. Результатом вычисления пути доступа является набор узлов.
Типы путей доступа
Путь доступа может иметь две следующие формы.
Абсолютный путь доступа
Абсолютный путь доступа начинается с корневого узла документа. Он состоит из косой черты (/), за которой необязательно следует относительный путь доступа. Косая черта (/) выбирает корневой узел документа.
Относительный путь доступа
Относительный путь доступа начинается с контекстного узла документа. Путь доступа состоит из последовательности одного или нескольких шагов доступа, разделенных косой чертой (/). Каждый шаг доступа выбирает набор узлов относительно контекстного узла. Начальная последовательность шагов доступа выбирает набор узлов относительно контекстного узла. Каждый узел в этом наборе используется как контекстный узел для следующего шага доступа. Наборы узлов, определенные этим шагом, соединяются. Например, child::Order/child::OrderDetail выбирает дочерние <элементы OrderDetail> дочерних <элементов элемента Order> узла контекста.
Примечание
В реализации XPath в SQLXML 4.0 каждый запрос XPath начинается в корневом контексте, даже если XPath не является явно абсолютным. Например, запрос XPath, начинающийся с «Customer» рассматривается как «/Customer». В запросе XPath Customer[Order] клиент начинается с корневого контекста, а order начинается в контексте Клиента. Дополнительные сведения см. в статье Общие сведения об использовании запросов XPath (SQLXML 4.0).
Шаги доступа
Путь доступа (абсолютный или относительный) состоит из шагов доступа, составленных из следующих трех частей.
Ось
Ось определяет древовидную связь между узлами, которые выбираются шагом доступа, и контекстными узлами. Поддерживаются оси
parent
,child
,attribute
иself
. Если осьchild
задана в пути доступа, все узлы, выбранные запросом, будут дочерними элементами контекстного узла. Если задана осьparent
, выбранный узел будет родительским узлом контекстного узла. Если задана осьattribute
, выбранные узлы будут атрибутами контекстного узла.Тест узла
Проверка узла задает тип узла, выбранного на шаге доступа. Каждая ось (
child
,parent
,attribute
иself
) имеет основной тип узла. Для осиattribute
основным типом узла является <атрибут>. Для осейparent
,child
иself
типом основного узла является <элемент> .Например, если путь к расположению указывает child::Customer, <выбирается дочерний элемент Customer> узла контекста.
child
Так как ось имеет <элемент> в качестве основного типа узла, проверка узла Customer имеет значение TRUE, если Customer является <узлом элемента>.Предикаты выбора (ноль или больше)
Предикат фильтрует набор узлов относительно оси. Указание предикатов выбора в выражении XPath напоминает указание предложения WHERE в инструкции SELECT. Предикат указывается в квадратных скобках. Применение проверки, указанной в предикатах выбора, фильтрует узлы, возвращаемые проверкой узла. Для каждого узла в фильтруемом наборе узлов выражение предиката вычисляется с этим узлом в качестве узла контекста, а количество узлов в наборе определяет размер контекста. Если для данного узла выражение предиката дает значение TRUE, то узел включается в результирующий набор узлов.
Синтаксис шага доступа: имя оси и проверки узла, разделенные двумя двоеточиями, за которыми следует ноль или более выражений — каждое в квадратных скобках. Например, выражение XPath (путь к расположению) child::Customer[@CustomerID='ALFKI'] выбирает все дочерние <элементы Customer> узла контекста. Затем тест в предикате применяется к набору узлов, который возвращает только <узлы элементов Customer> со значением атрибута "ALFKI" для атрибута CustomerID .
В этом разделе
Определение оси (SQLXML 4.0)
Содержит примеры указания оси.
Задание проверки узла в пути доступа (SQLXML 4.0)
Содержит примеры указания проверки узла.
Указание предикатов выбора в пути доступа (SQLXML 4.0)
Содержит примеры указания предикатов выбора.