Модифициране на XML данни с XQuery Update
-
Upload
tsvetanka-georgieva -
Category
Data & Analytics
-
view
101 -
download
4
Transcript of Модифициране на XML данни с XQuery Update
МОДИФИЦИРАНЕ НА XML ДАННИ С XQUERY UPDATE–
СЪДЪРЖАНИЕ
Добавяне на връх
Изтриване на върхове
Модифициране на върхове
Преименуване на връх
Трансформиране на връх
Вградената функция fn:put
Функцията file:write в BaseX
Функции, дефинирани от потребителя в XQuery
Актуализиращи функции, дефинирани от потребителя в
XQuery
2 2 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА XML ДАННИ С XQUERY UPDATE
XQuery Update
разширение на езика XQuery;
получава статус на препоръчвана спецификация от W3C
през 2011 година;
позволява изпълняване на следните операции:
добавяне на връх (insert);
изтриване на връх (delete);
заместване на връх и модифициране на връх чрез
промяна на някое от неговите свойства и запазване
на идентичност на върха (replace);
преименуване на връх (rename);
създаване на модифицирано копие на връх с нова
идентичност на върха (copy). 3 3 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ
insert (node | nodes)
SourceExpr
InsertExprTargetChoice
TargetExpr
Изразът insert добавя 0 или повече върхове-източници на
определена позиция спрямо връх-приемник, където:
изразът InsertExprTargetChoice има вида:
( (as (first | last))? into )
| after
| before
4 4 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ
Изразът SourceExpr трябва да представя 0 или повече
върхове-източници;
Изразът TargetExpr трябва да представя един връх-
приемник;
Ако е зададено before или after, тогава върховете-
източници се добавят като предшестващи или следващи
братя (наследници на един и същи връх) на върха-приемник;
Ако е зададено as first into или as last into,
тогава върховете-източници се добавят като първи или
последни наследници на върха-приемник;
5 5 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ
Ако е зададена ключовата дума into без as first или as
last, върховете-източници се добавят като наследници на
върха-приемник, като позицията, където върховете се
добавят зависи от реализацията;
Ако се добавят множество върхове чрез един израз insert,
върховете остават съседни и техният ред запазва
подреждането на върховете, указано в SourceExpr;
Ключовите думи node и nodes са взаимнозаменяеми,
независимо от брой на действително въведените върхове.
6 6 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (1)
Добавяне на елемент speciality като последен
наследник на елемента students.
7 7 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (1)
Добавяне на елемент speciality като последен
наследник на елемента students. insert node
<speciality specId="t2">Математика и информатика
</speciality>
as last into /students
8 8 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (2)
Добавяне на елемент student като предшестващ брат на
елемента student, който има елемент-наследник
studentnumber със стойност "17654".
insert node <student studId="s3"/>
before /students/student[studentnumber="17654"]
9 9 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (3)
Добавяне на елементите speciality, които имат
поделемент specialityname със стойност "Информатика"
от документ StudentsDB.xml като наследници на
елемента department, който има поделемент
departmentName със стойност "Математика и
информатика" в документа departments.xml.
insert nodes
doc("StudentsDB.xml")/students/speciality[specialityname =
"Информатика"]
into /departments/department[departmentName =
"Математика и информатика"]
10 10 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (3)
insert nodes
doc("StudentsDB.xml")/students/speciality[specialityname =
"Информатика"]
into /departments/department[departmentName =
"Математика и информатика"]
11 11 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (4)
Добавяне на елемент phonenumber като последен
поделемент на всеки елемент student със стойност
"unknown". for $s in /students/student
return
insert node <phonenumber>unknown</phonenumber>
as last into $s
12 12 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (5)
Добавяне на атрибут phonenumber със стойност
"877654321" на първия елемент student. insert node attribute phonenumber {"877654321"}
into /students/student[1]
13 13 Цветанка Георгиева Моделиране на информационни системи
ДОБАВЯНЕ НА ВРЪХ – ПРИМЕР (6)
Добавяне на атрибут lastupdated със стойност текущата
дата на всички елементи student. for $s in /students/student
return
insert node attribute lastupdated {fn:current-date()}
into $s
14 14 Цветанка Георгиева Моделиране на информационни системи
ИЗТРИВАНЕ НА ВЪРХОВЕ
Изразът delete изтрива определени върхове.
delete (node | nodes) TargetExpr
Изразът TargetExpr трябва да представя 0 или повече
върхове.
Ключовите думи node и nodes са взаимнозаменяеми,
независимо от брой на действително изтритите върхове.
15 15 Цветанка Георгиева Моделиране на информационни системи
Изтриване на елемент student, който има поделемент
studentnumber със стойност "17123". delete node
/students/student[studentnumber="17123"]
ИЗТРИВАНЕ НА ВЪРХОВЕ – ПРИМЕР (7)
16 16 Цветанка Георгиева Моделиране на информационни системи
Изтриване на последния елемент student.
delete node /students/student[last()]
ИЗТРИВАНЕ НА ВЪРХОВЕ – ПРИМЕР (8)
17 17 Цветанка Георгиева Моделиране на информационни системи
Изтриване на поделементите address на всички елементи
student.
delete node /students/student/address
ИЗТРИВАНЕ НА ВЪРХОВЕ – ПРИМЕР (9)
18 18 Цветанка Георгиева Моделиране на информационни системи
Изтриване на всички елементи phonenumber със стойност
"unknown". delete node
/students/student[phonenumber="unknown"]/phonenumber
ИЗТРИВАНЕ НА ВЪРХОВЕ – ПРИМЕР (10)
19 19 Цветанка Георгиева Моделиране на информационни системи
Изтриване на атрибута phonenumber на първия елемент
student.
delete node /students/student[1]/@phonenumber
ИЗТРИВАНЕ НА ВЪРХОВЕ – ПРИМЕР (11)
20 20 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА ВЪРХОВЕ
Изразът replace модифицира определен връх.
replace (value of)? node TargetExpr with
SourceExpr
Изразът TargetExpr трябва да представя точно един връх.
Ако ключовите думи value of не е са включени:
Изразът замества върха, получен от TargetExpr, с
последователност от 0 или повече върхове, върнати от
SourceExpr;
Заместващите върхове заемат позицията в документа, на
която се е намирал заменения връх.
Ако ключовите думи value of са включени, изразът
модифицира стойността на върха, като запазва неговата
идентичност.
21 21 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА ВЪРХОВЕ – ПРИМЕР (12)
Заместване на първия елемент student с втория елемент
phdstudent в XML документа phd.xml. replace node /students/student[1]
with doc("phd.xml")/phdstudents/phdstudent[2]
22 22 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА ВЪРХОВЕ – ПРИМЕР (13)
Заместване на стойността на поделемента studentnumber
на първия елемент student със стойността "77897".
Идентичността на променения елемент studentnumber се
запазва. replace value of node
/students/student[1]/studentnumber
with "77897"
23 23 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА ВЪРХОВЕ – ПРИМЕР (14)
Добавяне на низа ", гр. Велико Търново" към
стойността на елемента address, който е наследник на
първия елемент student. replace value of node /students/student[1]/address
with fn:concat(/students/student[1]/address,
", гр. Велико Търново")
24 24 Цветанка Георгиева Моделиране на информационни системи
МОДИФИЦИРАНЕ НА ВЪРХОВЕ – ПРИМЕР (15)
Добавяне на низа ", гр. Велико Търново" към
стойностите на всички елементи address, които са
наследници на student. for $a in /students/student/address
return replace value of node $a
with fn:concat($a, ", гр. Велико Търново")
25 25 Цветанка Георгиева Моделиране на информационни системи
ПРЕИМЕНУВАНЕ НА ВРЪХ
Изразът rename променя на името на елемент.
rename node TargetExpr as NewNameExpr
TargetExpr трябва да представя точно един връх;
NewNameExpr трябва да представлява стрингова стойност.
26 26 Цветанка Георгиева Моделиране на информационни системи
ПРЕИМЕНУВАНЕ НА ВРЪХ – ПРИМЕР (16)
Преименуване на атрибута studentIn на втория елемент
student на ofSpeciality.
rename node /students/student[2]/@studentIn
as "ofSpeciality"
27 27 Цветанка Георгиева Моделиране на информационни системи
ПРЕИМЕНУВАНЕ НА ВРЪХ – ПРИМЕР (17)
Преименуване на атрибутите studentIn на всички
елементи student на ofSpeciality.
for $s in /students/student
return rename node $s/@studentIn
as "ofSpeciality"
28 28 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ
Изразът copy създава модифицирано копие на
съществуващи върхове в XML документ и представя
резултата.
Първоначалният документ не се модифицира;
Всеки създаден връх има нова идентичност. copy $VarName := SourceExpr
modify ModifyingExpr
return TargetExpr
Изразът копира върха, получен от израза SourceExpr, в
променливата $VarName;
След това изразът модифицира върха, както е зададено чрез
ModifyingExpr;
Накрая изразът връща TargetExpr.
29 29 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ – ПРИМЕР (18)
Създаване на копие на първия елемент student,
изключвайки неговите елементи-наследници address.
copy $s := /students/student[1]
modify delete node $s/address
return $s
30 30 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ – ПРИМЕР (19)
Извличане на всички елементи student, изключвайки
техните елементи-наследници address. for $s in /students/student
return
copy $a := $s
modify delete node $a/address
return $a
31 31 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ – ПРИМЕР (20)
Копиране на връх, модифициране на върха и връщане на
първоначалния и модифицирания връх. let $oldx := /students/student[1]/studentnumber
return copy $newx := $oldx
modify (rename node $newx as "topic-thesis",
replace value of node $newx
with fn:concat($newx, "-phd"))
return ($oldx, $newx)
32 32 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ – ПРИМЕР (21)
Ако елементът student има атрибут lastupdated, се
актуализира неговата стойност на текущата дата;
в противен случай се добавя такъв атрибут със стойност
текущата дата. for $s in /students/student
return
if ($s/@lastupdated)
then replace value of node
$s/@lastupdated with fn:current-date()
else insert node attribute
lastupdated {fn:current-date()}
into $s
33 33 Цветанка Георгиева Моделиране на информационни системи
ТРАНСФОРМИРАНЕ НА ВРЪХ – ПРИМЕР (21)
Ако елементът student има атрибут lastupdated, се
актуализира неговата стойност на текущата дата;
в противен случай се добавя такъв атрибут със стойност
текущата дата. for $s in /students/student
return
if ($s/@lastupdated)
then replace value of node
$s/@lastupdated with fn:current-date()
else insert node attribute
lastupdated {fn:current-date()}
into $s
34 34 Цветанка Георгиева Моделиране на информационни системи
ВГРАДЕНАТА ФУНКЦИЯ FN:PUT
Функцията put служи за запазване на елемент на документ
на местоположението, указано в $uri.
fn:put($node as node(),
$uri as xs:string) as empty-sequence()
Външните ефекти от изпълнението на функцията fn:put са
зависими от реализацията, тъй като се явяват извън обхвата
на XQuery.
Ако бъде изпълнена функцията fn:put без да е възникнала
грешка, следващи заявки могат да осъществяват достъп до
записания документ чрез функцията fn:doc с използване
на същия URI.
35 35 Цветанка Георгиева Моделиране на информационни системи
ВГРАДЕНАТА ФУНКЦИЯ FN:PUT Префиксът "fn" е специален в XQuery, тъй като е
предварително дефиниран, за да съответства на URI адреса
на именното пространство за вградени функции на XPath,
който е http://www.w3.org/2005/02/xpath-functions.
Подразбира се: declare namespace fn =
"http://www.w3.org/2005/xpath-functions";
Префиксът по подразбиране за именното пространство за
вградени функции е "fn", т.е. подразбира се:
declare default function namespace
"http://www.w3.org/2005/xpath-functions";
Пример (22)
fn:put(<a>текст</a>, 'st.txt')
36 36 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИЯТА FILE:WRITE В BASEX Функцията file:write записва сериализирана
последователност от елементи (items) в определения файл.
Ако файлът съществува, той бива презаписан. file:write($path as xs:string,
$items as item()*) as empty-sequence()
Пример (23)
file:write("d.txt",/students)
37 37 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ В XQUERY declare function prefix:function_name
($parameter as datatype)
as returnDatatype
{
Израз, който съставя тялото на функцията.
};
Името на функцията трябва да има префикс;
Ако е деклариран параметър на функция чрез задаване на
име, но без указан типа на данните, подразбира се типът
item()*, което означава произволен допустим тип данни;
Типовете на данните на параметрите могат да са атомичните
типове, дефинирани в XML Schema (например xs:double,
xs:integer, xs:string, xs:date, др.) или върхове;
Тялото на функцията се загражда във фигурни скоби.
38 38 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ В XQUERY
Тип връх Допустими стойности
node() Произволен връх
element() Произволен връх-елемент
element(student) Произволен елемент, чието име е
student
schema-element(student)
Произволен елемент, който е бил
валидиран в съответствие с
декларацията на елемента student в
схема
attribute() Произволен елемент-атрибут
attribute(*, xs:date)
Произволен атрибут, валидиран в
съответствие със схема и дефиниран
да е от тип xs:date
39 39 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ В XQUERY
При задаване на типа на параметрите и върнатата от
функцията стойност може да се укаже колко елемента са
позволени в последователността.
без индикатор за появяване – точно един елемент;
? 0 или 1 елемент;
+ 1 или повече елементи;
* произволен брой елементи (0 или повече).
От тялото на функцията може да се реферират:
дефинираните параметри;
локалните променливи, декларирани в let;
глобални променливи, декларирани в пролога за заявката;
потребителски дефинирани функции, създадени в същия
модул.
40 40 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (24)
Потребителски дефинирана функция в XQuery за намиране
на броя на студентите в специалностите. declare function local:summary
($sp as element(speciality)*)
as element(speciality-summary)*
{
for $x in $sp/@specialityOf
let $y:= $sp/../student/id($x)
return
<speciality-summary>
{ $x/../specialityname }
<student-count> { fn:count($y ) }
</student-count>
</speciality-summary>
};
41 41 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (24)
Потребителски дефинирана функция в XQuery за намиране
на броя на студентите в специалностите.
Примерен начин за извикване на функцията: <specialities>{local:summary(/students/speciality)}
</specialities>
Примерен резултат: <specialities>
<speciality-summary>
<specialityname>Информатика</specialityname>
<student-count>2</student-count>
</speciality-summary>
</specialities>
42 42 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (25)
Рекурсивна функция за намиране на максималната
дълбочина на XML документ. declare function local:depth($e as node())
as xs:integer
{
(: Връх без наследници има дълбочина 1 :)
(: В противен случай се добавя 1 към максималната дълбочина на
наследниците :)
if (fn:empty($e/*)) then 1
else fn:max(for $c in $e/*
return local:depth($c)) + 1
};
<maxdepth>{local:depth(fn:doc("studentsdb.xml"))}
</maxdepth>
Примерен резултат:
<maxdepth>5</maxdepth>
43 43 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (26)
Рекурсивна функция за пресмятане на факториела на цяло
число. declare function local:fact ($n as xs:integer)
as xs:integer
{
if ($n = 0)
then 1
else $n * local:fact($n - 1)
};
<factorial>{local:fact(13)}</factorial>
Примерен резултат: <factorial>3628800</factorial>
44 44 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (27)
Рекурсивна функция за намиране на пермутациите на n
елемента. declare function local:make_items ($i as xs:integer)
as item()*
{
if ($i < 1)
then ()
else for $j in 1 to $i
return (<item>{$j}</item>)
};
Тази функция връща елементите, например: <perm>{local:make_items(3)}</perm>
Резултатът е: <perm>
<item>1</item><item>2</item><item>3</item>
</perm>
45 45 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (27)
declare function local:permutations ($items as item()*)
as element(perm)+
{
if (fn:count($items) < 1)
then <perm>{$items}</perm>
else
for $i in 1 to fn:count($items),
$perm in local:permutations(fn:remove($items, $i))
return
<perm>
{fn:insert-before($perm/node(), 1, $items[$i])}
</perm>
};
<result>
{ local:permutations(local:make_items(6)) }
</result>
46 46 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (27)
Променливата $perm присвоява като стойности
генерираните пермутации от входната последователност с
отстранен $i-ти елемент,
след което insert-before($perm, 1, $items[$i])
добавя $i-тия елемент от входната последователност като
първи елемент в пермутацията $perm.
След свързване на $perm със стойност се създава нов
елемент perm, който се състои от $items[$i], последван от
наследниците на елемента $perm.
47 47 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ – ПРИМЕР (27)
Резултат при n=3:
48 48 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ В XQUERY
В последния пример са използвани вградени функции: fn:insert-before($target as item()*,
$position as xs:integer,
$inserts as item()*) as item()*
Връща нова последователност, конструирана от стойността на
$target със стойността на $inserts, добавена в
позицията, зададена чрез стойността на $position.
Например: let $x := ("a", "b", "c")
fn:insert-before($x, 0, "z") returns ("z", "a", "b", "c")
fn:insert-before($x, 1, "z") returns ("z", "a", "b", "c")
fn:insert-before($x, 2, "z") returns ("a", "z", "b", "c")
fn:insert-before($x, 3, "z") returns ("a", "b", "z", "c")
fn:insert-before($x, 4, "z") returns ("a", "b", "c", "z")
49 49 Цветанка Георгиева Моделиране на информационни системи
ФУНКЦИИ, ДЕФИНИРАНИ ОТ ПОТРЕБИТЕЛЯ В XQUERY
В последния пример са използвани вградени функции: fn:remove($target as item()*,
$position as xs:integer) as item()*
Връща нова последователност, конструирана от стойността
на $target чрез отстраняването на елемента на
позицията, зададена със стойността на $position.
Например: let $x := ("a", "b", "c")
fn:remove($x, 0) returns ("a", "b", "c")
fn:remove($x, 1) returns ("b", "c")
fn:remove($x, 6) returns ("a", "b", "c")
fn:remove((), 3) returns ()
50 50 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE
declare updating function prefix:function_name
($parameter as datatype)
as returnDatatype
{
Израз, който съставя тялото на функцията.
};
Синтаксисът на деклариране на функция е разширен с
опционалната ключова дума updating.
51 51 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE – ПРИМЕР (28)
Функция, която приема един елемент, стойност от тип QName
и атомична стойност.
Ако даден елемент има атрибут с дадено име QName,
функцията актуализира атрибута с дадената стойност; в
противен случай тя добавя нов атрибут с даденото име и
стойност.
52 52 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE – ПРИМЕР (28)
declare updating function
local:addattr($e as element(),
$an as xs:QName,
$av as xs:anyAtomicType)
{
let $ea := $e/attribute()[fn:node-name(.) = $an]
return
if (fn:empty($ea))
then insert node attribute {$an} {$av} into $e
else replace value of node $ea with $av
};
for $s in /students/student
return
local:addattr($s, fn:QName("", "last-updated"),
fn:current-date())
53 53 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE – ПРИМЕР (28) Функция, която приема един елемент, стойност от тип QName
и атомична стойност.
Ако даден елемент има атрибут с дадено име QName,
функцията актуализира атрибута с дадената стойност; в
противен случай тя добавя нов атрибут с даденото име и
стойност.
54 54 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE
В последния пример са използвани вградените функции:
fn:node-name()
връща квалифицирано име на връх като стойност от тип
xs:Qname;
за елементи и атрибути е имената, използвани в XML
документи;
ако името на върха не е част от някое именно
пространство, тази част от името, която представлява
именното пространство е празния низ.
55 55 Цветанка Георгиева Моделиране на информационни системи
АКТУАЛИЗИРАЩИ ФУНКЦИИ, ДЕФИНИРАНИ ОТ
ПОТРЕБИТЕЛЯ В XQUERY UPDATE
В последния пример са използвани вградените функции:
fn:empty()
проверява дали последователността е празна.
fn:QName()
връща стойност от тип xs:QName с именното
пространство, зададено със URI стойността на първия
аргумент на функцията;
ако тази стойност е празния низ, името не принадлежи на
никое именно пространство.
56 56 Цветанка Георгиева Моделиране на информационни системи