Przetwarzanie dokumentów XML w Oracle10g: XML DB



Podobne dokumenty
2 Natywne bazy XML Języki zapytań XQuery Źródła 14

2 Natywne bazy XML Języki zapytań XQuery Źródła 18

Model semistrukturalny

1 XML w bazach danych

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Standard SQL/XML. Wprowadzenie do XQuery

Oracle11g: Wprowadzenie do SQL

Bazy danych. Plan wykładu. Operacje w algebrze relacji. Pojcie algebry relacji. Wykład 8: Algebra relacji. SQL - cd

XML w bazie danych IBM DB2

XML Repository. Maciej Zakrzewicz.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Typy bazy danych Textract

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Spis treści. Przedmowa

Oracle PL/SQL. Paweł Rajba.

XML w bazach danych i bezpieczeństwie

Relacyjne bazy danych. Podstawy SQL

XML w bazach danych i bezpieczeństwie

Programowanie w Ruby

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Przestrzenne bazy danych Podstawy języka SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

P o d s t a w y j ę z y k a S Q L

Wykład 05 Bazy danych

Przykładowa baza danych BIBLIOTEKA

Rozszerzenia języka relacyjnych baz danych SQL

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Relacyjne bazy danych. Podstawy SQL

Systemy GIS Tworzenie zapytań w bazach danych

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Multimedialne bazy danych - laboratorium

Język SQL, zajęcia nr 1

Obiektowe bazy danych

Programowanie Obiektowe

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Modelowanie wymiarów

