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


Выражения пути (XQuery)

Область применения: SQL Server

Выражения пути XQuery определяют местонахождение узлов, например элементов, атрибутов и текстовых узлов, в документе. Результат выражения пути всегда возвращается согласно порядку расположения узлов в документе, и узлы в результирующей последовательности не дублируются. Указывая путь, можно использовать полный или сокращенный синтаксис. Далее рассматривается полный синтаксис. Сокращенный синтаксис описывается ниже в этом разделе.

Примечание.

Так как примеры запросов в этом разделе указываются для столбцов типа XML , CatalogDescription и Instructions, в таблице ProductModel необходимо ознакомиться с содержимым и структурой XML-документов, хранящихся в этих столбцах.

Путь в выражении может быть относительным или абсолютным. Ниже приведено описание обоих типов.

  • Выражение относительного пути составляется из одного или более шагов, разделенных одним или двумя знаками косой черты (/ или //). Например child::Features — выражение относительного пути, где Child относится только к дочерним узлам текущего узла. Текущим называется узел, обрабатываемый в данный момент. Выражение извлекает дочерние <элементы элемента Features> для узла контекста.

  • Выражение абсолютного пути начинается с одного или двух знаков косой черты (/ или //), за которыми следует необязательный относительный путь. Например, знак косой черты в начале выражения /child::ProductDescription означает, что это выражение абсолютного пути. Так как знак косой черты в начале выражения возвращает корневой узел документа узла контекста, выражение возвращает все <дочерние элементы элемента ProductDescription> корневого каталога документа.

    Если абсолютный путь начинается с одного знака косой черты, за ним может следовать относительный путь, а может и не следовать. Если выражение содержит только один знак косой черты, возвращается корневой узел для текущего узла. В типе данных XML это узел документа.

Типичное выражение пути состоит из шагов. Например, абсолютное выражение пути содержит два шага, /child::ProductDescription/child::Summaryразделенных косой чертой.

  • Первый шаг извлекает дочерние <элементы элемента ProductDescription> корневого каталога документа.

  • Второй шаг извлекает дочерние <узлы элемента Summary> для каждого полученного <узла элемента ProductDescription> , который, в свою очередь, становится узлом контекста.

Шаг в выражении пути может быть шагом оси или основным шагом.

Шаг оси

Шаг оси в выражении пути включает в себя следующие компоненты.

ось
Определяет направление движения. Шаг оси в выражении пути, начинающегося с текущего узла и ведущего к узлам, доступным в направлении, указанным осью.

Тест узла
Задает тип или имена узлов, которые будут выбраны.

Ноль или более необязательных предикатов
Фильтруют узлы, выбирая одни и пропуская другие.

В следующих примерах используется ось в выражениях пути:

  • Выражение абсолютного пути /child::ProductDescription содержит только один шаг. Оно определяет ось (child) и проверку узла (ProductDescription).

  • Выражение относительного пути child::ProductDescription/child::Features содержит два шага, разделенных косой чертой. Оба шага задают ось — дочерние элементы. ProductDescription и Features — проверки узлов.

  • Выражение относительного пути содержит два шага, child::root/child::Location[attribute::LocationID=10]разделенных косой чертой. Первый шаг определяет ось (child) и проверку узла (root). Второй шаг содержит все три компонента шага оси: ось (child), проверку узлов (Location) и предикат ([attribute::LocationID=10]).

Дополнительные сведения о компонентах шага оси см. в разделе "Указание оси" в шаге выражения пути, указание теста узла в шаге выражения пути и указание предикатов в шаге выражения пути.

Основной шаг

Основной шаг представляет собой обычное выражение, значением которого должна быть последовательность узлов.

Реализация XQuery в SQL Server допускает основные шаги в первых шагах выражений пути. Далее приведены примеры выражений пути с использованием основных шагов.

(/a, /b)/c  
id(/a/b)  

Дополнительные сведения о функции идентификатора см. в разделе "Функция идентификатора" (XQuery).

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

Указание оси на шаге выражения пути
Описывает работу с шагом оси в выражениях пути.

Указание теста узла на шаге выражения пути
Описывает работу с проверкой узлов в выражениях пути.

Указание предикатов на шаге выражения пути
Описывает работу с предикатами в выражениях пути.

Использование сокращенного синтаксиса в выражении пути
Описывает использование сокращенного синтаксиса в выражениях пути.