1 / 20

XML kao model podataka

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).

abbott
Download Presentation

XML kao model podataka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML kao model podataka Prof. dr MILORAD K. BANJANIN Fakultet tehničkih nauka, Univerzitet u Novom Sadu

  2. PRVENSTVENA NAMENA JE STANDARDIZACIJA STRUKTURE I SADRŽAJA DOKUMENATA 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 JEZIK ZA OZNAČAVANJE STRUKTURE DOKUMENTA UNUTAR NJEGOVOG SADRŽAJA EFIKASAN I FLEKSIBILAN JEZIK ZASNOVAN NA SGML-u (Standard Generalized Markup Lanuage) 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

  3. 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 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 Definiše način kodiranja znakova, tj. definiše u kom je znakovnom kodu XML dokument napisan Vrsta Unicode-a 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 dokumenta Razdvajaju se preko početne i krajnje oznake, a element koji nema sadržaj se naziva prazan element Osnovni blokovi XML-a – mogu se tretirati kao kontejneri Mogu 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 SVAKI XML DOKUMENT MORA DA SADRŽI XML DEKLARACIJU (prvu instrukciju obrade kojom se dokument identifikuje kao XML dokument): <?xml version=“1.0” encoding=“UTF-8”?> SVAKI XML DOKUMENT SADRŽI JEDAN I SAMO JEDAN GLAVNI ELEMENT – KORENI (ROOT) ELEMENT

  4. Definicija opsega imena u XML dokumentu se daje preko atributa xmlnsili bilo kog stringa koji ima prefiks xmlns: 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 da poseduje samo jedan element dokumenta (koreni element) u kome su ugnježdeni svi ostali elementi i njihov sadržaj 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 da postoji XML deklaracija dokumenta 1 2 3 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:

  5. XMLSchema 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 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 Sadrži definicije prostih i složenih tipova, deklaracije elemenata, deklaracije atributa, modele grupa, grupa atributa, deklaracije notacija i drugo 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 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 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 konstruktoraSEQUENCE, CHOICE i ALL

  6. 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 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> Tada se u odgovarajućemdeluopisa XML šemestudent definišekao: <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”/>

  7. Zadavanje pomenutog opsega standardnih imena atributa veze Navođenje tipa veze Navođ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 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 ftn: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 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

  8. <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> 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. 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) Složena ograničenja – vezuju više vrednosti različitih elemenata po strukturi prikazane šeme Ograničenja na vrednost prostog elementa – daju se uz sam element preko određene sintakse 3 1 2 Ograničenja 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 PRIMER <xs:key name=“OtpremnicaKey”> <xs:selector xpath=“Otpremnica”/> <xs:field xpath=“Broj”/> <xs:field xpath=“Dobavljac/SifraDobav”/> </xs:key>

  9. Dodatno se selektuju oni čvorovi iz skupa čvorova koji zadovoljavaju dati predikat Pomoću test čvora se selektuju čvorovi određenog tipa ili datog naziva 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; osa (axis) – pravac posmatranog koraka putanje u stablu 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 Ako putanja počinje sa “/” polazni čvor je neimenovani koren XML dokumenta Zadaje se ili preko naziva čvora ili preko oznake tipa čvora koji može biti: comment, text, processing-instruction ili node 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 Operacije koje omogućavaju “kretanje” kroz XML dokument, odnosno adresiranje pojedinih njegovih komponenti – skup operacija koje nazivamo “navigacione” operacije definisane su XPath specifikacijom Operacije sa XML dokumentima Kao i u većini modela, i ovde se mogu definisati navigacione i specifikacione operacije 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 korakarazdvojenih sa “/” U izrazu putanje korak se definiše sa: “naziv_ose :: test_cvora [predikat]”

  10. 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 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. 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 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 PRIMER 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 ’ Logičke funkcije Numeričke funkcije

  11. 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”

  12. Definiše iterator promenljivu koja uzima vrednosti iz skupa čvorova definisanog preko putanje Dodeljuje promenljivoj vrednosti izraza putanje Definiše uslove za selekciju rezultata čija se provera pokreće za svaku vrednost iteratorPromenljive definisane FOR klauzulom Definiše XML strukturu rezultata upita – može se formirati nova struktura stabla kombinovanjem vrednosti promenljivih i konstrukcije novih čvorova korišćenjem XML sintakse Promenljive se označavaju sa prefiksom “$” 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 Prikazatisvepodatke o svimotpremljenim proizvodima u XML dokumentu otpremnice.xml document ( “otpremnice.xml” ) //Proizvod/* 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_putanja WHERE kvalifikacioni_izraz RETURN xml_konstrukcija Jedan FLWR izraz može sadržati više FOR i LET klauzula

  13. PRIMER Prikazatisveproizvode koji se nalaze na otpremnici LET $x := document ( “Otpremnica.xml” ) //Proizvod RETURN <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

  14. Na taj način se mogu realizovati upiti kojima bi u SQL-u odgovarala klauzula GROUP BY..HAVING PRIMER Prikazatisvepodatke 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” ) //Otpremnica WHERE substring ($o/Datum, 1, 4) = “2008” RETURN <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

  15. Sekvenca je uređena kolekcija čvorova i atomskih vrednosti XQueryje funkcionalni jezik, pa omogućava definisanje bilo kojeg izraza kao funkcije čiji su argumenti sekvencei koji vraća sekvence 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

  16. Uzorcima se definišu delovi XML dokumenta koji će biti obrađeni Akcije su delovi pravila konstrukcije kojima se opisuje akcija koja se primenjuje 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 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

  17. 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 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 XMLdokument NoviXMLdokument Novo DOM stablo DOM Parser Programski kod Prikaz 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 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 pristupaXML dokumentu

  18. 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 dokument 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.) Korisnik postavlja upit nad virtuelnim skupom XML dokumenata koristeći XQuery 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 Vrši transformaciju XQuery upita u SQL upite 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 X Query XML rezultat XML posrednik Procesor XQuery upita Katalog preslikavanja XML  SQL XQuery Analizator XML sintetizator SQL/XML upit sa funkcijama XMLElement, XMLForest,... XML SQL sa klauzulom FOR XML XML Oracle 9i Microsoft SQL server Oracle omotač SQL server omotač

  19. 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 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) 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 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 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 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 Struktuirane kolone definišu strukturu stabla i pravila ugnježdavanja, a u njihovoj definiciji se koristi identifikator elementakao prva kolona upita koja mora imati naziv “TAG”, kao drugi element definiše se “PARENT”, a poslednji deo upita je ORDER BY klauzula

  20. HVALA NA PAŽNJI Prof. dr Milorad Banjanin

More Related