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

XML kao model podataka

  • 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

Page 1: XML kao model podataka

XML kao model podataka

Prof. dr MILORAD K. BANJANIN

Fakultet tehničkih nauka,Univerzitet u Novom Sadu

Page 2: XML kao model podataka

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

Page 3: XML kao model podataka

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

Page 4: XML kao model podataka

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

Page 5: XML kao model podataka

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

Page 6: XML kao model podataka

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

Page 7: XML kao model podataka

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

Page 8: XML kao model podataka

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

Page 9: XML kao model podataka

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

Page 10: XML kao model podataka

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

Page 11: XML kao model podataka

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

Page 12: XML kao model podataka

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

Page 13: XML kao model podataka

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

Page 14: XML kao model podataka

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

Page 15: XML kao model podataka

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

Page 16: XML kao model podataka

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

Page 17: XML kao model podataka

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

Page 18: XML kao model podataka

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

Page 19: XML kao model podataka

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

Page 20: XML kao model podataka

Prof. dr Milorad Banjanin

HVALA NA HVALA NA PAŽNJIPAŽNJI