Классика баз данных - статьи


XQuery


В качестве языка запросов мы используем язык XQuery []. На сегодняшний день процесс стандартизации XQuery практически завершен, и в скором времени будет выпущена первая официальная версия языка. Большинство компаний, производящих коммерческие РСУБД, заявило о запланированной поддержке XQuery в ближайших версиях своих продуктов.

Неотъемлемой частью XQuery является язык XPath [], который предназначен для адресации частей XML-документов. Помимо XQuery, язык XPath также широко применяется в другом популярном языке обработке XML документов - XSLT [].

Основной конструкцией XQuery является FLWR-выражение, обладающее следующим синтаксисом:

( FOR $var1 IN expr1 | LET $var2 := expr2 )+ WHERE expr3 RETURN expr4

FLWR-выражение состоит из четырех составляющих: разделов FOR, LET, WHERE и RETURN. В разделе FOR определяется переменная $var1, которая последовательно связывается с каждым из элементов последовательности, получаемой в результате вычисления выражения expr1. В разделе LET переменная $var2 связывается со всем результатом вычисления выражения expr2. Допускается несколько разделов FOR или LET. В разделе WHERE значения переменных фильтруются на основе предиката expr3. Наконец, раздел RETURN определяет результат FLWR-выражения: выражение expr4 вычисляется для каждого связывания переменных, для которого результатом вычисления предиката в разделе WHERE секции является "истина". Результатом всего FLWR-выражения является последовательность узлов, полученных после вычисления раздела RETURN.

При помощи FLWR-выражений на XQuery можно выражать операции соединения, трансформации, группировки и т. д. Особую роль играет операция трансформации, поскольку она очень часто используется в Web-приложениях при построении динамических HTML-страниц. В XQuery операция трансформации выражается при помощи конструкторов элемента и атрибута. Примером трансформации является следующий запрос, результатом которого является новое представление книг с названием "Data on the Web" и автором "Serge Abiteboul":




- Начало -  - Назад -  - Вперед -