Выражения пути (XQuery)
Выражения пути XQuery определяют местонахождение узлов, например элементов, атрибутов и текстовых узлов, в документе. Результат выражения пути всегда возвращается согласно порядку расположения узлов в документе, и узлы в результирующей последовательности не дублируются. Указывая путь, можно использовать полный или сокращенный синтаксис. Далее рассматривается полный синтаксис. Сокращенный синтаксис описывается ниже в этом разделе.
Примечание |
---|
Так как образцы запросов в этом разделе требуют наличия столбцов типа xml: CatalogDescription и Instructions таблицы ProductModel, то следует ознакомиться с содержимым и структурой XML-документов, хранящихся в этих столбцах. Дополнительные сведения см. в разделе Представление типов данных XML в базе данных AdventureWorks2008R2. |
Путь в выражении может быть относительным или абсолютным. Ниже приведено описание обоих типов.
Выражение относительного пути составляется из одного или более шагов, разделенных одним или двумя знаками косой черты (/ или //). Например 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)/cid(/a/b)
Дополнительные сведения о функции id см. в разделе Функция id (XQuery).
В этом разделе
Указание оси на шаге выражения пути
Описывает работу с шагом оси в выражениях пути.Установка проверки узла в шаге выражения пути
Описывает работу с проверкой узлов в выражениях пути.Определение предикатов в шаге выражения пути
Описывает работу с предикатами в выражениях пути.Использование сокращенного синтаксиса в выражении пути
Описывает использование сокращенного синтаксиса в выражениях пути.