Синтаксис функциональных 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.