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

       

Синтаксис функциональных update-выражений


Для удобства выражения логики обработки данных мы предлагаем расширить язык XQuery функциональными update-выражениями трех видов. Выражения первого вида описывают логику "найти и заменить" (TRANSFORM REPLACE). Выражения второго вида описывают логику "вставить новый элемент" (TRANSFORM INSERT). Выражения третьего вида описывают логику "найти и удалить элемент" (TRANSFORM DELETE). Синтаксис этих видов выражений выглядит следующим образом.

1) TRANSFORM REPLACE

for $var1 in locpath1 transform replace $var2 in locpath2($var1) with expr($var1,$var2)

2) TRANSFORM INSERT

for $var1 in locpath1 transform insert [into|preceding|following] $var2 in locpath2($var1) value expr($var1,$var2)

3) TRANSFORM DELETE

for $var1 in locpath1 transform delete locpath2($var1)

В приведенных синтаксических конструкциях слова, выделенные курсивом, означают следующее:

var1, var2 - т переменные языка XQuery;

locpath1 - XPath выражение;

locpath2($var1) - XPath выражение, записанное относительно переменной $var1;

expr($var1,$var2) - выражение расширенного языка XQuery, возможно зависящее от XQuery-переменных $var1 и $var2.

Следует обратить внимание, что XPath-выражение locpath2 ограничено тем, что оно должно быть записано относительно переменной var1. Узлы, соответствующие переменной var1, являются корневыми, то есть XPath-выражение locpath2 вида var1/. вернет пустую последовательность элементов.

Далее приводится описание семантики функциональных update-выражений вида transform replace. Семантика выражений вида transform insert и transform delete будет определена путем явного представления этих выражений через выражения вида transform replace.



Содержание раздела