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