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


Указание пути доступа (SQLXML 4.0)

Запросы XPath указываются в форме выражения. Существуют различные типы выражений. Путь доступа представляет собой выражение для выбора набора узлов относительно контекстного узла. Результатом вычисления пути доступа является набор узлов.

Типы путей доступа

Путь доступа может иметь две следующие формы.

  • Абсолютный путь доступа

    Абсолютный путь доступа начинается с корневого узла документа. Он состоит из косой черты (/), за которой необязательно следует относительный путь доступа. Косая черта (/) выбирает корневой узел документа.

  • Относительный путь доступа

    Относительный путь доступа начинается с контекстного узла документа. Путь доступа состоит из последовательности одного или нескольких шагов доступа, разделенных косой чертой (/). Каждый шаг доступа выбирает набор узлов относительно контекстного узла. Начальная последовательность шагов доступа выбирает набор узлов относительно контекстного узла. Каждый узел в этом наборе используется как контекстный узел для следующего шага доступа. Наборы узлов, определенные этим шагом, соединяются. Например, child::Order/child::OrderDetail выбирает дочерние элементы <OrderDetail> дочерних элементов <Order> контекстного узла.

    ПримечаниеПримечание

    В реализации XPath в SQLXML 4.0 каждый запрос XPath начинается в корневом контексте, даже если XPath не является явно абсолютным. Например, запрос XPath, начинающийся с «Customer» рассматривается как «/Customer». В запросе XPath Customer[Order] Customer начинается в корневом контексте, но Order начинается в контексте Customer. Дополнительные сведения см. в разделе Основные сведения об использовании запросов XPath (SQLXML 4.0).

Шаги доступа

Путь доступа (абсолютный или относительный) состоит из шагов доступа, составленных из следующих трех частей.

  • Ось

    Ось определяет древовидную связь между узлами, которые выбираются шагом доступа, и контекстными узлами. Поддерживаются оси parent, child, attribute и self. Если ось child задана в пути доступа, все узлы, выбранные запросом, будут дочерними элементами контекстного узла. Если задана ось parent, выбранный узел будет родительским узлом контекстного узла. Если задана ось attribute, выбранные узлы будут атрибутами контекстного узла.

  • Проверка узла

    Проверка узла задает тип узла, выбранного на шаге доступа. Каждая ось (child, parent, attribute и self) имеет основной тип узла. Для оси attribute основным типом узла является <attribute>. Для осей parent, child и self основным типом узла является <element>.

    Например, если в пути доступа задано child::Customer, выбираются дочерние элементы <Customer> контекстного узла. Поскольку ось child имеет основной тип узла <element>, проверка узла Customer будет иметь значение TRUE, если Customer является узлом <element>.

  • Предикаты выбора (ноль или больше)

    Предикат фильтрует набор узлов относительно оси. Указание предикатов выбора в выражении XPath напоминает указание предложения WHERE в инструкции SELECT. Предикат указывается в квадратных скобках. Применение проверки, указанной в предикатах выбора, фильтрует узлы, возвращаемые проверкой узла. Для каждого узла в фильтруемом наборе узлов выражение предиката вычисляется с этим узлом в качестве узла контекста, а количество узлов в наборе определяет размер контекста. Если для данного узла выражение предиката дает значение TRUE, то узел включается в результирующий набор узлов.

    Синтаксис шага доступа: имя оси и проверки узла, разделенные двумя двоеточиями, за которыми следует ноль или более выражений — каждое в квадратных скобках. Например, выражение XPath (путь доступа) child::Customer[@CustomerID='ALFKI'] выбирает все дочерние элементы <Customer> контекстного узла. Затем к набору узлов применяется проверка в предикате, которая возвращает только узлы элемента <Customer> со значением 'ALFKI' для атрибута CustomerID.

В этом разделе