Bazy danych SQL. Wstp. SQL (Structured( Query Language) strukturalny jzyk zapyta

Relacyjne bazy danych a XML

Bazy danych. dr inż. Arkadiusz Mirakowski

Spis tre±ci. 1 Wst p Zawarto± rozdziaªów Projekt LoXiM... 2

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Post-relacyjne bazy danych

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Tworzenie raportów XML Publisher przy użyciu Data Templates

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Bazy danych dokumentów XML wykład 1 wprowadzenie

Struktura drzewa w MySQL. Michał Tyszczenko

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Operacja PIVOT w języku SQL w środowisku Oracle

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia. Kuba Pochrybniak

DB2 XML Extender. Opracowane na podstawie dokumentacji IBM XML Extender

Bazy danych. Plan wykáadu. Zale*noci funkcyjne. Wykáad 4: Relacyjny model danych - zale*noci funkcyjne. A B

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Oracle PL/SQL. Paweł Rajba.

Paweł Rajba

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Zaawansowane bazy danych i hurtownie danych semestr I

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

1. WSTP. 2. Koncepcja platformy bezpieczestwa publicznego

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Pakiety podprogramów Dynamiczny SQL

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

SIECI KOMPUTEROWE I BAZY DANYCH

Ref. 7 - Język SQL - polecenia DDL i DML

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Hurtownie danych - przegląd technologii

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

15. Funkcje i procedury składowane PL/SQL

Wykład 8. SQL praca z tabelami 5

1. Informacje ogólne.

SQL (ang. Structured Query Language)

Narzdzia wspomagajce bezpieczne utrzymanie ruchu maszyn cz 2. Moliwo rozbudowy systemu INSTO

Bloki anonimowe w PL/SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Database Connectivity

Zadania do wykonaj przed przyst!pieniem do pracy:

Komunikacja z bazą danych psql

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Wprowadzenie do kompilatorów

Transkrypt:

Przetwarzanie dokumentów XML w Oracle10g: XML DB Maciej Zakrzewicz Politechnika Poznaska Streszczenie System zarzdzania baz danych Oracle10g posiada szereg wbudowanych mechanizmów, słucych do przechowywania, udostpniania, wyszukiwania i przetwarzania dokumentów XML w bazie danych. Najwaniejszymi elementami tej zbiorczej funkcjonalnoci, okrelanej mianem XML DB, s: typ danych XMLType, umoliwiajcy umieszczanie dokumentów XML w kolumnach tabel relacyjnych, mechanizmy odwzorowywania dokumentów XML w struktury relacyjne, elementy jzyka zapyta SQL/XML, parsery dokumentów XML, moduł transformacji XSLT wewntrz bazy danych, repozytorium dokumentów XML DB Repository. Referat stanowi szczegółowy przegld funkcjonalnoci elementów XML DB oraz ich zastosowa. 1 Wprowadzenie W ostatnich latach gwałtownie wzrosło zapotrzebowanie na przetwarzanie i przechowywanie danych zapisanych w formacie XML. Poniewa do efektywnego i bezpiecznego przechowywania danych najczciej wykorzystuje si systemy baz danych, dlatego bardzo aktualnym stało si pytanie o sposoby przechowywania dokumentów XML w systemach relacyjnych i obiektowo-relacyjnych baz danych. Jeeli na dokument XML spogldamy jak na zwykły plik tekstowy, wtedy jego przechowywanie w bazie danych nie stwarza adnych nowych wyzwa (np. tabela z kolumn typu CLOB). Jeeli jednak chcielibymy, aby system zarzdzania baz danych był wiadom specyfiki posiadanych danych XML i oferował nam zaawansowane mechanizmy obróbki dokumentów, wtedy niezbdna jest dodatkowa funkcjonalno. Rozszerzenie funkcjonalnoci systemu zarzdzania baz danych Oracle10g, słuce wygodnemu gromadzeniu, generowaniu, przeszukiwaniu i przetwarzaniu dokumentów XML zostało nazwane XML DB. Niniejszy artykuł stanowi przegld własnoci najwaniejszych składników XML DB. Omówione zostan mechanizmy przechowywania dokumentów XML jako wartoci typu XMLType, moliwoci wykorzystywania schematów XML, biblioteki programisty PL/SQL słuce do parsowania dokumentów XML, rozszerzenia jzyka zapyta SQL umoliwiajce generowanie dokumentów XML na podstawie treci relacyjnej oraz mechanizm XML DB Repository, umoliwiajcy wykorzystanie bazy danych Oracle10g jako łatwo dostpnej składnicy dokumentów XML. 2 Typ danych XMLType Do przechowywania i przetwarzania dokumentów XML w obiektowo-relacyjnej bazie danych Oracle10g słuy typ danych XMLType. Kada warto typu XMLType jest odrbnym, kompletnym dokumentem XML. Fizyczne składowanie dokumentów reprezentowanych przez XMLType moe odbywa si na dwa sposoby: (1) kady dokument staje si jednym

duym obiektem CLOB (domylnie), (2) kady dokument jest dekomponowany na rekordy zapisywane w wielu tabelach relacyjnych (wymaga posiadania schematu XML). Typ XMLType moe by traktowany tak, jak kady inny obiektowy typ danych moe by uyty zarówno podczas definicji kolumny w tabeli relacyjnej, jak i podczas tworzenia tabeli obiektów. Poniej przedstawiono przykład uycia typu danych XMLType w tabeli relacyjnej. CREATE TABLE produkty_xml ( kod NUMBER(11), opis XMLType ) INSERT INTO produkty_xml VALUES (67653829370, XMLType( '<produkt> <nazwa>antena dachowa</nazwa> <symbol>1709765</symbol> <cena>85</cena> </produkt>')); select opis from produkty_xml; OPIS ------------------------------------ <produkt> <nazwa>antena dachowa</nazwa> <symbol>1709765</symbol> <cena>85</cena> </produkt> Do zaawansowanego przetwarzania dokumentów XML przechowywanych jako XMLType słu nastpujce funkcje jzyka SQL: existsnode(), extract(), extractvalue(), updatexml() i XMLTransform(). Funkcja existsnode() sprawdza, czy wartociowanie podanego wyraenia XPath wzgldem wartoci XMLType zwraca co najmniej jeden element lub wzeł tekstowy. Wynikiem działania tej funkcji jest warto 0 lub 1. Poniej przedstawiono przykład uycia funkcji existsnode(). SELECT kod FROM produkty_xml WHERE existsnode(opis, '/produkt[cena=85]') = 1; Funkcja extract() zwraca fragment dokumentu XML wskazany wyraeniem XPath. Funkcja extractvalue() zwraca warto skalarn odpowiadajc wynikowi wartociowania wyraenia XPath. Interesujce działanie realizuje funkcja updatexml(), która modyfikuje wybrane wzły w obiekcie XMLType. Argumentami funkcji updatexml() s pary: wyraenie XPath, warto, dziki czemu moliwe jest modyfikowanie kilku wzłów w ramach jednej operacji. Przykład uycia funkcji updatexml() przedstawiono poniej. UPDATE ksiazki_xml p SET VALUE(p) = updatexml(value(p), '//cena/text()', '56', '//rok/text()', 2003) WHERE extractvalue(value(p), '/ksiazka/@isbn')='83-7279-149-x' W celu skrócenia czasu odpowiedzi zapyta dotyczcych wartoci XMLType, uytkownik moe skorzysta z indeksów na wyraeniach (function-based indexes). Przykład tworzenia takiego indeksu przedstawiono poniej.

CREATE INDEX autor_idx ON ksiazki_xml p (p.extract('//autor').getstringval()) Bardzo interesujc funkcj operujc na wartociach XMLType jest XMLTransform(). Funkcja ta dokonuje transformacji dokumentu XML w oparciu o dostarczony arkusz stylów XSL. Zarówno dokument ródłowy, jak i arkusz stylów s przekazywane funkcji jako argumenty typu XMLType. Wynikiem działania funkcji jest przekształcony dokument XML, reprezentowany przez warto XMLType. 3 Wykorzystywanie schematów XML System zarzdzania baz danych Oracle10g udostpnia uytkownikom moliwoci przechowywania w bazie danych schematów XML (XML Schema), a nastpnie ich wykorzystywania do: walidacji dokumentów, automatycznego odwzorowywania dokumentów XML w struktury relacyjne, tworzenia tabel lub kolumn XMLType opartych na schematach XML oraz poprawy efektywnoci operacji DML na danych XML. W celu wykorzystywania schematu XML, w pierwszej kolejnoci uytkownik dokonuje jego rejestracji przy pomocy funkcji dbms_xmlschema.registerschema(). Rejestracja schematu pociga za sob szereg niejawnych operacji, wykonywanych przez system zarzdzania baz danych, majcych na celu przygotowanie infrastruktury dla składowania i przetwarzania dokumentów XML zgodnych z danym schematem. Operacje te obejmuj: utworzenie obiektowych typów danych SQL umoliwiajcych składowanie dokumentów XML w postaci strukturalnej oraz utworzenie domylnych tabel dla głównych elementów schematu. Uytkownik posiada moliwo wpływania na odwzorowanie wartoci XMLType opartych na danym schemacie w struktury relacyjne. Poniej przedstawiono przykład rejestracji schematu XML, a take wygenerowany typ obiektowy, słucy do odwzorowywania dokumentów. DBMS_XMLSCHEMA.registerSchema('ksiazka.xsd', '<xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:xdb="http://xmlns.oracle.com/xdb"> <xs:element name="ksiazka" xdb:sqltype="ksiazka_t"> <xs:complextype> <xs:sequence> <xs:element name="tytul" type="xs:string"/> <xs:element name="cena" type="xs:float" xdb:sqlname="cena" xdb:sqltype="float"/> <xs:element name="autorzy" minoccurs="0" maxoccurs="1" xdb:sqltype="clob"> <xs:complextype> <xs:sequence> <xs:element name="autor" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="wydawnictwo" type="xs:string"/> <xs:element name="rok" type="xs:integer"/> </xs:sequence> <xs:attribute name="isbn" type="xs:string"/> </xs:complextype> </xs:element> </xs:schema> ');

SQL> desc KSIAZKA_T KSIAZKA_T is NOT FINAL Nazwa Warto NULL? Typ -------------- ------------- ------------------ SYS_XDBPD$ XDB.XDB$RAW_LIST_T isbn VARCHAR2(4000) tytul VARCHAR2(4000) CENA FLOAT(126) autorzy CLOB wydawnictwo VARCHAR2(4000) rok NUMBER(38) W oparciu o zarejestrowany schemat, uytkownicy mog tworzy tabele, perspektywy lub kolumny typu XMLType. Podczas definiowania elementów XMLType naley wskaza adres URL, pod którym zarejestrowano schemat XML, oraz wskaza wybrany element główny schematu. Poniej przedstawiono przykład polecenia tworzcego tabel relacyjn, zawierajc kolumn XMLType opart na schemacie XML. Tak utworzona tabela bdzie odmawia przyjmowania dokumentów, które s niezgodne z zadeklarowanym schematem XML. CREATE TABLE ksiazki_col_xsd (id NUMBER, pozycja XMLType ) XMLTYPE COLUMN pozycja XMLSCHEMA "ksiazka.xsd" ELEMENT "ksiazka"; Interesujcym rozwiniciem omawianej funkcjonalnoci jest moliwo automatycznego generowania schematów XML na podstawie definicji obiektowych typów danych. Słuy do tego celu funkcja dbms_xmlschema.generateschema(), która jako argumenty przyjmuje nazw właciciela i nazw zdefiniowanego obiektowego typu danych. W wyniku funkcja zwraca wygenerowany schemat XML. Jeeli wartoci XMLType s przechowywane w postaci strukturalnej (relacyjnej), wtedy system zarzdzania baz danych oferuje mechanizm przepisywania zapyta do danych XML. Przepisywanie zapyta polega na konwersji zapyta zawierajcych wyraenia XPath do zapyta operujcych na tabelach i kolumnach ródłowych. Jest to mechanizm automatyczny, dziki któremu wykorzystane mog by klasyczne techniki indeksowania danych relacyjnych, gdy wyraenia XPath s przepisywane na proste predykaty selekcji. Poniej przedstawiono przykład transformacji zapytania skierowanego do tabeli zawierajcej dokumenty XML przechowywane strukturalnie. zapytanie oryginalne: SELECT VALUE(k) FROM katalog k WHERE extractvalue(value(k),'/katalog/ksiazka/rok ) = '2002'; zapytanie po transformacji: SELECT VALUE(k) FROM katalog k WHERE k.xmldata.ksiazka.rok = '2002';

Nowoci w systemie zarzdzania baz danych Oracle10g jest moliwo modyfikacji zarejestrowanego schematu XML przez uytkownika. Za pomoc funkcji dbms_xmlschema.copyevolve(), uytkownik moe dokona zmiany zawartoci schematu XML, nie uszkadzajc istniejcych dokumentów, ju o ten schemat opartych. 4 Perspektywy XMLType Perspektywy XMLType s perspektywami budowanymi ponad tabelami obiektoworelacyjnymi, a zwracajcymi obiekty XMLType. Umoliwiaj one przezroczyst prezentacje istniejcych danych w formacie XML. Podczas definiowania perspektyw XMLType mog by wykorzystywane schematy XML. Poniej przedstawiono przykład polecenia tworzcego i wykorzystujcego perspektyw XMLType. CREATE VIEW emp_xml_view (doc) AS SELECT XMLElement(NAME "EMPLOYEE", XMLForest(ename, job, sal)) FROM emp; SELECT doc FROM emp_xml_view v WHERE v.doc.existsnode('/employee[sal>2900]')=1 DOC ------------------------------------------------------------- <EMPLOYEE> <ENAME>JONES</ENAME> <JOB>MANAGER</JOB> <SAL>2975</SAL> </EMPLOYEE> <EMPLOYEE> <ENAME>SCOTT</ENAME> <JOB>ANALYST</JOB> <SAL>3000</SAL> </EMPLOYEE>... 5 Biblioteki programisty dla przetwarzania danych XMLType Dokumenty XML reprezentowane w postaci wartoci XMLType mog by przetwarzane przez programist PL/SQL przy pomocy biblioteki PL/SQL Parser API for XMLType (dbms_xmlparser). Biblioteka ta zawiera parser DOM, słucy do transformacji dokumentu XML do standardowej struktury drzewa Document Object Model (DOM). Programista realizuje nawigacj wewntrz drzewa DOM posługujc si inn bibliotek: PL/SQL DOM API for XMLType (dbms_xmldom). Do transformacji XSL słuy kolejna biblioteka, nazywana PL/SQL XSLT Processor for XMLType (dbms_xslprocessor). Poniej przedstawiono przykład anonimowego bloku PL/SQL, przetwarzajcego dokument XML w celu wywietlenia jego wybranych elementów na ekranie.!"#$"# %#$"$&' '"($"(# %#$!))

!"# %#$"$*+("($"(# %#$"(#$!, ' -.. /*0,, 1 - /!!,.23,45 /, 66 0 7 83,,,.,., W kolejnym przykładzie przedstawiono zastosowanie biblioteki PL/SQL XSLT Processor for XMLType do transformacji dokumentu XML znajdujcego si poza baz danych, przy pomocy zewntrznego arkusza stylów. * 3 37 3 8-6 /, ' /!3(((!,, ' '* 3!3(((!/, 3 * / /, 3# 3, '8 3/ /!9:9*45;<2!, 8,.,., 6 Rozszerzenia jzyka zapyta: SQL/XML SQL/XML stanowi cz specyfikacji jzyka zapyta SQL, opisujc sposoby wykorzystywania SQL w połczeniu z XML. SQL/XML rozszerza SQL o funkcje i operatory słuce do generowania dokumentów XML na podstawie zawartoci relacyjnej bazy danych. Podstawowymi funkcjami SQL/XML s: XMLElement(), XMLForest(), XMLGen(), XMLConcat(), XMLAgg(). Funkcja XMLElement() słuy do tworzenia elementów XML z danych, które nie s obiektami XML. Poniej przedstawiono przykład zapytania, generujcego dokument XML na podstawie zawartoci tabeli emp. SELECT e.empno, XMLElement ( NAME "emp", e.ename) AS "result" FROM emp e; ------ ------------------- 7369 <emp>smith</emp>

7499 <emp>allen</emp> 7521 <emp>ward</emp> 7566 <emp>jones</emp> 7654 <emp>martin</emp> 7698 <emp>blake</emp> 7782 <emp>clark</emp> 7788 <emp>scott</emp> 7839 <emp>king</emp> 7844 <emp>turner</emp> 7876 <emp>adams</emp> 7900 <emp>james</emp> 7902 <emp>ford</emp> 7934 <emp>miller</emp> Funkcja XMLForest() tworzy las elementów XML na podstawie danych nie bdcych obiektami XML. Podobnie działa funkcja XMLConcat(), lecz tworzy ona las elementów poprzez konkatenacj elementów XML wywiedzionych z jednego rekordu tabeli. Poniej przedstawiono przykład zapytania wykorzystujcego funkcj XMLForest(). SELECT e.empno, XMLForest (e.ename AS "name", e.sal AS "salary" ) AS "result" FROM emp e WHERE e.empno < 7600 ; EMPNO result ----- --------------------- 7369 <name>smith</name> <salary>800</salary> 7499 <name>allen</name> <salary>1600</salary> 7521 <name>ward</name> <salary>1250</salary> 7566 <name>jones</name> <salary>2975</salary> Interesujce jest take działanie funkcji XMLGen(), która pozwala generowa dokumenty XML na podstawie szablonu realizowanego na ródłowych danych relacyjnych. Poniej przedstawiono przykład zapytania wykorzystujcego funkcj XMLGen(). SELECT XMLGen ( '<emp id="{$empno}"> <name>{$name}</name> <salary>{$sal}</salary> </emp>', e.empno, e.ename AS name, e.sal ) AS "result" FROM emp e WHERE e.empno < 7600 ; result ------------------------- <emp id="7369"> <name>smith</name> <salary>800</salary> </emp>

<emp id="7499"> <name>allen</name> <salary>1600</salary> </emp> <emp id="7521"> <name>ward</name> <salary>1250</salary> </emp> <emp id="7566"> <name>jones</name> <salary>2975</salary> </emp> Funkcja XMLAgg() słuy do tworzenia lasu elementów z kolekcji elementów XML wywiedzionych z rónych rekordów tabeli. Poniej przedstawiono przykład złoonego zapytania, które generuje zbiór zagniedonych elementów XML. SELECT XMLElement ( NAME "department", XMLAttributes( e.deptno AS "number" ), XMLAgg( XMLElement ( NAME "emp", e.ename ) ) ) AS "result" FROM emp e GROUP BY e.deptno ; result ------------------------- <department number="10"> <emp>clark</emp> <emp>king</emp> <emp>miller</emp> </department> <department number="20"> <emp>smith</emp> <emp>ford</emp> <emp>adams</emp> <emp>scott</emp> <emp>jones</emp> </department> <department number="30"> <emp>allen</emp> <emp>blake</emp> <emp>martin</emp> <emp>turner</emp> <emp>james</emp> <emp>ward</emp> </department> 7 XML DB Repository Repozytorium dokumentów XML (XML DB Repository) jest usług systemu zarzdzania baz danych Oracle10g, umoliwiajc przechowywanie i udostpnianie dokumentów XML w formie wirtualnego systemu plików, implementowanego wewntrz bazy danych. Dostp do repozytorium dokumentów XML jest moliwy poprzez FTP, WebDAV/HTTP lub SQL. Dokumenty i foldery umieszczane w repozytorium s zapisywane w tabelach bazy danych. Programista moe uzyska dostp do tych tabel m.in. za pomoc funkcji pakietu dbms_xdb.

Poniej przedstawiono przykład bloku PL/SQL, który tworzy nowy folder oraz umieszcza w nim prosty dokument XML. Dokument ten bdzie nastpnie dostpny np. poprzez FTP. 67!(('.!, 6=!(('.( 6!/!"$"$*8"($"($!, 8 Podsumowanie Rozwizania zaproponowane w Oracle10g XML DB umoliwiaj projektantom baz danych standaryzacj stosowanych metod przechowywania dokumentów XML w bazie danych. Dziki ułatwieniu obsługi danych XML, wielu twórców aplikacji chtniej siga po ten format podczas realizacji własnych systemów. Niewtpliwie na szczególn uwag w obrbie całego XML DB zasługuj: typ danych XMLType oraz rozszerzenie jzyka zapyta SQL/XML. 9 Referencje [1] Krzysztof Jankiewicz, Tomasz Traczyk, Marek Wojciechowski, Maciej Zakrzewicz: 'Przechowywanie i przetwarzanie danych XML w systemach baz danych', Materiały II Szkoły PLOUG, Pozna, 2003, ISSN 1641-2117 [2] Oracle XML DB Developer s Guide 10g Release 1, dokumentacja techniczna Oracle