Выражения пути (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).
В этом разделе
Указание оси на шаге выражения пути
Описывает работу с шагом оси в выражениях пути.
Указание теста узла на шаге выражения пути
Описывает работу с проверкой узлов в выражениях пути.
Указание предикатов на шаге выражения пути
Описывает работу с предикатами в выражениях пути.
Использование сокращенного синтаксиса в выражении пути
Описывает использование сокращенного синтаксиса в выражениях пути.