Upload
abbott
View
46
Download
5
Embed Size (px)
DESCRIPTION
XML kao model podataka. Prof. dr MILORAD K. BANJANIN Fakultet tehni čkih nauka, Univerzitet u Nov om Sad u. PRVENSTVENA NAMENA JE STANDARDIZACIJA STRUKTURE I SADRŽAJA DOKUMENATA. DOZVOLJAVA OPISIVANJE INDIVIDUALNIH DEFINICIJA TIPOVA DOKUMENATA (DTD ili XML Schema). - PowerPoint PPT Presentation
Citation preview
XML kao model podataka
Prof. dr MILORAD K. BANJANIN
Fakultet tehničkih nauka,Univerzitet u Novom Sadu
DOZVOLJAVA
OPISIVANJE
INDIVIDUALNIH
DEFINICIJA TIPOVA
DOKUMENATA (DTD ili
XML Schema)
OPISUJE PODATKE ALI NIŠTA NE GOVORI
O NAČINU PRIKAZIVANJA TIH PODATAKA,
DOK HTML PRVENSTVENO OPISUJE NAČIN
PRIKAZIVANJA PODATAKA
EFIKASAN I FLEKSIBILAN
JEZIK ZASNOVAN NA
SGML-u (Standard
Generalized Markup
Lanuage)
PRVENSTVENA NAMENA
JE STANDARDIZACIJA
STRUKTURE I SADRŽAJA
DOKUMENATA
JEZIK ZA OZNAČAVANJE
STRUKTURE DOKUMENTA
UNUTAR NJEGOVOG
SADRŽAJA
XML -XML -eXtensible eXtensible
Markup Markup LanguageLanguage
POSEBNO JE ZNAČAJAN KAO “SEMISTRUKTURALNI MODEL” PODATAKA KOJI SE KORISTI U INTEGRACIJI BAZA PODATAKA I
ZA NJIHOVO POVEZIVANJE SA DRUGIM IZVORIMA INFORMACIJA DOSTUPNIM PREKO INTERNETA
Može da posluži i kao “model posrednik” za transformaciju jednog
modela podataka u drugi
Definiše način kodiranja znakova, tj. definiše u kom je znakovnom kodu
XML dokument napisan
Osnove XML-a
XML dokumenti su samoopisujuće platformski nezavisne tekstualne datoteke, čija je osnovna struktura
hijerarhijska struktura elemenata, atributa i podataka tipa niza karaktera
ELEMENTI XML
dokumentaOsnovni blokovi XML-a – mogu se
tretirati kao kontejneri
Razdvajaju se preko početne i krajnje
oznake, a element koji nema sadržaj se naziva
prazan elementMogu im se pridružiti atributi, a mogu i sadržati druge elemente, nizove karaktera, reference na
druge elemente posmatranog dokumenta, komentare i/ili instrukcije obrade
<?xml version=“1.0” encoding=“UTF-8”?>
SVAKI XML DOKUMENT MORA DA SADRŽI XML DEKLARACIJU (prvu instrukciju obrade kojom se dokument identifikuje kao
XML dokument):
PI (Processing Instruction) – koristi se za prosleđivanje poruka
aplikacijama koje obrađuju XML dokument
Mogu se koristiti bilo gde u dokumentu ali se
uglavnom navode na početku
Vrsta Unicode-aSVAKI XML DOKUMENT SADRŽI JEDAN I SAMO JEDAN GLAVNI
ELEMENT – KORENI (ROOT) ELEMENT
Kontejner ostalih elemenata i ne može biti sadržan ni u jednom drugom elementu, svi ostali elementi su “deca” korenog elementa
XML podržava neograničeno ugnježdavanje elemenata, a uvek
se prvo zatvara ona oznaka elementa koja je poslednja
otvorena
Definicija opsega imena u XML dokumentu se daje preko atributa xmlns ili bilo kog stringa koji ima prefiks xmlns:
Da bi se izbegla kolizija pri davanju imena elemenata i atributa definiše se OPSEG IMENA
Po pravilu se uz element ili atribut navodi opseg imena, u suprotnom se podrazumeva opseg definisan u zaglavlju
posmatranog dokumenta
Opseg imena se definiše koristeći XML Namespace specifikaciju, a u XML dokumentu se referiše preko URI (Unified Resource
Identifier) referenceDOBRO OFORMLJEN XML DOKUMENT mora da zadovolji sledeće
uslove:
da postoji XML deklaracija dokumenta11
da poseduje samo jedan element dokumenta (koreni element) u kome su ugnježdeni svi ostali elementi i njihov sadržaj22
svi elementi i atributi u dokumentu moraju da budu sintaksno ispravni, tj. svi, osim praznog elementa, moraju imati oznaku za početak i kraj i svaka vrednost atributa mora biti unutar znaka
navoda
33
Ne mora da ima svoj specifikovani tip, a autor dokumenta može da uvodi oznake elemenata i da ih ugnježdava po svojoj želji, prateći
navedene uslove
Kada se definiše tip XML dokumenta može se uvesti i pojam validnog XML dokumenta, koji mora da poštuje strukturu definisanu u opisu
tipa dokumenta
Definisanje tipova XML dokumenata
Postoji više načina za definisanje tipova dokumenata, a W3C (World Wide Web Consortium) je ponudio dva
standardna:XML 1.0. DTD specifikacija
XML Schema - preporuka W3C od 02.05.2001. godine
Sve više se koristi za opis dokumenata jer podržava definiciju tipa podataka i poseduje mehanizam povezivanja elemenata u XML dokumentu, a i data je
preko XML sintakse čime je omogućeno njeno procesiranje kao bilo kog drugog XML dokumenta
Jedan XML jezik za specifikaciju tipova XML dokumenta odnosno za opisivanje i ograničavanje sadržaja XML dokumenta
XML dokument koji mora da zadovoljava sva XML pravila, jedno od njih je da postoji samo jedan koreni element i to je element sa nazivom schema
Sadrži definicije prostih i složenih tipova, deklaracije elemenata, deklaracije atributa, modele grupa, grupa atributa, deklaracije notacija i drugo
Uz svaki element u šemi se može dati broj njegovih pojavljivanja preko donje (minOccurs)
i gornje (maxOccurs) granice, a ako kardinalnost pojavljivanja nije data
podrazumeva se vrednost 1
Složeni tipovi, koji se definišu preko complexType, se formiraju od prostih i drugih složenih tipova korišćenjem konstruktora
SEQUENCE, CHOICE i ALL
Definiše uređenu grupu elemenata – po difoltu svaki element je obavezan (minOccurs=“1” i ) i jednoznačan (maxOccurs=“1”), a ako element nije
obavezan (minOccurs=“0”) i jednoznačan potrebno je predefinisati difolt vrednosti
Definiše grupu elemenata iz koje se mogu izvlačiti pojedinačni elementi – definišu se donja i gornja granica kardinalnosti grupe elemenata (difolt minOccurs=“0” i maxOccurs=“unbound”), a broj elemenata koji imaju minOccurs različit od nule mora da bude manji ili jednak minOccurs definisanom za celu choice kolekciju
Definiše grupu elemenata kod koje se svi elementi mogu pojaviti maksimalno jedanput – ograničenje u korišćenju ove grupe je to što ona može da sadrži samo definicije elemenata i ne može da bude direktno
ugrađena u druge grupe niti može sadržati druge grupe
Za svaki element se definiše naziv i tip (atributi name i type), a ako se tip ne navede podrazumeva se
predefinisanu anyType
Neki tipovi podataka su opisani u opsegu imena XML šeme (string, integer, float, i dr.), a tip može da bude i korisnički
definisan i to u okviru šemePRIMER
<xsd:complexType name=“StudentTip”><xsd:sequence>
<xsd:element name=“IndeksStud” type=“xsd:string”/><xsd:element name=“ImeStud” type=“xsd:string”/><xsd:element name=“AdresaStud” type=“xsd:string”
minOccurs=“0”/></xsd:sequence>
</xsd:complexType>Tada se u odgovarajućem delu opisa XML šeme student definiše
kao: <xsd:element name=“Student” type=“StudentTip”/>
Za pojedine elemente se definišu atributi, npr. za element NovčanaVrednost se može definisati atribut valuta:
<xs:attribute name=“valuta” type=“xs:string” default=“din”/>
Ukoliko se želi pridružiti neki atribut elementu prostog tipa on se mora opisati preko definicije složenog tipa – prilikom definicije složenog tipa naglašava se da on ima prost sadržaj preko definicije simpleContent
Način povezivanja XML dokumenata
Glavni mehanizam za povezivanje XML dokumenata je preko hiperlinkova i dat je specifikacijom Xlink (Extensible Linking
Language)
Veza jednog XML dokumenta sa drugim se može specifikovati u bilo kom elementu XML dokumenta preko skupa atributa
definisanog u opsegu imena http://www.w3c.org/1999/xlink
PRIMER
<ftn:ispitniRokxmlns:ftn=http://ftn.ns.ac.yuftn:predmet =“Inzenjerske analize”ftn:datumRoka =“2009-01-28”
--------------------------------xmlns:xlink =“http://www.w3c.org/1999/xlink”xlink:type =“simple”xlink:href =“spisakStudenata.xml”xlink:actuate =“onLoad”xlink:title =“Spisak studenata za Januarski rok”--------------------------------->
Spisak prijavljenih studenata</ftn:ispitniRok>
Atributi preko kojih se opisuje
veza
Zadavanje pomenutog opsega standardnih imena atributa veze
Navođenje tipa vezeNavođenje URL adrese dokumenta sa kojim se posmatrani dokument
povezuje
Definisanje trenutka u kome se uspostavlja veza (onLoad – veza se
uspostavlja na početku procesiranja polaznog dokumenta)
Daje se naziv veze
Ako se vezom želi ukazati na tačno određeni deo drugog dokumenta koristi se XPointer, a deo sa kojim se dokument povezuje adresira se
preko XPath izraza
Ograničenja
Ograničenja na vrednost prostog elementa – daju se uz sam element preko određene sintakse
11
<xs:element name=“OtpremljenaKolicina”><xs:simpleType name=“Kol” >
<xs: restriction base=“xs:float”><xs:minExclusive value=“0”/><xs:maxInclusive value=“100”/>
</xs:restriction></xs:simpleType>
</xs:element>
Strukturna ograničenja – definišu se opisom same šeme, pri čemu se i ovde posebno ukazuje na definisanje kardinalnosti elemenata i definisanje načina na koji se formira struktura
(sequence, all, choice)
22
Složena ograničenja – vezuju više vrednosti različitih elemenata po strukturi prikazane šeme
33
Ograničenje jednakosti između elemenata se može iskazati preko mehanizama ID/IDREF i Key/KeyRef.
Drugačija složena ograničenja se mogu definisati u okviru elementa <appInfo>.
Za definisanje ograničenja jedinstvenosti za vrednost nekog elementa na kolekciji elelmenata se koriste ključne reči selector (definiše opseg u kome važi jedinstvenost) i field (definiše element čija se vrednost proverava).
<xs:unique name=“jedinstveniRedniBrojStavke”><xs:selector xpath=“Stavka”/><xs:field xpath=“RedniBroj”/>
</xs:unique>Za opis složenijih ograničenja se može koristiti specifična sintaksa –
Schematron.
Ako se baza podataka definiše kao kolekcija dokumenata nekog tipa, tada postoji potreba da se definiše ključ
dokumenta tog tipa koji jedinstveno identifikuje jedan dokument u toj kolekciji
<xs:key name=“OtpremnicaKey”><xs:selector xpath=“Otpremnica”/><xs:field xpath=“Broj”/><xs:field xpath=“Dobavljac/SifraDobav”/>
</xs:key>
PRIMER
Operacije sa XML dokumentima
Kao i u većini modela, i ovde se mogu definisati navigacione i specifikacione operacije
Operacije koje omogućavaju “kretanje” kroz XML dokument, odnosno adresiranje pojedinih njegovih komponenti – skup operacija
koje nazivamo “navigacione” operacije definisane su XPath specifikacijom
Upiti preko kojih se definiše deo XML dokumenta koji se želi u rezultatu i uslov koji takav dokument treba da zadovolji – konstrukcije
za iskaz specifikacionih operacija daje upitni jezik XQuery
XPath
Jezik koji omogućava adresiranje delova ili navigaciju do delova XML dokumenta i osnovnu manipulaciju stringovima, brojevima i
logičkim podacima
XML dokument se posmatra kao stablo čvorova – termin čvor se koristi za bilo koji deo XML dokumenta (elementi, atributi,
njihove vrednosti, komentari i instrukcije obrade)
Definiše se i čvor koji se naziva koren dokumenta (jedan fiktivni, bezimeni čvor čije je dete osnovni element XML dokumenta)
Čvor se adresira preko izraza putanje, koji počinje bilo sa “/” ili sa “//”, a predstavlja niz od jednog ili više koraka razdvojenih sa
“/”
Ako putanja počinje sa “/” polazni čvor je neimenovani
koren XML dokumenta
Ako putanja počinje sa “//” polazni čvor je neki drugi čvor dokumenta dobijen na
osnovu imena, bez obzira gde se on u stablu čvorova nalazi
U izrazu putanje korak se definiše sa: “naziv_ose :: test_cvora [predikat]”
osa (axis) – pravac posmatranog koraka putanje u stablu
self – daje sam kontekstni čvor, skraćenica za nju je “.”;child – daje decu kontekstnog čvora, a predstavlja difolt osu pa se može
izostaviti iz opisa koraka;descendant – daje sve potomke kontekstnog čvora, decu, decu dece, itd.;
descendeant-or-self – daje tekući čvor i svu njegovu decu, decu dece, itd.;following-sibling – daje sve sledeće (“desne”) blizance kontekstnog čvora;following - daje sve sledeće (“desne”) blizance kontekstnog čvora i njihove
potomke isključujući čvor-atribute i čvor-prostora imena;attribute – daje sve čvor-atribute kontekstnog čvora, skraćenica za nju je “@”;namespace – daje sve čvorove decu kontekstnog čvora koji su iz istog prostora
imena kao i kontekstni čvor;parent – daje roditelja kontekstnog čvora, ako postoji, a skraćenica za nju je
“..”;ancestor – daje roditelja, roditeljeve roditelje, itd., sve do korena stabla;
ancestor-or-self – daje tekući ćvor, njegovog roditelja, roditeljeve roditelje, itd., sve do korena stabla;
preceding – daje sve prethodne (“leve”) blizance kontekstnog čvora i njihove potomke isključujući čvor-atribute i čvor-prostora imena;
preceding-sibiling - daje sve prethodne (“leve”) blizance kontekstnog čvora;
Pomoću test čvora se selektuju čvorovi određenog tipa ili datog
naziva
Zadaje se ili preko naziva čvora ili preko oznake tipa čvora koji može biti: comment,
text, processing-instruction ili node
Dodatno se selektuju oni čvorovi iz skupa čvorova koji zadovoljavaju dati
predikat
position() - vraća redni broj pojavljivanja čvora u nekom skupu;last() - vraća redni broj poslednjeg pojavljivanja;
id(objekat) – vraća čvor koji se može identifikovati preko vrednosti argumenata objekat;
name() – vraća pun naziv tekućeg čvora;local-name() ili namespace-uri() – vraća prostor imena odnosno lokalno
ime čvora;count() – agregirajuća funkcija koja se može koristiti nad grupom čvorova, a
vraća ukupan broj čvorova u datom skupu
XPath definiše četiri tipa funkcija koje omogućavaju rad sa stringovima i brojevima i dobijanje i formatiranje
podataka iz originalnog dokumenta
Funkcije čvorova
Tekstualne funkcije
substring(string, p [,d]) – izdvaja podniz iz datog niza (stringa) počev od pozicije p u dužini d;
substring-before(string, str2) i substring-after(string, str2) – vraćaju podniz iz datog niza string pre, odnosno posle pojavljivanja niza karaktera str2
u datom nizu;translate(string, str1, str2) – omogućava zamenu karaktera u datom nizu
string i to zamenjujući sve karaktere koji se pojavljuju u prvom nizu sa karakterima sa odgovarajućih pozicija u nizu str2;
normalize-space(string) – izbacuje višak blanko karaktera iz stringa;concat(str1, str2, [str3...]) – omogućava spajanje podnizova karaktera.
substring ( ‘ abcd ’ , 2 ) vraća ‘ bcd ’substring-after ( ‘ aBcd ’ , c ) vraća ‘ d ’substring-before ( ‘ aBcd ’ , B ) vraća ‘ a ’translate ( ‘ AB--C-- ’ , ‘ ABC- ’ , ‘ abc ’ ) vraća ‘ abc ’normalize-space ( ‘ a D ’ ) vraća ‘ a D ’
PRIMER
Logičke funkcije
Definišu se i logičke promenljive koje se mogu koristiti u izrazima poređenja i to false() i true(), a za negaciju se koristi funkcija not(boolean)
Numeričke funkcije
Omogućavaju manipulaciju sa brojevima i to su round(number) – zaokružuje realni broj, floor(number) –daje manji ceo broj, ceiling(number) – daje veći
ceo broj, a sum() vraća sumu svih čvorova čija je string-vrednost broj
XQuery – XML upitni jezik
Upiti se formiraju na osnovu nekoliko vrsta izraza, kombinovanih u složenije izraze korišćenjem odgovarajućih
operatora
XQuery pretpostavlja da su za dokumente koji se koriste u upitu definisane XML šeme, a koristi sve osnovne tipove podataka
definisane XML šemom
Ako šema nije definisana XQuery pretpostavlja difolt šemu u kojoj svi elementi imaju tip anyType, a svi atributi
anySimpleType
Neophodno je navesti prostor imena iz koga elementi i atributi uzimaju imena
import schema “http://www.ftn.ns.ac.yu/2008/XMLprimer” at “http://www.ftn.ns.ac.yu/koming/Studenti.xsd”
declare namespace ftn=“http://www.ftn.ns.ac.yu/2008/XMLprimer”
PRIMER
a) Upiti nad jednim XML dokumentom kojima se prikazuje prost neizmenjen sadržaj
XQuery definiše funkciju za identifikovanje XML dokumenta preko URI adrese – document(URI)
XPath obezbeđuje da se iz dokumenta izvuče neki njegov deo koji zadovoljava definisani uslov
Prikazati sve podatke o svim otpremljenim proizvodima u XML dokumentu otpremnice.xml
document ( “otpremnice.xml” ) //Proizvod/*
PRIMER
b) Upiti nad jednim XML dokumentom kojima se prikazuje izmenjeni sadržaj
XPath izrazi omogućavaju samo selektovanje postojećih čvorova XML dokumenta pa se zato definiše nova vrsta upita preko
ForLetWhereReturn (FLWR) izraza – čita se kao engleska reč “flower” - a njegov opšti iskaz je:FOR $iteratorPromenljiva IN xpath_putanja
LET $promenljiva := xpath_putanjaWHERE kvalifikacioni_izrazRETURN xml_konstrukcija
Promenljive se označavaju sa prefiksom “$”
Definiše iterator promenljivu koja uzima vrednosti iz skupa čvorova definisanog preko
putanjeDodeljuje promenljivoj vrednosti izraza
putanjeDefiniše uslove za selekciju rezultata čija se provera pokreće za svaku vrednost iteratorPromenljive definisane FOR
klauzulomDefiniše XML strukturu rezultata upita – može se formirati
nova struktura stabla kombinovanjem vrednosti promenljivih i konstrukcije novih čvorova korišćenjem XML sintakseJedan FLWR izraz može
sadržati više FOR i LET klauzula
Prikazati sve proizvode koji se nalaze na otpremnici
LET $x := document ( “Otpremnica.xml” ) //ProizvodRETURN <sviProizvodi>
$x</sviProizvodi>
PRIMER
c) Upiti nad više dokumenata
Za identifikaciju kolekcije XML dokumenata nad kojom se postavlja upit se koristi funkcija collection(«URI») koja definiše
skup XML dokumenata identifikovan preko iste URI adrese – upit nad tako definisanim skupom dokumenata definiše se na isti
način kao i nad jednim XML dokumentom
Ako dokumenti nad kojima se želi postaviti upit nisu na istoj URI adresi neophodno je postaviti upit sa operacijom spajanja –
definiše se preko deklaracije iterator promenljivih, tj. u jednoj FOR klauzuli se može definisati više promenljivih koje uzimaju
vrednosti iz različitih izraza putanje
Prikazati sve podatke o dobavljačima i broj i datum otpremnica koje su dobavljači isporučili u 2008 godini
FOR $d IN document ( “dobavljaci.xml” ) //Dobavljac,$o IN document ( “otpremnice.xml” )
//OtpremnicaWHERE substring ($o/Datum, 1, 4) = “2008”RETURN <dobavljac>
$d/*, <isporuka> $o/Datum, $o/Broj </isporuka></dobavljac>
PRIMER
U FLWR izrazima može se koristiti funkcija distinct-values(KolekcijaVrednosti) koja ima istu ulogu kao i klauzula
DISTINCT u SQL-u
Funkcija distinct-values se može koristiti i pri definisanju promenljivih – tako se postiže da promenljiva iz kolekcije vrednosti
uzima datu vrednost samo jednom
Na taj način se mogu realizovati upiti kojima bi u SQL-u odgovarala klauzula GROUP BY..HAVING
XQuery je funkcionalni jezik, pa omogućava definisanje bilo kojeg izraza kao funkcije čiji su argumenti sekvence i
koji vraća sekvence
Sekvenca je uređena kolekcija čvorova i atomskih vrednosti
Sam FLWR izraz se takođe može posmatrati kao funkcija koja vraća sekvencu, a isto tako jedan FLWR izraz se može koristiti
kao argument u drugim funkcijama
XQuery definiše i operacije nad sekvencama koje vraćaju sekvence eliminišući sekvence, i to: unije (union), preseka (itersect) i razlike
(expect)
XQuery omogućava korišćenje uslovnih izraza (if-than-else) i kvantifikujućih izraza (some, every)
Domen ulaznih parametara funkcije su tipovi podataka definisani XML šemom ili tipovi čvorova (node, attribute, itd.), a kao povratna vrednost definiše se sekvenca koja može sadržavati elemente istog
tipa
Ostale mogućnosti manipulisanja sa XML dokumentima
Operacije transformacije – deklarativne XSLT
XSLT (eXtensible Stylesheet Language Transformation) omogućava transformaciju iz jednog u drugi XML dokument, kao i
transformaciju XML u neki drugi jezik za označavanje (npr. HTML)
Najosnovnija komponenta XSLT-a je pravilo konstrukcije koje povezuje uzorak sa akcijom, a koje može sadržati elemente za
kreiranje novih elemenata XML dokumenta što omogućava kreiranje novog fragmenta rezultujućeg stabla
Uzorcima se definišu delovi XML dokumenta koji će biti obrađeni
Akcije su delovi pravila konstrukcije kojima se opisuje akcija koja se
primenjuje
XSLT koristi XPath izraze za selektovanje elemenata za obradu, uslovnu obradu i za generisanje teksta, a definiše i dva proširenja
XPath-a (jedno za skup elemenata koji se koriste u pravilima konstrukcije i drugo koje se odnosi na dodatni skup funkcija koje
se mogu koristiti u XPath izrazima)
Za pokretanje transformacije potreban je XSLT procesor, a sama transformacija se pokreće preko ponuđenih API interfejsa ili
pomoću uslužnog programa kao što je npr. XPath Spy
Proceduralna obrada XML dokumenta – DOM i SAX
DOM (Document Object Model) je platformski i jezički nezavisan interfejs koji dozvoljava programima da
dinamički pristupe i menjaju sadržaj, strukturu, kao i stil XML dokumenta
XMLdokume
nt
NoviXML
dokument
DOM Parser
Programski kod
Prikaz
DOM stabloNovo DOM stablo
XML parser rasčlanjuje dati XML dokument i formira DOM stablo
Elementi DOM stabla se mogu menjati u nekom programskom jeziku čime se dobija novi izgled stabla koji omogućava formiranje novog XML dokumenta ili bilo koje tekstualne datoteke
DOM je dizajniran da bude korišćen u bilo kom programskom jeziku, a da bi se omogućila precizna jezički nezavisna specifikacija DOM
interfejsa koristi se OMG IDL (Interface Definition Language), definisan COBRA 2.2. specifikacijom
SAX (Simple API for XML) je orijentisan ka događajima (Event-based API), za razliku od DOM koji nudi objektno-orijentisani API
mehanizamSAX pruža informacije o parsiranju dokumenta (kao što su početak i
kraj dokumenta) direktno u aplikaciji bez mogućnosti callback-a i bez kreiranja nekog internog stabla – SAX omogućava jednostavni i
najniži nivo pristupa XML dokumentu
XML kao mehanizam za ostvarivanje integracije u distribuiranim sistemima
U distribuiranim računarskim sistemima često se javlja potreba da se istovremeno koristi više različitih baza podataka koje su zasnovane na različitim modelima
podataka, čija je struktura različita i ako nose semantički iste informacije i kojima upravljaju različiti SUBP-ovi
XML i XQuery mogu da budu veoma moćan mehanizam za integraciju
XQuery Klijent
Korisnik postavlja upit nad virtuelnim skupom
XML dokumenata koristeći XQuery
X Query
XML posrednik
Prima XQuery upit, transformiše ga u SQL upite koji vraćaju XML
dokument za odgovarajuću relacionu bazu podataka, izvršava
XQuery upit nad dobijenim rezultatima i prosleđuje rezultat tog
upita
XQuery Analizator
Katalog preslikavan
ja XML SQL
Procesor XQuery upitaXML
sintetizator
Transformacija XQuery upita u SQL upite, a pošto XQuery upit
zahteva specifikaciju URI adresa XML dokumenta Katalog čuva
virtuelne URI adrese i daje informacije o tome kako se preko
SQL upita, iz različitih baza podataka, dobija odgovarajući
XML dokumentVrši transformaciju XQuery upita u SQL upite
Oracle omotačOracle 9i SQL server omotač
Microsoft SQL server
SQL/XML upit sa funkcijama XMLElement, XMLForest,...
SQL sa klauzulom FOR
XMLXML XML
Od dobijenih XML odgovora na SQL upite formira XML
dokumenat nad kojim se postavlja XQuery upit
Omotači odgovarajućeg SUBP-a daju mogućnost da se u XML analizatoru ne moraju specifikovati detalji načina
prosleđivanja SQL upita konkretnoj bazi (konekciju, šemu, i dr.)
XML rezultat
U Oracle SUBP način formiranja XML dokumenta preko SQL je omogućen preko skupa operatora – XMLElement,
XMLForest, XMLConcat i agregatne funkcije XMLAgg – koji omogućavaju kreiranje bilo kojeg stabla čvorova XML
dokumenta
Primarno se koristi za kreiranje novog XML elementa sa datim imenom iz tabela, a opciono može sadržati
XMLAttributes klauzulu kojom se specifikuju atributi elementa
U njoj se koriste imenovani izrazi čija imena postaju nazivi atributa, a vrednosti izraza daju vrednost atributa, gde tip vrednosti koji definiše izraz ne može biti neki objektni tip ili
kolekcija
Vraća više XML elemenata datih preko liste imenovanih izraza – svaki element kreran iz imenovanog izraza koristi ime izraza kao ime XML elementa i vrednosti izraza kao
sadržaj elementa
Omogućava spajanje više elemenata u
jedan XML fragment
Kreira XML fragment iz neke kolekcije XML fragmenata – dozvoljava agregiranje više n-
torki XML SELECT upita
SQL/XML standard proširuje definisani skup SQL podataka sa novim XML tipom podataka, gde vrednost XML tipa podataka može
biti XML sadržaj (fragment) ili XML dokument (sadrži XML instrukciju obrade)
U Microsoft SQL Serveru je definisana klauzula FOR XML koja omogućava transformaciju tabelarnog prikaza podataka u XML
format
Da bi se omogućilo formiranje bilo koje strukture stabla koristi se EXPLICIT mod, dok upiti za koje se definiše ova klauzula moraju
koristiti “struktuirane” nazive kolona
Naziv kolone se definiše na sledeći način imeElementa!tagNumber!atribut!direktiva čime se redom definišu naziv elementa, identifikator
elementa, sadržaj (može biti XML element ukoliko se kao direktiva definiše element, tekstualni sadržaj ukoliko je direktiva cdata, a ako direktiva nije
navedena onda se definiše atribut elementa)
Struktuirane kolone definišu strukturu stabla i pravila ugnježdavanja, a u njihovoj definiciji se koristi identifikator
elementa kao prva kolona upita koja mora imati naziv “TAG”, kao drugi element definiše se “PARENT”, a poslednji deo upita je
ORDER BY klauzula
Mora biti ceo broj, a pošto se u upitu može nalaziti samo jedan identifikator elementa potrebno je za
svaki novi identifikator definisati novi podupit
Vrednost ove kolone je ceo broj kojim se označava identifikator elementa roditelja tekućeg elementa – TAG-a, a
prva oznaka u hijerarhiji mora imati nula vrednost kao vrednost kolone PARENT
U njoj se sortiraju struktuirane kolone – sortiranje je veoma bitno pri definisanju upita jer se na taj način
omogućava pravilno ugnježdavanje podataka iz upita
Prof. dr Milorad Banjanin
HVALA NA HVALA NA PAŽNJIPAŽNJI