Модифициране на XML данни с XQuery Update

56
МОДИФИЦИРАНЕ НА XML ДАННИ С XQUERY UPDATE доц. д-р Цветанка Георгиева-Трифонова

Transcript of Модифициране на XML данни с XQuery Update

МОДИФИЦИРАНЕ НА 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 Цветанка Георгиева Моделиране на информационни системи