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