Transcript Document

XML kao model podataka
Prof. dr MILORAD K. BANJANIN
Fakultet tehničkih nauka,
Univerzitet u Novom Sadu
XML eXtensible
Markup
Language
Može da posluži i kao
“model posrednik” za
transformaciju jednog
modela podataka u drugi
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
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
Osnovni
blokovi XML-a
– mogu se
tretirati kao
kontejneri
ELEMENTI
XML dokumenta
Razdvajaju se preko
početne i krajnje oznake, a
element koji nema sadržaj
se naziva prazan element
Mogu im se pridružiti atributi, a mogu i sadržati druge
PI (Processing
se na druge elemente
elemente,
nizoveInstruction)
karaktera,– koristi
reference
za prosleđivanje
porukakomentare
aplikacijama i/ili instrukcije obrade
posmatranog
dokumenta,
koje obrađuju XML dokument
SVAKI XML DOKUMENT MORA DA
SADRŽI
XMLbilo
DEKLARACIJU
Mogu
se koristiti
gde u dokumentu(prvu
instrukciju obrade kojom se dokument
kao XML
dokument):
ali identifikuje
se uglavnom navode
na početku
Kontejner ostalih elemenata i ne može biti
sadržan ni u jednom drugom elementu, svi ostali
<?xml version=“1.0” encoding=“UTF-8”?>
elementi su “deca” korenog elementa
SVAKI XML DOKUMENT SADRŽI JEDAN I SAMO JEDAN GLAVNI
XML podržava
neograničeno ugnježdavanje
Vrsta
Unicode-a
Definiše
način kodiranja
znakova,
tj.
ELEMENT
– KORENI
(ROOT)
ELEMENT
elemenata, a uvek se prvo zatvara ona oznaka
definiše u kom je znakovnom kodu XML
dokument napisan elementa koja je poslednja otvorena
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) reference
DOBRO OFORMLJEN XML DOKUMENT mora da zadovolji sledeće uslove:
Definicija opsega imena u XML dokumentu se daje preko atributa xmlns ili
bilo kog stringa koji ima prefiks xmlns:
1
da postoji XML deklaracija dokumenta
Ne
Kada
mora
se da
definiše
ima svoj
tipspecifikovani
XML dokumenta
tip, može
a autor
sedokumenta
uvesti i pojam
može
validnog
da uvodi
XML
oznake
dokumenta,
elemenata
koji imora
da ihda
ugnježdava
poštuje strukturu
po svojojdefinisanu
želji, prateći
u opisu
navedene
tipa dokumenta
uslove
2
da poseduje samo jedan element dokumenta (koreni element) u kome su
ugnježdeni svi ostali elementi i njihov sadržaj
3
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
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
jerjezik
podržava
definiciju tipa podataka
i
Jedan XML
za specifikaciju
tipova XML
poseduje mehanizam povezivanja
elemenata uodnosno
XML dokumentu,
a i dataije preko XML
dokumenta
za opisivanje
sintakse čime je omogućeno njeno
procesiranje sadržaja
kao bilo kogXML
drugog
XML dokumenta
ograničavanje
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
Uz svaki element u šemi se može dati broj njegovih
pojavljivanja
preko
donje (minOccurs)
i gornjese
Sadrži
prostih
i složenih
tipova,
elemenata,
Definiše
Definiše
grupudefinicije
elemenata
grupu elemenata
iz koje
sekod
mogu
koje
izvlačiti
se
svideklaracije
elementi
pojedinačni
mogu
elementi
pojaviti–deklaracije
maksimalno
definišu
modele
grupa,
grupagranice,
atributa,
notacija
ida
drugo
(maxOccurs)
adeklaracije
ako
kardinalnost
pojavljivanja
donja
jedanput
i atributa,
gornja
– ograničenje
granica
kardinalnosti
uelemenata
korišćenju
grupe
elemenata
grupe
je
to(difolt
što
ona
minOccurs=“0”
može
sadrži
i samo
Definiše
uređenu
grupu
–ove
po difoltu
svaki
element
je obavezan
nije
data
podrazumeva
se
vrednost
1mora
maxOccurs=“unbound”),
definicije elemenata
broj ielemenata
ne može
da
koji
bude
imaju
direktno
minOccurs
ugrađena
različit
u druge
od nule
grupe
niti
da
(minOccurs=“1”
i ) iajednoznačan
(maxOccurs=“1”),
a ako
element
nije
obavezan
bude manji ili jednak
minOccurs
može potrebno
sadržati
definisanom
druge
zagrupe
celu choice
kolekciju
(minOccurs=“0”)
i jednoznačan
je predefinisati
difolt
vrednosti
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
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 šeme
PRIMER
<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>
Ukoliko se želi pridružiti neki atribut elementu prostog tipa on se mora opisati
preko
definicije
složenog tipa – prilikom
definicije
složenog
naglašava
se da kao:
Tada
se u odgovarajućem
delu opisa
XML
šeme tipa
student
definiše
on ima prost sadržaj preko definicije simpleContent
<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”/>
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:ispitniRok
xmlns:ftn=http://ftn.ns.ac.yu
Atributi preko kojih
Zadavanje pomenutog opsega
ftn:predmet
=“Inzenjerske analize”
se opisuje veza
Definisanjeimena
trenutka
u kome
se
standardnih
atributa
veze
ftn:datumRokauspostavlja
=“2009-01-28”
(onLoad
– vezasa
se
Navođenje
URL veza
adrese
dokumenta
Navođenje
tipa veze
-------------------------------uspostavlja
na početku
procesiranja
kojim
se posmatrani
dokument
povezuje
xmlns:xlink
=“http://www.w3c.org/1999/xlink”
polaznog dokumenta)
xlink:type
=“simple”
xlink:href
=“spisakStudenata.xml”
Daje se
naziv veze
xlink:actuate
=“onLoad”
xlink:title
=“Spisak studenata za Januarski rok”
-------------------------------->
Spisak
prijavljenih
studenata
Ako se
vezom
želi ukazati
na tačno određeni deo drugog dokumenta koristi se
</ftn:ispitniRok>
XPointer,
a deo sa kojim se dokument povezuje adresira se preko XPath izraza
Ograničenja
1
Ograničenja na vrednost prostog elementa – daju se uz sam element
preko određene sintakse
Strukturna
ograničenja – definišu se opisom same šeme, pri čemu se i ovde
<xs:element name=“OtpremljenaKolicina”>
2 posebno
ukazuje na
definisanje
kardinalnosti elemenata i definisanje načina
<xs:simpleType
name=“Kol”
>
koji se formira
struktura (sequence, all, choice)
<xs:na
restriction
base=“xs:float”>
3
<xs:minExclusive value=“0”/>
<xs:maxInclusive value=“100”/>
Složena ograničenja – vezuju više vrednosti različitih elemenata po
</xs:restriction>
strukturi prikazane šeme
</xs:simpleType>
</xs:element>
Ograničenje
jednakosti
između
elemenata
se može dokumenata
iskazati prekonekog
mehanizama
Ako se baza
podataka
definiše
kao kolekcija
ID/IDREF i Key/KeyRef.
tipa,
tada postoji potreba da se definiše ključ dokumenta tog tipa
Drugačija složena ograničenja se mogu definisati u okviru elementa <appInfo>.
koji jedinstveno identifikuje jedan dokument u toj kolekciji
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
PRIMER
jedinstvenost) i field (definiše element
čija se vrednost proverava).
<xs:unique name=“jedinstveniRedniBrojStavke”>
<xs:key name=“OtpremnicaKey”>
<xs:selector xpath=“Stavka”/>
<xs:selector xpath=“Otpremnica”/>
<xs:field xpath=“RedniBroj”/>
<xs:field xpath=“Broj”/>
</xs:unique>
<xs:field xpath=“Dobavljac/SifraDobav”/>
Za opis složenijih ograničenja se može koristiti specifična sintaksa – Schematron.
</xs:key>
self Operacije
– daje sam kontekstni
čvor, skraćenica za nju je “.”;
sa XML dokumentima
child – daje decu kontekstnog čvora, a predstavlja difolt osu pa se može izostaviti iz
Kao i u većini modela, i ovde opisa
se mogu
definisati navigacione i
koraka;
descendant – daje
sve potomke kontekstnog
specifikacione
operaciječvora, decu, decu dece, itd.;
descendeant-or-self – daje tekući čvor i svu njegovu decu, decu dece, itd.;
following-sibling
– daje
sledeće (“desne”)
blizance
čvora;
XPath
Operacije
kojesve
omogućavaju
“kretanje”
krozkontekstnog
XML dokument,
odnosno
following - daje
sve
sledeće
(“desne”)
blizance
kontekstnog
čvora
i
njihove
potomke
Upiti
preko
kojih
se
definiše
deo
XML
dokumenta
koji
se
želi
u
adresiranje pojedinih njegovih komponenti – skup operacija koje rezultatu
nazivamo i
Jezik koji omogućava
adresiranje
delova
navigaciju
do delovazaXML
isključujući
čvor-atribute
idefinisane
čvor-prostora
imena;
uslov
koji takav
dokument
treba
dailizadovolji
– konstrukcije
iskaz
“navigacione”
operacije
su XPath
specifikacijom
dokumenta
stringovima,
brojevima
i logičkim
attributei –osnovnu
daje sve manipulaciju
čvor-atribute
kontekstnog
čvora,
skraćenica
za nju jepodacima
“@”;
specifikacionih
operacija daje
upitni
jezik
XQuery
namespace – daje sve čvorove decu kontekstnog čvora koji su iz istog prostora imena
kao i kontekstni čvor;
parent
– daje roditelja
kontekstnog
postoji,–atermin
skraćenica
za se
njukoristi
je “..”; za
XML
dokument
se posmatra
kao čvora,
stabloako
čvorova
čvor
ancestor
– daje
roditelja,
roditeljeve
roditelje,
itd., sve do
korenavrednosti,
stabla;
bilo
koji deo
XML
dokumenta
(elementi,
atributi,
njihove
ancestor-or-self – daje tekući
ćvor, njegovog
roditelja,
roditeljeve roditelje, itd., sve
komentari
i instrukcije
obrade)
do korena stabla;
preceding – daje sve prethodne (“leve”) blizance
kontekstnog
čvora
njihove potomke
Ako putanja
počinje sa
“//” ipolazni
isključujući
čvor-atribute
ije
čvor-prostora
imena;
Zadaje
se ili
naziva
ili
prekokoren
oznake
Definiše
sepreko
i čvor
kojičvora
se
dokumenta
(jedan
fiktivni, bezimeni
čvor
neki
čvor
dokumenta
Akonaziva
putanja
počinje
sa
“/”drugi
polazni
čvor
preceding-sibiling
daje
sve
prethodne
(“leve”)
blizance
kontekstnog
čvora;
tipa čvora koji
comment,
text,
dobijen
na XML
osnovu
imena,
bez obzira
čvormože
čijebiti:
je je
dete
osnovni
element
XML
dokumenta)
neimenovani
koren
dokumenta
processing-instruction ili node gde se on u stablu čvorova nalazi
Čvor se adresiraosa
preko
putanje,
koji
počinje
bilo
sa
“/” ili
“//”,
(axis)izraza
– pravac
Pomoću
posmatranog
test
Dodatno
čvora
se
se
koraka
selektuju
selektuju
oni
čvorovi
čvorovi
iz sa
skupa
određenog
u stablu
čvorova
tipa
koji
ili zadovoljavaju
datog
naziva datisapredikat
a predstavlja niz odputanje
jednog
ili
više
koraka
razdvojenih
“/”
U izrazu putanje korak se definiše sa: “naziv_ose :: test_cvora [predikat]”
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
position() - vraća redni broj pojavljivanja čvora u nekom skupu;
PRIMER
last() - vraća redni broj poslednjeg
pojavljivanja;
substring(string,
p čvor
[,d]) koji
– izdvaja
podniz
iz datog niza
(stringa)
počev
od pozicije p
id(objekat) – vraća
se može
identifikovati
preko
vrednosti
argumenata
substring ( ‘ abcd ’ , 2 )
vraća ‘ bcd ’
u dužini d;
objekat;
substring-after
( ‘name()
aBcdstr2)
’ –, vraća
c )i substring-after(string,
vraća
’
substring-before(string,
str2) ‘–dvraćaju
podniz iz
pun naziv tekućeg čvora;
datog niza string
pre,
pojavljivanja
niza karaktera
datom
nizu;
local-name()
ili namespace-uri()
prostor imena
odnosno
čvora;
substring-before
( ‘ odnosno
aBcd ’ ,posle
B– )vraća
vraćalokalno
‘str2
a ’ uime
translate(string,
str1,funkcija
–koja
omogućava
karaktera
u datom
count()
– agregirajuća
može
nad grupom
vraćai to
translate
( ‘ AB--C-’str2)
, ‘ ABC’ , se
‘ abc
’ zamenu
) koristiti
vraća
‘čvorova,
abcnizu
’ astring
zamenjujući sve karaktere
koji čvorova
se pojavljuju
u prvom
ukupan broj
u datom
skupunizu sa karakterima sa
normalize-space ( ‘ a odgovarajućih
D’)
pozicija u nizu str2;vraća ‘ a D ’
normalize-space(string) – izbacuje višak blanko karaktera iz stringa;
Logičke funkcije
concat(str1, str2, [str3...]) – omogućava spajanje podnizova karaktera.
Numerič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)
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
PRIMER
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”
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
PRIMER
Prikazati sve podatke o svim otpremljenim proizvodima u XML dokumentu
otpremnice.xml
document ( “otpremnice.xml” ) //Proizvod/*
b) Upiti nad jednim XML dokumentom kojima se prikazuje izmenjeni sadržaj
XPathDefiniše
izrazi omogućavaju
samokoja
selektovanje
postojećih čvorova XML
iterator promenljivu
uzima vrednosti
Promenljive
sa
prefiksom
“$”preko
dokumentase
pa
se zato
definiše
nova
vrsta
upita preko ForLetWhereReturn
izoznačavaju
skupa
čvorova
definisanog
putanje
Dodeljuje
promenljivoj
vrednosti
izraza
(FLWR) izraza – čita se kao
engleska reč “flower” - a njegov opšti iskaz je:
putanje
FOR
LET
WHERE
RETURN
Definiše uslove za selekciju rezultata čija se provera pokreće za
svaku
vrednost
iteratorPromenljive
definisane
klauzulom
$iteratorPromenljiva
IN xpath_putanja
Definiše
XML strukturu
rezultata
upita
– možeFOR
se formirati
nova
struktura
stabla kombinovanjem
vrednosti promenljivih i konstrukcije
$promenljiva
:= xpath_putanja
novih čvorova korišćenjem XML sintakse
kvalifikacioni_izraz
xml_konstrukcija
Jedan FLWR izraz može sadržati
više FOR i LET klauzula
PRIMER
Prikazati sve proizvode koji se nalaze na otpremnici
LET
RETURN
$x := document ( “Otpremnica.xml” ) //Proizvod
<sviProizvodi>
$x
</sviProizvodi>
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
PRIMER
Prikazati sve podatke o dobavljačima i broj i datum otpremnica koje
su dobavljači isporučili u 2008 godini
FOR
WHERE
RETURN
$d IN document ( “dobavljaci.xml” ) //Dobavljac,
$o IN document ( “otpremnice.xml” ) //Otpremnica
substring ($o/Datum, 1, 4) = “2008”
<dobavljac>
$d/*,
<isporuka> $o/Datum, $o/Broj </isporuka>
</dobavljac>
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
Sam FLWR izraz se takođe
može
posmatrati
kao funkcija koja vraća
čvorova i atomskih vrednosti
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
Akcije su delovi pravila konstrukcije
kojima se opisuje akcija koja se primenjuje
Uzorcima se definišu delovi XML
dokumenta koji će biti obrađeni
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
DOM stablo
XML
dokument
DOM Parser
Novo DOM stablo
Programski kod
Prikaz
Novi
XML
dokument
XML parser rasčlanjuje
Elementi
dati XML
DOM stabla se mogu menjati u nekom
dokument i formira
programskom
DOM stablojeziku čime se dobija novi izgled stabla
DOM je dizajniran da bude korišćen
u bilo kom programskom jeziku, a da bi se
koji omogućava formiranje novog XML dokumenta ili bilo
omogućila precizna jezički nezavisna specifikacija
DOM datoteke
interfejsa koristi se
koje tekstualne
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 mehanizam
SAX 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
dau budu
Transformacija
XQuery
upita
SQL veoma moćan mehanizam za integraciju
upite, a pošto XQuery upit zahteva
specifikaciju URI adresa XML
XQuery Klijent
dokumenta Katalog čuva virtuelne
URI adrese i daje informacije
X Query
o
Korisnik
postavlja upit nad
XML
rezultat
tome kako se preko SQL upita, iz
virtuelnim skupom XML
Od dobijenih XML odgovora na SQL
različitih baza podataka, dobija
XML posrednik dokumenata koristeći XQuery
upite formira XML dokumenat nad
odgovarajući XML dokument
kojim se postavlja XQuery upit
Vrši transformaciju XQuery upita u
Procesor
SQL upite
XQuery upita
Prima XQuery upit,
Katalog
transformiše ga u SQL upite
XQuery
XML
preslikavanja
koji vraćaju XML dokument za
Analizator
sintetizator
Omotači
odgovarajućeg
SUBP-a
daju
mogućnost da se u XML
XML  SQL
odgovarajuću relacionu bazu
analizatoru ne moraju specifikovati detalji načina prosleđivanja
podataka, izvršava XQuery upit
SQL/XML upit sa funkcijama
SQL sa klauzulom
SQL upita
konkretnoj bazi (konekciju, šemu,
XML
XML i dr.)
nad dobijenim
rezultatima i
XMLElement, XMLForest,...
FOR XML
prosleđuje rezultat tog
upita
Microsoft
Oracle omotač
SQL server omotač
Oracle 9i
SQL server
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
Omogućava spajanjePrimarno
Vraća
Kreira
više
seXML
koristi
XML
fragment
elemenata
za kreiranje
iz neke
datih
novog
kolekcije
preko
XML
liste
XML
elementa
imenovanih
sa datim
izraza
više elemenata
u jedan fragmenata
–proširuje
imenom
svaki element
iz tabela,
– dozvoljava
kreran
a opciono
iz
agregiranje
imenovanog
može
više
izraza
n-torki
XMLAttributes
koristi
ime izraza
SQL/XML
standard
definisani
skup
SQLsadržati
podataka
sa novim
XML
XML
fragment
kao
ime
klauzulu
XML
elementa
kojom
XML
SELECT
se
i
specifikuju
vrednosti
upita
izraza
atributi
kao
elementa
sadržaj
elementa
tipom podataka, gde vrednost XML tipa podataka može biti XML sadržaj
(fragment) ili XML dokument (sadrži XML instrukciju obrade)
U njoj se koriste imenovani izrazi čija imena postaju nazivi atributa,
a vrednosti izraza daju vrednost atributa, gde tip vrednosti koji
U Microsoft SQL Serveru
definisana
klauzula
FOR XML
omogućava
definišeje
izraz
ne može biti
neki objektni
tip ili koja
kolekcija
transformaciju tabelarnog prikaza podataka u XML format
Da bi se omogućilo Mora
formiranje
strukture
koristisamo
se EXPLICIT
biti ceo bilo
broj,koje
a pošto
se u upitustabla
može nalaziti
Vrednost
ove kolone
je ceo potrebno
broj
kojim
identifikator
mod, dok upiti za koje
seidentifikator
definiše
ova
klauzula
moraju
koristiti
“struktuirane”
jedan
elementa
jese
zaoznačava
svaki novi
elementa
roditelja
elementa
– TAG-a, a prva oznaka u
identifikator
nazive tekućeg
kolona
definisati
novi podupit
hijerarhiji mora
imati
nula vrednost
kao vrednost
U njoj se sortiraju struktuirane
kolone
– sortiranje
je veoma
bitno kolone PARENT
pri definisanju upita jer se na taj način omogućava pravilno
Naziv kolone se definiše na sledeći način imeElementa!tagNumber!atribut!direktiva
ugnježdavanje
podataka izstabla
upita
Struktuirane
kolone
definišu
strukturu
pravila ugnježdavanja,
a u
čime se redom
definišu
naziv elementa,
identifikatori elementa,
sadržaj (može biti
njihovoj
definiciji
se koristi
identifikator
elementa
prva kolona
XML element
ukoliko
se kao direktiva
definiše
element, kao
tekstualni
sadržaj upita
ukolikokoja
mora
naziv
“TAG”,
kao drugi
element
se “PARENT”,
a poslednji
je imati
direktiva
cdata,
a ako direktiva
nije
navedenadefiniše
onda se definiše
atribut elementa)
deo upita je ORDER BY klauzula
HVALA NA
PAŽNJI
Prof. dr Milorad Banjanin