plik


ÿþZaawansowane Systemy Baz Danych  ZSBD Bazy danych dokumentów XML wykBad 3  modyfikacja dokumentów WykBad przygotowaB: Krzysztof Jankiewicz Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów Trzeci wykBad dotyczcy baz danych dokumentów XML zostanie po[wicony sposobom modyfikacji dokumentów przechowywanych w bazach danych dokumentów XML. Jak do tej pory brak standardu takiego jzyka, mimo i| od kilku lat wykorzystywanych jest kilka bardziej lub mniej powszechnych rozwizaD. 1 Zaawansowane Systemy Baz Danych  ZSBD Sposoby modyfikacji dokumentów XML " Prosta wymiana, wstawianie, usuwanie dokumentów XML " DOM API " Jzyki deklaratywne  XUpdate  Rozszerzenia XQuery Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (2) Jak do tej pory brak standardu jzyka zapytaD przeznaczonego do modyfikacji dokumentów XML w bazach danych dokumentów XML. Cze[ z baz danych tego typu udostpnia jedynie mechanizmy pozwalajce na wstawianie, usuwanie i wymian caBych dokumentów. Mimo braku standardu udostpniane s ró|nego rodzaju interfejsy pozwalajce u|ytkownikom na zmian przechowywanych w bazach danych dokumentów XML. Bazy danych, które umo|liwi modyfikacj fragmentów dokumentów XML stosuj nastpujce podej[cia: - umo|liwiaj wykonywanie operacji DOM na dokumentach w nich zawartych; - umo|liwiaj wykorzystanie wyra|eD XPath, które wskazuj wzBy, na których mo|na przeprowadzi jedn lub wiele operacji takich jak: * wstawienie wzBa przed lub po wskazywanych przez wyra|enia XPath fragmentach, * modyfikacja wskazywanego wzBa, * usunicie wskazywanego wzBa, * utworzenie zmiennej, której zawarto[ bdzie identyczna ze wskazywanym wzBem, * zmiana nazwy znacznika wskazywanego elementu, - wykorzystanie rozszerzeD jzyka XQuery; Jzyk XUpdate nale|y do drugiej grupy propozycji i on zostanie przestawiony w ramach tego wykBadu jako pierwszy. Druga cz[ wykBadu skupi si na propozycji rozszerzeD jzyka XQuery. 2 Zaawansowane Systemy Baz Danych  ZSBD XUpdate " Cechy:  deklaratywny  format XML  prostota " Inicjatywa grupy XML:DB " Wykorzystywany powszechnie w bazach danych dokumentów XML: dbXML, Apache Xindice, eXist, X-Hive/DB Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (3) Jzyk XUpdate jest jzykiem stosunkowo szeroko rozpowszechnionym. Jego podstawowe cechy to: - deklaratywny charakter jzyka, - format dokumentu XML, - prostota. Jzyk XUpdate powstaB jako inicjatywa grupy XML:DB. Ta sama grupa stworzyBa XML:DB API. XUpdate jest przykBadowo wykorzystywany w bazach danych dokumentów XML takich jak: dbXML, Apache, Xindice, eXist, X-Hive/DB. 3 Zaawansowane Systemy Baz Danych  ZSBD Wymagania dotyczce zasad projektowych jzyka modyfikacji (XML:DB) " Czytelny zakres modyfikacji " Prostota " Zgodno[ ze standardami " Rozszerzalno[ " Format " Niezale|no[ od modeli " Przeznaczenie Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (4) Analogicznie do wymagaD narzuconych jzykom zapytaD przeznaczonych dla baz danych dokumentów XML przez organizacj W3C, XML:DB zdefiniowaBa wBasne wymagania dotyczce jzyka modyfikacji dokumentów XML. Wymagania te zostaBy podzielone na dwa zakresy: zasady projektowe oraz funkcjonalno[. Wymagania dotyczce zasad projektowych s nastpujce: - zakres  jzyk modyfikacji musi opisywa to w jaki sposób maj by wykonywane zapytania i modyfikacja zawarto[ci XML; - prostota  jzyk modyfikacji powinien by prosty, o du|ej sile wyrazu i czytelny dla autora; - zgodno[ ze standardami  jzyk modyfikacji powinien by zgodny ze standardami dotyczcymi: przestrzeni nazw, wyra|eD XPath, standardu XPointer; - rozszerzalno[  musi by otwarty na przyszBe rozszerzenia; - format  specyfikacja jzyka musi by elementem XML; - niezale|no[ od modeli  specyfikacja jzyka nie mo|e by zaprojektowana w sposób uzale|niajcy jzyk od obiektów XML lub modeli parserów takich jak DOM czy SAX; - przeznaczenie  jzyk musi by zdolny do wykonywania dziaBaD na rzecz cz[ci lub caBo[ci jednego lub wielu dokumentów XML; - integracja  rozwój specyfikacji jzyka modyfikacji wymaga interakcji z innymi grupami roboczymi XML:DB. W szczególno[ci z grup robocz XML Database API Working Group. 4 Zaawansowane Systemy Baz Danych  ZSBD Wymagania dotyczce funkcjonalno[ci jzyka modyfikacji (XML:DB) " Zapytania do wskazywania wzBów przeznaczonych do modyfikacji " Modyfikacja wskazanych wzBów " Wstawienie elementów do wskazanych wzBów " Usuwanie wskazanych wzBów " Ograniczanie zbioru dokumentów " Operatory logiczne " Funkcje i operatory Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (5) Omówimy teraz wymagania dotyczce funkcjonalno[ci jzyka. S one nastpujce: - zapytania  jzyk musi udostpnia prost funkcjonalno[ dotyczc zapytaD. Zapytanie jest wstpnym etapem polegajcym na wybraniu zbioru wzBów przeznaczonych do modyfikacji; - modyfikacja  jzyk musi definiowa mechanizm modyfikacji. Modyfikacja jest wyra|eniem sposobu modyfikacji zawarto[ci XML wskazanej w zapytaniu; - wstawianie  jzyk musi umo|liwia wstawianie nowych elementów XML do wzBów uzyskanych w wyniku zapytania; - usuwanie  jzyk musi umo|liwia usuwanie elementów XML z wzBów uzyskanych w wyniku zapytania; - ograniczanie  jzyk musi posiada mechanizmy ograniczajce zbiór przepytywanych dokumentów; - operatory logiczne  jzyk modyfikacji musi zawiera zbiór operatorów przeznaczonych do operacji logicznych. Zbiór ten powinien zawiera takie operatory jako 'and', 'not', 'or'; - logika  jzyk powinien udostpnia minimalny zbiór operatorów i funkcji pozwalajcych operowa na danych liczbowych, datach itp. Jzyk XUpdate oczywi[cie speBnia wszystkie te wymagania. 5 Zaawansowane Systemy Baz Danych  ZSBD XUpdate podstawowe informacje " PrzestrzeD nazw xu: http://www.xmldb.org/xupdate " Polecenia skBadaj si z dwóch cz[ci  selekcji za pomoc wyra|eD XPath fragmentów dokumentu, na których dokonana zostanie modyfikacja  okre[lenia sposobu modyfikacji wskazanych wzBów; modyfikacja mo|e mie posta: " wstawiania nowych wzBów  rozbudow dokumentów " modyfikacji  zmiany zawarto[ci dokumentów " usuwania wzBów Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (6) Wszystkie polecenia XUpdate zostaBy umieszczone w przestrzeni nazw: http://www.xmldb.org/xupdate. Polecenia dotyczce modyfikacji dokumentu XML przewa|nie skBadaj si z dwóch cz[ci: - zadaniem pierwszej cz[ci jest wskazanie za pomoc wyra|eD XPath tych fragmentów dokumentu XML, które maj podlega modyfikacji lub innej operacji; - zadaniem drugiej cz[ci polecenia XUpdate jest przewa|nie okre[lenie sposobu modyfikacji wskazanych wzBów. Modyfikacja dokumentów XML za pomoc wyra|eD XUpdate mo|e, midzy innymi, mie posta: - wstawiania nowych wzBów  rozbudow dokumentów, - modyfikacji  zmiany zawarto[ci wskazywanych wzBów, - usuwania wzBów. 6 Zaawansowane Systemy Baz Danych  ZSBD Modyfikacja " Polecenie XUpdate rozpoczyna si od elementu xu:modifications " Element xu:modifications musi posiada atrybut version deklarujcy wersj XUpdate. Obecna wersja to 1.0 " Element xu:modifications mo|e zawiera nastpujce elementy:  xu:insert-before  xu:remove  xu:rename  xu:insert-after  xu:variable  xu:append  xu:value-of  xu:update  xu:if Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (7) Polecenie modyfikacji w jzyku XUpdate rozpoczyna si elementem xu:modifications, który otacza szczegóBowe dyrektywy dotyczce konkretnych zmian. Element xu:modifications musi posiada atrybut version deklarujcy wersj XUpdate. Obecna wersja to 1.0. Dodatkowo powinien posiada deklaracj przestrzeni nazw XUpdate. Z reguBy deklaracja przestrzeni nazw tworzy prefiks o nazwie xupdate, cho mo|e przyjmowa równie| inne warto[ci, dla przykBadu xu. W dalszej cz[ci wykBadu bdzie wykorzystywany prefiks xu. Element xu:modifications mo|e zawiera nastpujce elementy: - xu:insert-before, - xu:insert-after, - xu:append, - xu:update, - xu:remove, - xu:rename, - xu:variable, - xu:value-of, - xu:if. Znaczenie wymienionych elementów zostanie szczegóBowo omówione na nastpnych slajdach. 7 Zaawansowane Systemy Baz Danych  ZSBD Wstawianie wzBów " Istniej dwie podstawowe instrukcje przeznaczone do wstawiania nowych wzBów do dokumentu:  xu:insert-before  xu:insert-after " Obie instrukcje (elementy) wymagaj atrybutu select, który za pomoc wyra|enia XPath wskazuje wzBy przed którymi, lub po których ma zosta wstawiony nowy wzeB " We wntrzu elementów xu:insert-before i xu:insert-after umieszczane s konstruktory tworzce wstawiane wzBy. Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (8) Istniej dwie podstawowe instrukcje przeznaczone do wstawiania nowych wzBów do dokumentu: - xu:insert-before  wstawia nowy wzeB przed wskazanym istniejcym ju| wzBem - xu:insert-after  wstawia nowy wzeB bezpo[rednio po wskazanym istniejcym ju| wzle Obie instrukcje (elementy) wymagaj atrybutu select, który za pomoc wyra|enia XPath wskazuje wzBy przed którymi, lub po których maj zosta wstawione nowe wzBy. Elementy xu:insert-before i xu:insert-after mog zawiera elementy (konstruktory) tworzce wzeB, który ma zosta wstawiony. Typ nowego wzBa jest zale|ny od u|ytego konstruktora. Mo|liwe konstruktory to: - xu:element  tworzy nowy wzeB bdcy elementem, - xu:attribute  tworzy nowy wzeB bdcy atrybutem, - xu:text  tworzy nowy wzeB tekstowy, - xu:processing-instruction  tworzy wzeB bdcy instrukcj przetwarzania, - xu:comment  tworzy nowy wzeB bdcy komentarzem. Na nastpnych slajdach przedstawione zostan przykBady wykorzystania powy|szych konstruktorów. 8 Zaawansowane Systemy Baz Danych  ZSBD Konstruktor elementu (1/2) " Element xu:element pozwala na utworzenie elementu. Atrybut name definiuje nazw nowotworzonego elementu. " PrzykBad: <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:insert-before select="/rowset/zespol[1]"> <xu:element name="przedmiot"> <nazwa>Przetwarzanie Danych Semistrukturalnych</nazwa> <czas_trwania>1 semestr</czas_trwania> </xu:element> </xu:insert-before> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (9) Element xu:element pozwala na utworzenie elementu. Atrybut name definiuje nazw nowotworzonego elementu. Dla przykBadu, polecenie umieszczone na slajdzie zawiera polecenie modyfikacji bie|cego dokumentu lub dokumentów znajdujcych si w bie|cej kolekcji. Atrybuty version oraz deklaracja przestrzeni nazw zostaBa umieszczona w elemencie xu:modifications. Modyfikacja polega na dodaniu wzBa przed wzBy wskazywane przez atrybut select w elemencie xu:insert-before. W naszym przypadku dodawany wzeB zostanie umieszczony przed pierwszym elementem zespol znajdujcym si we wntrzu elementu rowset. Dodawanym wzBem bdzie element o nazwie przedmiot>. Wynika to z typu elementu konstruktora, w tym przypadku xu:element, oraz warto[ci jego atrybutu name. Zawarto[ci dodawanego elementu przedmiot bdzie para elementów nazwa i czas_trwania. Zawarto[ dodawanego elementu zostaBa utworzona bez wykorzystania elementów bdcych konstruktorami. 9 Zaawansowane Systemy Baz Danych  ZSBD Konstruktor elementu (2/2) zespoly.xml przed zmian: <?xml version="1.0" encoding="UTF-8"?> <rowset> <zespol> <id_zesp>10</id_zesp> <nazwa>administracja</nazwa> <adres>piotrowo 3a</adres> </zespol> zespoly.xml po zmianie: . . . <?xml version="1.0" encoding="UTF-8"?> <rowset> <przedmiot> <nazwa>Przetwarzanie Danych Semistrukturalnych</nazwa> <czas_trwania>1 semestr</czas_trwania> </przedmiot> <zespol> <id_zesp>10</id_zesp> . . . Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (10) Na slajdzie przedstawiono przykBadowy dokument zespoly.xml przed zmian za pomoc omawianego polecenia i posta tego samego dokumentu po zastosowaniu modyfikacji XUpdate. Zwrómy uwag na dodany nowy element przedmiot i jego zawarto[. W[ród wymagaD narzuconych na jzyk modyfikacji dokumentów XML jest takie, które mówi, |e jzyk musi posiada mechanizmy ograniczajce zbiór przepytywanych i modyfikowanych dokumentów. Zwrómy uwag na to, |e skBadnia XUpdate nie pozwala na wskazywanie dokumentów XML lub ich zbiorów. Jak zatem to wymaganie jest speBnione? Polecenie modyfikacji jzyka XUpdate dotyczy mianowicie tzw. bie|cych dokumentów lub bie|cej kolekcji. W poleceniu XUpdate nie ma mo|liwo[ci bezpo[redniego wskazania na dokument bdcy odbiorc modyfikacji (mo|na to zrobi jedynie po[rednio odpowiednio definiujc wyra|enia [cie|kowe zapytania). A zatem, u|ytkownik przed wykonaniem modyfikacji musi w bazie danych dokumentów XML wskaza, który z dokumentów lub, która z kolekcji bdzie uznana za bie|c. Taki sposób rozwizania problemu ograniczania zbioru modyfikowanych dokumentów ma jedn wad. Nie ma takim przypadku mo|liwo[ci modyfikacji zbioru dokumentów w oparciu o informacje zawarte w innym zbiorze dokumentów. A zatem, dla przykBadu, nie bdzie mo|liwo[ci modyfikacji dokumentów dotyczcych zespoBów na podstawie dokumentów dotyczcych pracowników, je|eli dokumenty te nie wspóBdziel jednej kolekcji. 10 Zaawansowane Systemy Baz Danych  ZSBD Konstruktor atrybutu " Element xu:attribute pozwala na utworzenie atrybutu. Atrybut name tego elementu definiuje nazw atrybutu. <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:insert-before select="/rowset/przedmiot/nazwa"> <xu:attribute name="prowadzacy">Scott/Tiger</xu:attribute> </xu:insert-before> </xu:modifications> <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:insert-after select="/rowset/przedmiot"> <xu:element name="nowy_przedmiot"> <xu:attribute name="prowadzacy">Tiger/Scott</xu:attribute> </xu:element> </xu:insert-after> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (11) Element xu:attribute pozwala na utworzenie atrybutu. Atrybut name tego elementu definiuje nazw atrybutu. Element xu:attribute mo|e zosta u|yty jako samodzielny obiekt wstawiany do dokumentu lub te| jako uzupeBnienie definicji wstawianego elementu. W pierwszym przypadku nale|y pamita, |e atrybut umieszczany bdzie zawsze we wntrzu znacznika rozpoczynajcego okre[lony element. PrzykBad u|ycia elementu xu:attribute, jako samodzielnego elementu, zostaB zamieszczony w górnej cz[ci slajdu. Polecenie to utworzy atrybut jako wzeB przed elementem nazwa w elemencie przedmiot. Oznacza to, |e atrybut ten w rzeczywisto[ci stanie si elementem wewntrznym elementu przedmiot  bdzie jego nowym atrybutem. PrzykBad u|ycia elementu xu:attribute, jako fragmentu definicji nowowstawianego elementu, zostaB przedstawiony poni|ej i nie wymaga szerszego komentarza. 11 Zaawansowane Systemy Baz Danych  ZSBD Konstruktory wzBów tekstowych, instrukcji przetwarzania i komentarzy " Do tworzenia wzBów tekstowych sBu|y element xu:text <xu:text>native XML Database Systems</xu:text> " Do tworzenia wzBów instrukcji przetwarzania sBu|y element xu:processing-instruction. <xu:processing-instruction name="proc_ins">ver="1.0" </xu:processing-instruction> " Do tworzenia wzBów komentarzy sBu|y element xu:comment <xu:comment>Utworzono 27.06.2005 (KJ)</xu:comment> native XML Database Systems <?proc_ins version="1.0"?> <!--Utworzono 27.06.2005 (KJ)--> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (12) Oprócz wzBów elementów i atrybutów, w dokumencie XML-owym, mog znajdowa si tak|e wzBy innego typu, takie jak: wzBy tekstowe, wzBy instrukcji przetwarzania oraz wzBy komentarzy. Dla ka|dego z nich istnieje indywidualny konstruktor w polecenia XUpdate. I tak: - do tworzenia wzBów tekstowych sBu|y element xu:text, - do tworzenia wzBów instrukcji przetwarzania sBu|y element xu:processing-instruction. Atrybut name tego elementu definiuje nazw wzBa instrukcji przetwarzania, - do tworzenia wzBów komentarzy sBu|y element xu:comment. Na slajdzie umieszczono po jednym przykBadzie dla ka|dego z trzech omawianych konstruktorów. Ich u|ycie spowoduje utworzenie odpowiednio wzBa tekstowego, instrukcji przetwarzania, oraz komentarza z informacj dotyczc czasu utworzenia aktualnego slajdu. Obiekty utworzone przez omawiane konstruktory zostaBy przedstawione w dolnej cz[ci slajdu. Wszystkie te elementy mog by wykorzystane w dwojaki sposób, albo jako konstruktory indywidualnych nowotworzonych wzBów, albo te| jako fragmenty wikszych konstrukcji. 12 Zaawansowane Systemy Baz Danych  ZSBD Wstawianie zBo|onych elementów (1/2) <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:insert-after select="/rowset/zespol[1]"> <xu:element name="przedmiot"> <xu:comment>WykBad koDczy si egzaminem</xu:comment> <xu:processing-instruction name="my_prog">pomin="tak" </xu:processing-instruction> <xu:element name="nazwa"> <xu:attribute name="jzyk_wykBadowy">polski</xu:attribute> <xu:text>native XML Database Systems</xu:text> </xu:element> <xu:element name="czas_trwania"> <xu:text>1 semestr</xu:text> </xu:element> </xu:element> </xu:insert-after> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (13) Tak jak wspomniano wcze[niej, poszczególne elementy mo|na wykorzystywa jako samodzielne wstawiane wzBy, lub jako konstrukcje wikszej caBo[ci. Jako przykBad niech posBu|y nam polecenie zamieszczone na slajdzie. Pierwszy element xu:modifications rozpoczyna polecenie XUpdate, atrybuty w nim zawarte definiuj przestrzeD nazw XUpdate oraz wskazuj na wersj jzyka XUpdate. Kolejny element xu:insert-after jest pierwszym i ostatnim poleceniem zawartym w analizowanym wyra|eniu XUpdate. Polecenie to bdzie wstawiaBo nowy wzeB po wzle wskazanym za pomoc atrybutu select. Warto[ atrybutu select decyduje o tym, |e nowo- wstawiany wzeB bdzie umieszczony po pierwszym elemencie zespol znajdujcym si we wntrzu elementu rowset. Wewntrz elementu xu:insert-after rozpoczyna si definicja nowowstawianego wzBa. Element xu:element i jego atrybut name [wiadczy o tym, |e nowowstawiany wzeB bdzie elementem przedmiot. Jego zawarto[ rozpoczyna si od komentarza i instrukcji przetwarzania. Nastpnie rozpoczyna si podelement nazwa. Zawarto[ podelementu nazwa zostaBa zdefiniowana za pomoc dwóch konstruktorów xu:attribute i xu:text. Definicja elementu nazwa na tym si koDczy. Bezpo[rednio za nim rozpoczyna si definicja kolejnej skBadowej elementu przedmiot. Jest ni element czas_trwania, którego zawarto[ci jest wzeB tekstowy. 13 Zaawansowane Systemy Baz Danych  ZSBD Wstawianie zBo|onych elementów (2/2) zespoly.xml przed zmian: zespoly.xml po zmianie: <?xml version="1.0" <?xml version="1.0" encoding="UTF-8"?> encoding="UTF-8"?> <rowset> <rowset> <zespol> <zespol> <id_zesp>10</id_zesp> <id_zesp>10</id_zesp> <nazwa>administracja</nazwa> <nazwa>administracja</nazwa> <adres>piotrowo 3a</adres> <adres>piotrowo 3a</adres> </zespol> </zespol> <przedmiot> . . . <!--WykBad koDczy si egzaminem--> <?my_prog pomiD="tak"?> <nazwa jzyk_wykBadowy="polski"> native XML Database Systems </nazwa> <czas_trwania> 1 semestr </czas_trwania> </przedmiot> . . . Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (14) Na slajdzie zostaB przedstawiony przykBadowy dokument zespoly.xml przed i po zmianie za pomoc omawianego polecenia. ZakBadamy |e dokument zespoly.xml byB dokumentem roboczym (bie|cym) podczas wykonywania polecenia XUpdate. Zwrómy uwag na nowy element przedmiot wstawiony bezpo[rednio za pierwszym elementem zespol i jego zBo|on zawarto[ utworzon przy wykorzystaniu omówionych wcze[niej konstruktorów. 14 Zaawansowane Systemy Baz Danych  ZSBD Wstawianie wzBów podrzdnych " Element xu:append pozwala na dodawanie wzBów podrzdnych w stosunku do wyznaczonego " Atrybuty  select  wskazuje wzBy, do których nale|y nowotworzony wzeB wstawi, obowizkowy  child  okre[la pozycj wstawianego wzBa, opcjonalny <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:append select="/rowset/zespol"> <xu:attribute name="ID">0</xu:attribute> </xu:append> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (15) Elementy xu:insert-before i xu:insert-after dodaj wzBy przed lub po wzBach wskazywanych przez atrybut select. Nie jest to czasami wygodne rozwizanie. Za pomoc elementu xu:append mo|emy zdefiniowa polecenie polegajce na dodaniu wzBa podrzdnego w stosunku do wyznaczonego wzBa. Instrukcja xu:append posiada dwa atrybuty: - select  za pomoc którego mo|emy wskaza wzBy, do których nale|y nowotworzony wzeB wstawi. Jest to atrybut obowizkowy; - child  który definiuje pozycj dla wstawianego wzBa. Typ wyra|enia wystpujcego jako warto[ atrybutu child to liczba caBkowita. Jest to atrybut opcjonalny, je[li zostanie on pominity, wówczas nowotworzony wzeB zostanie umieszczony za ostatnim potomkiem wskazywanego wzBa. Podobnie jak w przypadku poleceD xu:insert-before i xu:insert-after, element xu:append mo|e zawiera nastpujce elementy: - xu:element, - xu:attribute, - xu:text, - xu:processing-instruction, - xu:comment. Na slajdzie przedstawiony zostaB przykBad wstawiajcy do ka|dego elementu zespóB atrybut ID o warto[ci równej 0. W przypadku wstawiania atrybutu pominicie atrybutu child byBo zamierzone. Kolejno[ atrybutów we wntrzu elementów XML nie ma bowiem znaczenia. 15 Zaawansowane Systemy Baz Danych  ZSBD Modyfikacja (1/2) " Element xu:update mo|e zosta wykorzystany do modyfikacji (zastpienia) zawarto[ci istniejcych wzBów. Obowizkowy atrybut select wskazuje na wzBy, których zawarto[ ma zosta zmodyfikowana <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:update select="/rowset/zespol[1]/nazwa"> Administracja </xu:update> </xu:modifications> <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:update select="/rowset/zespol[1]/@ID">1</xu:update> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (16) Za pomoc instrukcji XUpdate mo|emy tak|e modyfikowa zawarto[ wzBów istniejcych w dokumencie. W tym celu mo|e zosta wykorzystany element xu:update. Jego zadaniem jest zastpienie zawarto[ci okre[lonych wzBów inn zawarto[ci zdefiniowan we wntrzu elementu xu:update. Obowizkowy atrybut select wskazuje na wzBy, których zawarto[ ma zosta wymieniona. Wymiana zawarto[ci mo|e dotyczy wzBów prostych takich jak: komentarze, atrybuty, wzBy tekstowe i wzBy elementów prostych. Warto[, na któr zawarto[ wzBa bdzie wymieniana musi by prosta. Oznacza to, |e nie mo|emy, dla przykBadu, zamieni elementu zBo|onego na zawarto[ zBo|on. PrzykBad modyfikacji zawarto[ci elementu na zawarto[ci prost zostaB umieszczony na slajdzie jako pierwszy. PrzykBad modyfikacji zawarto[ci atrybutu zostaB umieszczony poni|ej. W przykBadzie pierwszym modyfikacji podlega zawarto[ elementu nazwa pierwszego z zespoBów. Zostaje ona w wyniku polecenia wymieniona na cig znaków Administracja. W przykBadzie drugim modyfikacji polega atrybut ID tego samego zespoBu. Po wykonaniu polecenia bdzie on posiadaB warto[ 1. 16 Zaawansowane Systemy Baz Danych  ZSBD Modyfikacja (2/2) <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:update select="/rowset/przedmiot/comment()[starts-with(., 'WykBad')]"> Egzamin w przyszBym semestrze </xu:update> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (17) PrzykBad modyfikacji wzBa komentarza umieszczonego we wntrzu elementu przedmiot i rozpoczynajcego si od sBowa  WykBad zostaB zamieszczony na bie|cym slajdzie. Jak wida modyfikacji mog podlega wszystkie elementy, które jeste[my w stanie wskaza za pomoc wyra|eD XPath. Nale|y zatem pamita, |e podczas konstruowania poleceD XUpdate jest dostpna peBna funkcjonalno[ wyra|eD XPath, wBcznie z predykatami, funkcjami itp.. 17 Zaawansowane Systemy Baz Danych  ZSBD Usuwanie " Usuwanie wzBów jest mo|liwe za pomoc xu:remove. Wymagany atrybut to select, wskazuje on na wzBy, które nale|y usun. <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:remove select="/rowset/przedmiot/nazwa/text()" /> </xu:modifications> <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:remove select="/rowset/przedmiot" /> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (18) Za pomoc polecenia xu:remove mo|emy usuwa niepotrzebne wzBy istniejce w dokumencie. Usuwane mog by wzBy zarówno proste jak i zBo|one. Atrybut select elementu xu:remove wskazuje wzBy majce podlega usuniciu. Element xu:remove jest elementem pustym, czyli nie posiada |adnej zawarto[ci. Na slajdzie, jako pierwszy, zamieszczono przykBad, który usunie zawarto[ tekstow elementów wskazywanych przez wyra|enie XPath "/rowset/przedmiot/nazwa/text()" Poni|ej zamieszczono przykBad, który usunie elementy przedmiot umieszczone we wntrzu elementów rowset. 18 Zaawansowane Systemy Baz Danych  ZSBD Zmiana nazwy wzBów (1/2) " Element xu:rename wykorzystywany jest do zmiany nazwy wzBów. " Zmiany mog dotyczy atrybutów i elementów. " Atrybut select wskazuje wzBy, których ma dotyczy operacja. <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:rename select="/rowset/zespol/id_zesp">nr_zespolu</xu:rename> </xu:modifications> <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:rename select="/rowset/zespol[1]">departament</xu:rename> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (19) Za pomoc elementu xu:rename u|ytkownik mo|e zmieni nazwy wybranych wzBów. Zmiany nazw mog dotyczy atrybutów i elementów. Próba zmiany innego rodzaju wzBów koDczy si bBdem. Atrybut select elementu xu:rename wskazuje wzBy, których ma dotyczy operacja. PrzykBadowa operacja przedstawiona na slajdzie jako pierwsza, pozostawi w efekcie dokument, w którym wszystkie elementy id_zesp bd zamienione na elementy nr_zespolu z zachowaniem ich zawarto[ci. Drugi przykBad dokona zmiany nazwy pierwszego elementu zespol, po modyfikacji nowa nazwa tego elementu to departament. 19 Zaawansowane Systemy Baz Danych  ZSBD Zmiana nazwy wzBów (2/2) <?xml version="1.0" encoding="UTF-8"?> <rowset> <departament> <nr_zespolu>10</nr_zespolu> <nazwa>administracja</nazwa> <adres>piotrowo 3a</adres> </departament> <zespol> <nr_zespolu>20</nr_zespolu> <nazwa>systemy rozproszone</nazwa> <adres>piotrowo 3a</adres> </zespol> . . . Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (20) PrzykBadowa posta dokumentu po modyfikacji zostaBa przedstawiona na slajdzie. Zwrómy uwag na zmienione elementy. Jak do tej chwili wszelkie modyfikacje oraz wstawianie nowych elementów powodowaBy, zmiany oparte na warto[ciach konstruowanych niezale|nie od aktualnej zawarto[ci dokumentu. Dla przykBadu wstawiali[my nowy element przedmiot, w którym wszystkie elementy definiowali[my od nowa w oparciu o konstruktory. Modyfikacja zawarto[ci nazw zespoBów czy atrybutów ID równie| byBa oparta o warto[ci staBe, niezale|ne od warto[ci oryginalnych. Wyobrazmy sobie jednak bardziej zBo|ony przypadek. Chcemy zmodyfikowa dokument pracownicy.xml i zawarty w nim element pracownik dotyczcy pracownika o nazwisku IKSICSKI. Chcemy aby warto[ elementu placa_pod pracownika IKSICSKI posiadaBa warto[ uzyskan z elementu placa_pod pracownika YGREKOWSKI. W takim przypadku konieczna jest modyfikacja zawarto[ci dokumentu z uwzgldnieniem jego zawarto[ci pocztkowej. Aby co[ takiego byBo mo|liwe musimy we wntrzu takich elementów jak xu:insert czy xu:append odwoBa si do warto[ci uzyskanych uprzednio w wyniku zapytania. Mo|liwo[ci takie daj zmienne, które zostan omówione na kilku kolejnych slajdach. 20 Zaawansowane Systemy Baz Danych  ZSBD Zmienne " Polecenia XUpdate umo|liwiaj definiowanie zmiennych " Zmiennym mo|na przypisa warto[ci okre[lane na podstawie wyników wyra|eD XPath " Do definiowania zmiennych sBu|y element xu:variable. " Element xu:variable posiada dwa atrybuty  name  definiuje nazw zmiennej  select  sBu|y do wskazania przypisywanych warto[ci. <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:variable name=id_administracji select="//zespol[nazwa='administracja']/id_zesp"/> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (21) Wewntrz poleceD XUpdate u|ytkownik mo|e definiowa zmienne i przypisywa im warto[ci. Zmienne identyfikowane s przez nazw, a warto[ci zmiennej mo|e by obiekt dowolnego typu zwróconego przez wyra|enie XPath. Do definiowania zmiennej sBu|y element xu:variable. Posiada on dwa atrybuty: - name sBu|y do nadania nazwy zmiennej - select  za pomoc wyra|enia XPath pozwala na przypisanie zmiennej okre[lonej warto[ci PrzykBadowo, polecenie przedstawione na slajdzie definiuje zmienn o nazwie id_administracji i przypisuje jej element id_zesp znajdujcy si w elemencie zespol z podelementem nazwa, którego zawarto[ tekstowa to 'administracja'. Warto[ci zmiennej mo|e by zarówno pojedynczy wzeB, jak i las wzBów. Zmienne mo|na wykorzysta na wiele sposobów. Mo|na za ich pomoc, dla przykBadu, zmieni kolejno[ wzBów, przenie[ wzeB w inne miejsce dokumentu czy te| skopiowa wzeB. 21 Zaawansowane Systemy Baz Danych  ZSBD U|ycie zmiennych (1/2) " Aby skorzysta ze zmiennej nale|y u|y elementu xu:value-of " Element xu:value-of mo|e by wykorzystany we wntrzu operacji XUpdate. " Atrybut select wskazuje na zmienn, poprzedzon znakiem $, której warto[ ma by u|yta <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:variable name="id_administracji" select="/rowset/zespol[nazwa='administracja']/id_zesp"/> <xu:remove select="/rowset/zespol[2]/id_zesp"/> <xu:append select="/rowset/zespol[2]" child="1"> <xu:value-of select="$id_administracji"/> </xu:append> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (22) Aby skorzysta z wcze[niej zdefiniowanej zmiennej nale|y u|y elementu xu:value-of. Element xu:value-of pozwala na odwoBanie si do warto[ci zmiennej wykorzystujc j w ramach operacji XUpdate. Atrybut select elementu xu:value-of sBu|y do wskazania nazwy zmiennej, której warto[ ma zosta wykorzystana. Nazwa zmiennej w atrybucie select musi by poprzedzona znakiem $. PrzykBadowe u|ycie zmiennej zostaBo przedstawione na slajdzie. W przykBadzie do zmiennej id_administracji zostaje przypisany identyfikator zespoBu administracja. Nastpnie w tym samym poleceniu zostanie usunity element id_zesp w drugim z kolei zespole. W jego miejsce za pomoc instrukcji xu:append zostanie wstawiona warto[ wcze[niej utworzonej zmiennej. 22 Zaawansowane Systemy Baz Danych  ZSBD U|ycie zmiennych (2/2) <xu:modifications version="1.0" xmlns:xu="http://www.xmldb.org/xupdate"> <xu:variable name="kopia" select="/rowset/zespol[2]/*[2]"/> <xu:remove select="/rowset/zespol[2]/*[2]"/> <xu:append select="/rowset/zespol[2]" child="1"> <xu:value-of select="$kopia"/> </xu:append> </xu:modifications> Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (23) W drugim przykBadzie drugi element umieszczony w drugim elemencie zespol przenosimy na miejsce pierwsze. Innymi sBowy zamieniamy pozycjami podelement pierwszy i drugi drugiego zespoBu. Tak jak wspomniano wcze[niej przy u|yciu zmiennych mo|na: zmieni kolejno[ wzBów, przenie[ wzeB w inne miejsce dokumentu czy te| skopiowa wzeB. Nie mo|na niestety ingerowa w warto[ przypisan zmiennej co oznacza, |e, dla przykBadu, nie podniesiemy pBacy IKSICSKIEMU o 10 zB, nie dodamy do istniejcej nazwy zespoBu kolejnego czBonu np. "i Zarzdzania" itp. Kolejn wad jzyka XUpdate jest brak mo|liwo[ci stosowania zaawansowanych konstrukcji takich jak wyra|enia ilo[ciowe lub mo|liwo[ zdefiniowania sekwencji zmian. Dla przykBadu, w jzyku XUpdate mo|emy zamieni miejscami dwa elementy np. placa_pod i nazwisko. Robimy to wykorzystujc zmienne. Niestety operacj tak mo|emy wykona na rzecz jednego elementu pracownik. Nie ma mo|liwo[ci zamiany tych elementów w wielu elementach pracownik za pomoc jednego polecenia. Musieliby[my to wykonywa wielokrotnie, indywidualnie dla ka|dego pracownika! Z analogicznych powodów nie mo|emy zdefiniowa modyfikacji, która umie[ci atrybut ID w kolejnych elementach zespol, a warto[ wstawianego atrybutu oprze o zawarto[ elementu id_zesp bdcego elementem podrzdnym dla ka|dego z elementów zespol. Innymi sBowy, to do czego przyzwyczaiB nas, dla przykBadu, jzyk SQL w relacyjnych systemach baz danych, po prostu nie jest osigalne za pomoc jzyka XUpdate. KoDczc opis jzyka XUpdate, nale|y zaznaczy, |e istnieje wiele lokalnych jego rozszerzeD, eliminujcych powy|sze wady. PrzykBadem mo|e by tu wersja jzyka XUpdate wykorzystywana w ramach projektu Orbeon Presentation Serwer (http://www.orbeon.com/ops/doc/processors-xupdate). 23 Zaawansowane Systemy Baz Danych  ZSBD Rozszerzenia XQuery  wstp " Polecenia XUpdate pozwalaj na definiowanie bardzo prostych modyfikacji. " Rozwizaniem jest u|ycie jzyka o wikszej ekspresji. " W chwili obecnej wysuwane s propozycje rozszerzenia jzyka XQuery o mo|liwo[ci modyfikacji. " Wymagania W3C dotyczce jzyka zostaBy podzielone na cztery podstawowe grupy: wymagania ogólne, powizanie z XQuery, funkcjonalno[, wBasno[ci transakcji. " W przypadku wielu baz danych u|ywane s lokalne rozszerzenia XQuery Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (24) Polecenia XUpdate pozwalaj na definiowanie bardzo prostych modyfikacji, co w wielu przypadkach mo|e by dalece niewystarczajce. Rozwizaniem jest u|ycie jzyka o wikszej ekspresji. Obecnie przez W3C XQuery working group wysuwane s propozycje rozszerzenia jzyka XQuery o mo|liwo[ci modyfikacji. Analogicznie jak w przypadku XML:DB XUpdate Working Group, tak samo W3C XQuery Working Group zdefiniowaBo wymagania dotyczce jzyka modyfikacji dla baz danych dokumentów XML. ZostaBy one podzielone na cztery podstawowe grupy: wymagania ogólne, powizanie z XQuery, funkcjonalno[, wBasno[ci transakcji. W przypadku wielu bazach danych dokumentów XML ju| w chwili obecnej u|ywane s lokalne rozszerzenia XQuery, przykBadem mo|e by tutaj Tamino firmy Software AG. 24 Zaawansowane Systemy Baz Danych  ZSBD Wymagania dotyczce jzyka modyfikacji (W3C) (1/2) " Wymagania ogólne  s zbli|one do wymagaD nakBadanych na jzyk zapytaD. Obejmuj zagadnienia: skBadni, deklaratywno[ci, niezale|no[ci od protokoBów, obsBugi bBdów, statycznej kontroli typów " Powizanie z XQuery  funkcjonalno[ modyfikacji musi by zdefiniowana w oparciu o model danych XQuery i XPath oraz o specyfikacj XQuery. Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (25) Tak jak wspomnieli[my wcze[niej wymagania dotyczce jzyka modyfikacji zostaBy podzielone na cztery podstawowe grupy: wymagania ogólne, powizanie z XQuery, funkcjonalno[, wBasno[ci transakcji. Wymagania ogólne  s zbli|one do wymagaD nakBadanych na jzyk zapytaD. SzczegóBowe wymagania s nastpujce: - wymagania dotyczce skBadni: mo|e istnie wiele postaci skBadni. Jedna ze skBadni musi by czytelna dla czBowieka, jedna musi mie format XML; - jzyk modyfikacji musi by deklaratywny; - jzyk musi by niezale|ny od wykorzystywanych protokoBów; - musi mie zdefiniowane standardowe warunki wystpienia bBdów podczas ewaluacji polecenia; - jzyk modyfikacji powinien udostpnia opcjonaln statyczn kontrol typów. Wymagania dotyczce powizania z XQuery  dotycz dwóch zagadnieD: modelu danych oraz funkcjonalno[ci XQuery. SzczegóBowe wymagania s nastpujce: - funkcjonalno[ jzyka modyfikacji musi by zdefiniowana w oparciu o model danych XQuery i XPath; - wBasno[ci jzyka modyfikacji musz by oparte o specyfikacj XQuery. Jzyk modyfikacji musi wykorzystywa XQuery do wskazywania wzBów przeznaczonych do modyfikacji. Jzyk modyfikacji musi wykorzystywa XQuery do wskazywania wzBów u|ywanych przy modyfikacji. 25 Zaawansowane Systemy Baz Danych  ZSBD Wymagania dotyczce jzyka modyfikacji (W3C) (2/2) " Funkcjonalno[  jzyk musi udostpnia takie operacje jak: usuwanie, wstawianie, wymian, zmiany warto[ci, modyfikacje, przenoszenie, warunkowe modyfikacje, iteracyjne modyfikacje, walidacje w oparciu o schemat, Bczenie sekwencji operacji modyfikacji, parametryzacje. " WBasno[ci transakcji  modyfikacje musz gwarantowa speBnienie podstawowych wBasno[ci transakcji takich jak: Atomowo[, Spójno[, Izolacja i TrwaBo[ Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (26) Wybrane wymagania dotyczce funkcjonalno[ci jzyka modyfikacji s nastpujce: - jzyk modyfikacji musi dawa mo|liwo[ zmiany wBasno[ci istniejcych wzBów z zachowaniem ich to|samo[ci. Jednocze[nie musi umo|liwia wykonanie nowej kopii wzBa i wykonanie na nich odpowiednich zmian; - jzyk musi umo|liwia usuwanie wzBów; - musi umo|liwia wstawianie nowych wzBów w [ci[le okre[lone miejsca; - jzyk musi dawa mo|liwo[ wymiany wzBów; - powinien dawa mo|liwo[ zmiany takich wBasno[ci wzBa jak: nazwa, typ, zawarto[ itp.; - mo|e umo|liwia przenoszenie wzBów z jednej lokalizacji do innej; - musi umo|liwia wykonywanie warunkowych modyfikacji; - musi umo|liwia iteracj po zbiorze wzBów w celu ich indywidualnej modyfikacji; - mo|e wspiera jawn walidacj w oparciu o Schemat XML z zachowaniem to|samo[ci wzBów; - jzyk musi dawa mo|liwo[ Bczenia operatorów modyfikacji z innymi operatorami modyfikacji; - jzyk modyfikacji powinien umo|liwia parametryzacj operacji modyfikacji. Ponadto W3C definiuje zaBo|enia dotyczce zachowywania podczas operacji wykonywanych za pomoc jzyka modyfikacji podstawowych wBasno[ci transakcji takich jak Atomowo[, Spójno[, Izolacja i TrwaBo[. Nale|y w tym momencie zaznaczy, |e obecna posta propozycji rozszerzeD jzyka XQuery o wBasno[ci modyfikacji nie speBnia jeszcze wszystkich z wymienionych zaBo|eD. 26 Zaawansowane Systemy Baz Danych  ZSBD Rozszerzenia XQuery  cechy " W poleceniach XQuery klauzula return pozwala na wygenerowanie wyniku zapytania. " Rozszerzenia w kierunku modyfikacji id w kierunku rozszerzenia funkcjonalno[ci klauzuli return o mo|liwo[ zmiany dokumentów XML " Nastpujce polecenia s brane pod uwag: INSERT, DELETE, REPLACE, RENAME " Polecenia umieszczane s w klauzuli return (mo|e by ona niejawna) w zwizku z tym mog definiowa sekwencj wyrafinowanych operacji. Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (27) W poleceniach XQuery klauzula RETURN konstruuje wynik zapytania. Rozszerzenia jzyka XQuery dotyczce modyfikacji id w kierunku rozszerzenia funkcjonalno[ci klauzuli RETURN o mo|liwo[ zmiany dokumentów XML. W chwili obecnej nastpujce polecenia s brane pod uwag: INSERT, DELETE, REPLACE, RENAME. Polecenia te umieszczane s w klauzuli RETURN , przy czym klauzula RETURN mo|e by niejawna (tak jak pozostaBe klauzule zapytania XQuery). Dziki temu, |e polecenia modyfikacji umieszczane s w ramach klauzuli return i dotycz wzBów zwracanych przez klauzul return, za pomoc jednego polecenia mo|emy zdefiniowa sekwencj wyrafinowanych modyfikacji. Na nastpnych slajdach zostan skrótowo omówione wspomniane polecenia. 27 Zaawansowane Systemy Baz Danych  ZSBD Polecenie INSERT " SBu|y do wstawiania wzBów do dokumentów XML " SkBadnia: "do" "insert" WzeBWstawiany ((("as" ("first" | "last"))? "into") | "after" | "before") WzeBDocelowy let $nr := max(doc("zespoly.xml")//id_zesp)+10 where $nr < 100 return do insert do insert <zespol> <zespol> <id_zesp>{$nr}</id_zesp> <id_zesp>60</id_zesp> <nazwa>Internet</nazwa> <nazwa>Internet</nazwa> <adres/> <adres/> </zespol> </zespol> into doc("zespoly.xml")/rowset into doc("zespoly.xml")/rowset Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (28) Polecenie INSERT sBu|y do wstawiania wzBów do dokumentów XML. Jego skBadania zostaBa przedstawiona na slajdzie. W zale|no[ci od u|ytego sBowa kluczowego (INTO, AFTER, BEFORE) umo|liwia ono wstawienie nowych wzBów do wntrza, bezpo[rednio za lub bezpo[rednio przed wskazywanym wzBem. Mo|na zatem powiedzie, |e polecenie INSERT jest odpowiednikiem instrukcji: xu:insert-before, xu:insert-after i xu:append wystpujcych we wntrzu poleceD XUpdate. PrzykBadowe polecenia wykorzystujce polecenie INSERT zostaBy przedstawione na slajdzie. Pierwsze polecenie za pomoc klauzuli LET do zmiennej $nr przypisuje najwiksz warto[ elementu id_zesp zwikszon o warto[ 10. Nastpnie po sprawdzeniu czy uzyskana warto[ nie jest wiksza ni| 100 przystpujemy do modyfikacji. Modyfikacja polega na wstawieniu nowego wzBa zespol, w którego wntrzu zostanie wykorzystana warto[ wcze[niej utworzonej zmiennej $nr. Nowy wzeB zespol zostanie wstawiony do wntrza elementu rowset. Drugi przykBad to proste wstawienie zBo|onego elementu do dokumentu  zespoly.xml . Zwrómy uwag na mo|liwo[ pominicia klauzuli RETURN. Tego typu polecenie wykona si tylko jeden raz. 28 Zaawansowane Systemy Baz Danych  ZSBD Polecenie DELETE " SBu|y do usuwania wzBów z dokumentu " SkBadnia: "do" "delete" WzeBUsuwamy for $z in doc("zespoly.xml")//zespol where every $p in doc("pracownicy.xml")//pracownik satisfies $p/id_zesp <> $z/id_zesp return do delete $z Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (29) Polecenie DELETE sBu|y do usuwania wzBów z dokumentu. SkBadnia tego polecenia zostaBa przedstawiona na slajdzie. Mo|na powiedzie, |e polecenie DELETE jest odpowiednikiem xu:remove wystpujcego w poleceniach XUpdate. Na slajdzie przedstawiono przykBadowe polecenie, które usunie zespoBy, nie posiadajce |adnych pracowników. Polecenie DELETE zostanie wykonane tyle razy, ile krotek zostanie wygenerowanych przez konstrukcj FLWOR 29 Zaawansowane Systemy Baz Danych  ZSBD Polecenie REPLACE " SBu|y do wymiany zawarto[ci wzBów w dokumentach " SkBadnia: "do" "replace" ("value" "of")? WzeBWymieniany "with" Wyra|enieProste let $prac := doc("pracownicy.xml")//pracownik[nazwisko="Jankiewicz"] return do replace value of $prac/placa_pod with "2800" Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (30) Polecenie REPLACE sBu|y do wymiany zawarto[ci wzBów w dokumentach. SkBadnia polecenia REPLACE zostaBa zaprezentowana na slajdzie. Podobnie jak w przypadku XUpdate zmiana mo|e dotyczy tylko wzBów prostych. Na slajdzie przedstawiony przykBad zmieni pBac podstawow pracownikowi o nazwisku Jankiewicz. 30 Zaawansowane Systemy Baz Danych  ZSBD Polecenie RENAME " SBu|y do zmiany nazw wzBów w dokumentach " SkBadnia: "do" "rename" WzeBDoZmianyNazwy "as" NowaNazwa for $z in doc("zespoly.xml")//zespol where $z/adres = 'piotrowo 3a' return if ($z/nazwa = 'administracja') then () else if ($z/id_zesp = 20) then ( do rename $z/id_zesp as Qname("","nr_zespolu") ) else ( do rename $z/adres as Qname("","lokalizacja") ) Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (31) Ostatnim poleceniem, które omówimy jest polecenie RENAME. SBu|y ono do zmiany nazw wzBów w dokumentach XML, a jego skBadnia, tak samo jak w przypadku poprzednio omawianych poleceD zostaBa przedstawiona na slajdzie. PrzykBad z wykorzystaniem polecenia RENAME jest troch bardziej zBo|ony Za pomoc ptli FOR do zmiennej $z bd przypisywane kolejno elementy zespol. Dla ka|dego takiego przypisania zostanie wykonane polecenie RETURN z umieszczonymi w nim instrukcjami. W przykBadzie zastosowane zostaBy mo|liwo[ci XQuery w zakresie stosowania instrukcji warunkowych. Dziki temu mo|liwa byBa nastpujca modyfikacja. Je|eli $z bdzie przypisany do zespoBu o nazwie administracja, nie zostanie wykonana |adna zmiana. W przeciwnym przypadku zostanie przeprowadzony test dotyczcy warto[ci elementu id_zesp zespoBu wskazywanego przez zmienn $z. Je|eli id_zesp bdzie miaB warto[ równ 20 wówczas element id_zesp zostanie zmieniony na nr_zespolu. Je[li warto[ id_zesp bdzie inna wówczas zmianie nazwy bdzie poddany element adres. 31 Zaawansowane Systemy Baz Danych  ZSBD Podsumowanie " Brak standardu " MaBa funkcjonalno[ popularnego XUpdate " Du|e mo|liwo[ci rozszerzeD XQuery w zakresie modyfikacji dokumentów XML Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (32) Podsumowujc, brak na chwil obecn standardu jzyka modyfikacji dla baz danych dokumentów XML. Stosunkowo popularne i powszechnie stosowane rozwizanie oparte na jzyku XUpdate jest bardzo ograniczone. Rozszerzenie jzyka XQuery o elementy modyfikacji daje du|e mo|liwo[ci w zakresie modyfikacji dokumentów XML, dlatego te| coraz cz[ciej jest ono implementowane w bazach danych dokumentów XML. PrzykBadem mo|e by baza danych eXists, która pozwala na modyfikacje swojej zawarto[ci przy wykorzystaniu zarówno jzyka XUpdate jak i XQuery. Mimo, i| rozszerzenie jzyka XQuery o mo|liwo[ci modyfikacji daje wiksz funkcjonalno[ ni| XUpdate, nale|y zauwa|y, |e trzon poleceD pozostaB ten sam. Zmianie ulegB przede wszystkim sposób wskazywania wzBów podlegajcych zmianie (w XUpdate jest to XPath) oraz sposób u|ycia zmiennych (w XQuery sposób u|ycia zmiennych daje znacznie bardziej bogate mo|liwo[ci). 32 Zaawansowane Systemy Baz Danych  ZSBD Bilbliografia " XUpdate  Specyfikacja http://xmldb-org.sourceforge.net/xupdate/index.html  X-Hive XUpdate demo www.x-hive.com/xupdate/ " Rozszerzenia XQuery  Funkcjonalno[ modyfikacji (working draft) http://www.w3.org/TR/xqupdate/  PrzykBady u|ycia http://www.w3.org/TR/xqupdateusecases/ Bazy danych dokumentów XML  wykBad 3  modyfikacja dokumentów (33) 33

Wyszukiwarka

Podobne podstrony:
Zsbd 2st 1 2 w3 tresc 1 1 kolor
ZSBD 2st 1 2 w9 tresc 1 5 kolor
Zsbd 2st 1 2 w4 tresc 1 1 kolor
ZSBD 2st 1 2 w10 tresc 1 5 kolor
ZSBD 2st 1 2 w02 tresc 1 1 kolor
Zsbd 2st 1 2 w7 tresc 1 4 kolor
Zsbd 2st 1 2 w8 tresc 1 4 kolor
Zsbd 2st 1 2 w6 tresc 1 1 kolor
ZSBD 2st 1 2 w01 tresc 1 1 kolor
ZSBD 2st 1 2 w13 tresc 1 1 kolor
BD 2st 1 2 w06 tresc 1 1 kolor
BD 2st 1 2 w05 tresc 1 1 kolor
BD 2st 1 2 w03 tresc 1 1 kolor

więcej podobnych podstron