Presentation is loading. Please wait.

Presentation is loading. Please wait.

LEKSION 12 XML (Extensible Markup Language) Skema XML

Similar presentations


Presentation on theme: "LEKSION 12 XML (Extensible Markup Language) Skema XML"— Presentation transcript:

1 LEKSION 12 XML (Extensible Markup Language) Skema XML
Ndertimi i query-ve dhe transformimi i te dhenave xml.

2 Hyrje XML: Extensible Markup Language
I percaktuar nga konsorciumi WWW (W3C) Fillimisht i menduar si nje document markup language jo nje gjuhe database-i Dokumentet kane tags (etiketa) p.sh <title> XML </title> <slide> Introduction …</slide> I derivuar nga SGML (Standard Generalized Markup Language), por me i thjeshte per t’u perdorur se SGML Extensible (i zgjatshem), ndryshe nga HTML Perdoruesit mund te shtojne tags te reja dhe vecanersisht te specifikojne si duhet te mundesohet paraqitja e tag-ut Qellimi ishte (eshte? ) zevendesimi i HTML-se si gjuhe per publikimin e dokumenteve ne Web

3 Hyrje XML Aftesia per te specifikuar tags-et e reja, dhe per te krijuar struktura tag-sh te nderfutura bejne te mundur qe XML te jete nje menyre shume e mire per te shkembyer te dhenat, jo vetem dokumentet XML eshte perdorur me shume ne aplikacionet e shkembimit te te dhenave, jo si zevendesim per HTML Tags-et mundesojne (relativisht) vet-dokumentimin e te dhenave P.sh <bank> <account> <account-number> A </account-number> <branch-name> Downtown </branch-name> <balance> </balance> </account> <depositor> <account-number> A </account-number> <customer-name> Johnson </customer-name> </depositor> </bank>

4 XML: Qellimi Sot shkembimi i te dhenave eshte kritik ne boten e network Shembuj: Banking: transferimi i fondeve Procesimi i porosive (urdherave) Te dhenat shkencore Kimi: ChemML Gjenetike: BSML (Bio-Sequence Markup Language) Rrjedhja e letrave te informacionit ndermjet organizatave po zevendesohet nga rrjedhja elektronike e informacionit Cdo zone aplikacion ka bashkesine e vet te standardeve per paraqitjen e informacionit XML eshte bere baza e te gjithe gjenerates se re per formatet e shkembimit te te dhenave

5 XML: Qellimi (vazhd..) Formatet e hershme te gjenerimit ishin te bazuar ne tekstin e thjeshte me ne krye rreshtat qe tregonin kuptimin e fushave Ne koncept e ngjashme me headers (kokat e -ve) Nuk lejohet per strukturat e nderfutura, nuk ka “tip ”standard gjuhe I lidhur ngushte me stukturen e nivelit te ulet te dokumentave (rresht, hapesire etj) Cdo standard i bazuar XML percakton cilat jane elementet te vlefshme, duke perdorur: Gjuhet e specifikimit te tipit XML per te specifikuar sintaksen DTD (Document Type Descriptors) Skema XML Plus pershkrimet tekstuale te semantikes XML lejon percaktimin e tags-t te reja ashtu sic kerkohen Megjithate, kjo mund te kufizohet nga DTD Tools-e te shumta jane te vlefshme per parsing (anazalizimin), browsing (shfletimin) dhe querying (kerkesat) te dhenat/dokumentet XML

6 Struktura e te dhenave XML
Tag: etikete per nje seksion te dhene Element: seksion i te dhenave qe fillojne me <emer_tag> dhe mbaron me </emer_tag > Elementet duhet te jene te nderfutura sakte Nderfutje e sakte <account> … <balance> …. </balance> </account> Nderfutje e gabuar <account> … <balance> …. </account> </balance> Formalisht: cdo tag fillimi duhet te kete nje tag korrrespondues mbarimi unik Cdo dokument duhet te kete nje element te vetem te nivelit-larte

7 Shembull I elementeve te nderfutur
<bank-1> <customer> <customer-name> Hayes </customer-name> <customer-street> Main </customer-street> <customer-city> Harrison </customer-city> <account> <account-number> A-102 </account-number> <branch-name> Perryridge </branch-name> <balance> </balance> </account> </customer> </bank-1>

8 Qellimi per nderfutje (nesting)
Nderfutja e te dhenave eshte e dobishme ne transferimin e te dhenave Shembull: elementet qe perfaqesojne customer-id, customer name, dhe address te nderfutur brenda nje elementi te renditur Nderfutja nuk suportohet ne database-t relacionale customer_name dhe address mund te ruhen me perseritje Normalizimi zevendeson strukturat e nderfutura ne cdo renditje nga celesi i jashtem ne tabele duke ruajtur informacionin per customer_name dhe address Nderfutja suportohet ne database-t relacionale-objekt Por nderfutja nuk eshte e pershtatshme ne transferimin e te dhenave Aplikacioni i jashtem nuk ka akses direkt ne te dhenat qe referohen nga nje celes i jashtem

9 Struktura e te dhenave XML (vazhd..)
Miksimi i tekstit me nen-elemente eshte e drejte ne XML Shembull <account> Kjo account nuk perdoret me! <account-number> A-102</account-number> <branch-name> Perryridge</branch-name> <balance>400 </balance> </account> I dobishem per shenimin (etiketimin) e dokumentave, por i pavlere ne paraqitjen e te dhenave

10 Atributet Elementet mund te kene atribute
<account acct-type = “checking” > <account-number> A-102 </account-number> <branch-name> Perryridge </branch-name> <balance> 400 </balance> </account> Atributet specifikohen nga cifti emer=vlere brenda tag-ut te fillimit te nje elementi Nje element mund te kete disa atribute, por cdo emer atributi mund te shfaqet vetem nje here <account acct-type = “checking” monthly-fee=“5”>

11 Atributet vs Nenelementet
Ndryshimi ndermjet nenelementit dhe atributit Ne kontekstin e dokumenteve, atributet jane pjese e etiketimit (markup), ndersa permbajtjet e nenelementeve jane pjese e permbajtjes kryesore te dokumentit Ne kontekstin e paraqitjes se te dhenave, ndryshimi eshte i paqarte dhe mund te ngaterrohet I njejti informacion mund te perfaqesohet ne dy menyra <account account-number = “A-101”> …. </account> <account> <account-number>A-101</account-number> … </account> Sugjerim: perdorni atributet si identifikues per elementet, dhe perdorni nenelementet per permbajtjet

12 Me teper rreth sintakses
Elementet qe nuk kane nenelemente ose permbajtje teksti mund te shkurtohen duke perfunduar tag-un hapes me nje /> dhe te fshijme tag-un mbylles <account number=“A-101” branch=“Perryridge” balance=“200 /> Per te ruajtur te dhenat te tipit string qe mund te permbajne tag-e, pa i interpretuar tag-et si nenelemente, ath perdorim CDATA si meposhte: <![CDATA[<account> … </account>]]> Ketu, <account> dhe </account> trajtohen vetem si string

13 Namespaces (emertimet)
Te dhenat XML duhet te shkembehen ndermjet organizatave I njejti emer tag-u mund te kete kuptime te ndryshme ne organizata te ndryshme, duke shkaktuar keshtu konfuzion ose dokumente te shkembyer Duke specifikuar nje string unike si nje emer elementi shmanget konfuzioni Zgjidhje me e mire: perdorim unique-name:element-name Shmangni perdorimin e emrave unik te gjate pergjate dokumentit duke perdorur namespaces (emertimet) XML <bank Xmlns:FB=‘ … <FB:branch> <FB:branchname>Downtown</FB:branchname> <FB:branchcity> Brooklyn </FB:branchcity> </FB:branch> … </bank>

14 Dokumenti i skemes XML Skemat e database-it permbajne te dhena si cfare informacioni mund te ruhet dhe tipet e te dhenave te vlerave te ruajtura Dokumentet XML nuk kerkohen qe te kene skeme te shoqeruar Megjithate, skemat jane shume te rendesishme per shkembimin e te dhenave XML Perndryshe, nje site nuk mundet te interpretoje automatikisht te dhenat e marrura nga nje site tjeter 2 mekanizma per specifikimin e skemes XML Document Type Definition (DTD) Shume i perdorur Skema XML E re, perdorimi rritet dita-dites

15 Document Type Definition (DTD)
Tipi i nje dokumenti XML mund te specifikohet duke perdorur nje DTD DTD permban strukturen e te dhenave XML Cfare elementesh mund te shfaqen Cfare atributesh mund/duhet te kete nje element Cfare nenelementesh mund/duhet te shfaqen brenda cdo elementi, dhe sa here DTD nuk permbajne tipet e te dhenave Gjithe vlerat perfaqesohen si string ne XML Sintaksa DTD <!ELEMENT element (subelements-specifikimi) > <!ATTLIST element (attributes) >

16 Specifikimi i elementeve ne DTD
Nenelementet mund te specifikohen si: Emrat e elementeve, ose #PCDATA (te dhenat e analizuara karakter), p.sh string karakter EMPTY (nuk ka nenelemente) ose ANY (secili mund te jete nje nenelement) Shembull <! ELEMENT depositor (customer-name account-number)> <! ELEMENT customer-name (#PCDATA)> <! ELEMENT account-number (#PCDATA)> Specifikimi Nenelement mund te kete shprehje te rregullta <!ELEMENT bank ( ( account | customer | depositor)+)> Shenimi: “|” - alternativat “+” ose me shume shfaqje “*” ose me shume shfaqje

17 DTD e bankes <!DOCTYPE bank [
<!ELEMENT bank ( ( account | customer | depositor)+)> <!ELEMENT account (account-number branch-name balance)> <! ELEMENT customer(customer-name customer-street customer-city)> <! ELEMENT depositor (customer-name account-number)> <! ELEMENT account-number (#PCDATA)> <! ELEMENT branch-name (#PCDATA)> <! ELEMENT balance(#PCDATA)> <! ELEMENT customer-name(#PCDATA)> <! ELEMENT customer-street(#PCDATA)> <! ELEMENT customer-city(#PCDATA)]>

18 Specifikimi i atributeve ne DTD
Specifikimi i atributit: per cdo atribut Emri Tipi i atributit CDATA ID (identifier) ose IDREF (ID reference) ose IDREFS (multiple IDREFs) Nese : Mandatory (#REQUIRED) te detyrueshem Ka nje vlere te paracaktuar (value), Ose asnje nga te sipermendurat Shembuj: <!ATTLIST account acct-type CDATA “checking”> <!ATTLIST customer customer-id ID # REQUIRED accounts IDREFS # REQUIRED >

19 ID-t dhe IDREF-t Nje element mund te kete te shumten nje atribut te tipit ID Vlera e atributit ID te secilit element ne nje dokument XML duhet te jete i vecante (dallueshem) Keshtu qe, vlera e atributit ID eshte nje identifikues objekti Nje atribut i tipit IDREF duhet te permbaje vleren ID te nje elementi ne te njejtin dokument Nje atribut i tipit IDREF permban nje bashkesi (0 ose disa) vlera ID-sh Cdo vlere ID duhet te permbaje vleren ID te nje elementi ne te njejtin dokument

20 DTD e bankes me atributet
DTD e bankes me tipet e atributeve ID dhe IDREF <!DOCTYPE bank-2[ <!ELEMENT account (branch, balance)> <!ATTLIST account account-number ID # REQUIRED owners IDREFS # REQUIRED> <!ELEMENT customer(customer-name, customer-street, customer-city)> <!ATTLIST customer customer-id ID # REQUIRED accounts IDREFS # REQUIRED> … declarations for branch, balance, customer-name, customer-street and customer-city ]>

21 Te dhenat XML me atributet ID dhe IDREF
<bank-2> <account account-number=“A-401” owners=“C100 C102”> <branch-name> Downtown </branch-name> <balance> </balance> </account> <customer customer-id=“C100” accounts=“A-401”> <customer-name>Joe </customer-name> <customer-street> Monroe </customer-street> <customer-city> Madison</customer-city> </customer> <customer customer-id=“C102” accounts=“A-401 A-402”> <customer-name> Mary </customer-name> <customer-street> Erin </customer-street> <customer-city> Newark </customer-city> </bank-2>

22 Limitet ne DTD Nuk ka tipe te elementeve tekst dhe atributeve
Gjithe vlerat jane string, jo integers, real etj E veshtire per te specifikuar bashkesine e parenditur te nenelementeve Zakonisht renditja eshte e pavend ne database (A | B)* lejon specifikimin e nje bashkesie te parenditur por, Nuk mund te siguroje qe cdo element nga A dhe B shfaqet vetem njehere ID-t dhe IDREF-t jane pa-tip Atributi owners i nje account-i mund te permbaje nje reference te nje account-i tjeter, i cili eshte pakuptim Atributi owners teorikisht duhet t’i referohet elementeve customer

23 Skema XML Skema XML eshte nje gjuhe skeme me e sofistikuar e cila adreson disavantazhet e DTD-s. Suporton: Tipin e vlerave P.sh. Integer, string etj Gjithashtu, kufizimet ne vlerat min/max tipet e percaktuara nga perdoruesi Vete specifikohet ne sintaksen XML, ndryshe nga DTD-ja Perfaqesim me standard Integrohet me emertimet Disa tipare te tjera Tipet e listave, uniciteti dhe kufizimet e celesave te jashtem, trashegimia .. POR, nga ana kuptimore me e komplikuar se DTD, akoma nuk gjen nje perdorim te gjere

24 Versioni XML i skemes te bankes DTD
<xsd:schema xmlns:xsd= <xsd:element name=“bank” type=“BankType”/> <xsd:element name=“account”> <xsd:complexType> <xsd:sequence> <xsd:element name=“account-number” type=“xsd:string”/> <xsd:element name=“branch-name” type=“xsd:string”/> <xsd:element name=“balance” type=“xsd:decimal”/> </xsd:squence> </xsd:complexType> </xsd:element> ….. Percaktimet per customer dhe depositor …. <xsd:complexType name=“BankType”> <xsd:squence> <xsd:element ref=“account” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“customer” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“depositor” minOccurs=“0” maxOccurs=“unbounded”/> </xsd:sequence> </xsd:complexType> </xsd:schema>

25 Querying dhe transformimi i te dhenave XML
Perkthimi i informacionit nga nje skeme XML ne nje tjeter Querying ne te dhenat XML Qe te dyja jane te lidhur ngushte dhe trajtohen nga tools-e te njejta Gjuhet querying/translation standarde XML XPath Gjuhe e thjeshte qe konsiston ne shprehjet e path-ve XSLT Gjuhe e thjeshte e dizenjuar per perkthimin nga XML-XML dhe XML-HTML XQuery Nje gjuhe kerkesash XML me nje bashkesi te pasur cilesish Shumellojshmeria e gjuheve te tjera eshte propozuar dhe disa kane sherbyer si baze per standardin Xquery XML-QL, Quilt, XQL, …

26 Modeli i pemes te te dhenave XML
Gjuhet query dhe transformimit jane bazuar ne nje model peme qe i korrespondon elementeve dhe atributeve Nyjet e elementeve kane nyje femije, qe mund te jene atribute ose nenelemente Teksti ne nje element modelohet si nje nyje tekst femije te nje elementi Femijet e nje nyje jane te renditur ne baze te renditjes se tyre ne dokumentin XML Nyjet e elementit dhe te atributit (pervec nyjes rrenje) kane nje prind te vetem, qe eshte nje nyje elementi Nyja e rrenjes ka nje femije te vetem, qe eshte elementi rrenje i dokumentit Perdorim terminologjine e nyjeve, femije, prind, moter/vella, stergjysh, pasaardhesit etj, qe duhet te interpretohen ne modelin e pemes se mesiperme te te dhenave XML

27 XPath XPath perdoret per adresuar (select) pjese te dokumenteve duke perdorur shprehjet rrugekalim (path) Nje shprehje path eshte nje sekuence hapash te ndara me “/” E njejte me emrat e file-ve ne nje hierarki direktorish Rezultati i nje shprehje rrugekalimi: bashkesi vlerash qe permbahen pergjate elementeve/atributeve pershtat path-in e specifikuar P.sh /bank-2/customer/customer-name e vleresuar ne bank-2 data kthen: <customer-name>Joe</customer-name> <customer-name>Mary</customer-name> P.sh /bank-2/customer/customer-name/text( ) kthen emrat e njejte, por pa tags-et e mbyllura

28 Xpath (vazhd..) Iniciali “/” shenon rrenjen e dokumentit (mbi tag-un e nivelit- siperm) Shprehjet path vleresohen nga e majta ne te djathte Cdo hap vepron ne bashkesine e instancave e krijuar nga hapi paraardhes Predikatet e selektimit mund te ndjekin cdo hap ne nje rrugekalim, duke perdorur [ ] P.sh. /bank-2/account[balance > 400] Kthen elementet accounts me nje vlere balance > 400 /bank-2/account[balance] kthen elementet accounts qe permbajne nje nenelement balance Atributet aksesohen duke perdorur P.sh /bank-2/account[balance > Kthen account-number te atyre accounts me nje balance > 400 Atributet IDREF nuk referohen automatikisht

29 Funksionet ne XPath XPath siguron funksione te ndryshme
Funksioni count() ne fund te path-it numeron numrin e elementeve ne bashkesi te gjeneruar nga path-i P.sh. /bank-2/account[customer/count() > 2] Kthen accounts > 2 customers (ato account qe kane me shume se 2 klienta) Gjithashtu eshte funksioni per testimin e pozicionit te nyjes (1, 2, ..) Lidhezat logjike and dhe or dhe funksioni not() mund te perdoren ne predikate

30 Cilesi te tjera te XPath
Operatori “|” perdoret per te implementuar bashkimin P.sh | /bank- Paraqet klientat qe kane ose accounts ose loans Megjithate, “|” nuk mund te nderfutet brenda operatoreve te tjere “//” mund te perdoret per te kapercyer nivele te shumta te nyjeve P.sh /bank-2//customer-name Gjeni cdo element customer-name kudo nen elementin /bank-2 , pavaresisht nga elementi ne te cilin permbahet Nje hap ne path mund t’iu dergoje ne: Prind,moter/vella, stergjysh, pasardhes te nyjeve te gjeneruar nga hapi paraardhes, jo vetem ne femije Nga pershkrimi i mesiperm, eshte nje forme e shkurter per specifikimin e “gjithe pasaardhesve” “..” specifikon prindin

31 XSLT Nje stylesheet (stil_flete) ruan opsionet e formatimit per nje dokument, zakonisht te ndare nga dokumenti P.sh. Style sheet i HTML-se mund te specifikoje ngjyrat e font-ve dhe madhesite per titujt, etj XML Stylesheet Language (XSL) u dizenjua fillimisht per gjenerimin e HTML-se nga XML-ja XSLT eshte nje gjuhe transformimi me qellim-pergjithshem Mund te perktheje XML-XML, dhe XML-HTML Transformimet XSLT shprehen nepermjet rregullave te quajtur templates Templates kombinojne selektimin duke perdorur XPath me rezultatin

32 Template-i XSLT Shembulli i template-it XSLT me pjeset match dhe select <xsl:template match=“/bank-2/customer”> <xsl:value-of select=“customer-name”/> </xsl:template> <xsl:template match=“*”/> Atributi match i xsl:template specifikon nje model ne XPath Elementet ne dokumentin XML ne lidhje me modelin procesohen nga veprimet brenda elementit xsl:template xsl:value-of selekton (output) vlerat e specifikuara (ketu, customer-name) Per elementet qe nuk lidhen me asnje template Atributet dhe permbajtja e tekstit paraqiten ashtu sic jane Template-t aplikohen ne menyre rekursive ne nenelemente Template-i <xsl:template match=“*”/> lidh gjithe elementet qe nuk kane te bejne me asnje template tjeter Perdoret per te siguruar qe permbajtja e tyre nuk ka output

33 Template-i XSLT Nese nje element lidhet me disa template, vetem njeri perdoret: Ai qe varet ne nje skeme komplekse prioriteti e percaktuar nga perdoruesi Supozojme se vetem nje template lidh cdo element

34 Krijimi i output-it XML
Cdo tekst ose tag ne stylesheet XSL qe nuk eshte ne emertimet xsl paraqitet ashtu sic eshte: P.sh. per te paraqitur rezultatet ne elemente te rinj XML <xsl:template match=“/bank-2/customer”> <customer> <xsl:value-of select=“customer-name”/> </customer> </xsl;template> <xsl:template match=“*”/> Shembull output-i: <customer> Joe </customer> <customer> Mary </customer>

35 Krijimi i output-it XML
Shenim: nuk mundet te insertoje direkt nje tag xsl:value-of brenda nje tag-u tjeter P.sh. Nuk mund te krijoj nje atribut per <customer> ne shembullin e meparshem duke perdorur direkt xsl:value-of XSLT siguron nje konstrukt xsl:attribute per te trajtuar kete situate P.sh. <customer> <xsl:attribute name=“customer-id”> <xsl:value-of select = “customer-id”/> </xsl:attribute> </customer> rezulton ne kete forme output-i <customer customer-id=“….”> …. xsl:element perdoret per te krijuar elemente output me emra te perllogaritur

36 Rekursioni strukturor
Veprimi i nje template-i mund te jete qe ne menyre rekursive te aplikohen template-t permbajtjeve te nje elementi lidhes P.sh. <xsl:template match=“/bank”> <customers> <xsl:template apply-templates/> </customers > </xsl:template> <xsl:template match=“/customer”> <customer> <xsl:value-of select=“customer-name”/> </customer> <xsl:template match=“*”/> Shembull output-i: <customers> <customer> John </customer> <customer> Mary </customer> </customers>

37 Joins ne XSLT Celesat XSLT lejojne indeksimin e elementeve nepermjet vlerave te nenelementeve ose atributeve Celesat duhet te deklarohen (me nje emer) dhe, pastaj funksioni key() mund te perdoret per kerkim. P.sh <xsl:key name=“acctno” match=“account” use=“account-number”/> <xsl:value-of select=key(“acctno”, “A-101”) Celesat lejojne (disa) bashkime per t’u shprehur ne XSLT <xsl:key name=“acctno” match=“account” use=“account-number”/> <xsl:key name=“custno” match=“customer” use=“customer-name”/> <xsl:template match=“depositor”> <cust-acct> <xsl:value-of select=key(“custno”, “customer-name”)/> <xsl:value-of select=key(“acctno”, “account-number”)/> </cust-acct> </xsl:template> <xsl:template match=“*”/>

38 Perdorimi ne XSLT Perdorimi i nje direktive xsl:sort brenda nje template-i shkakton renditjen e gjithe elementeve lidhes ne template Sortimi behet perpara aplikimit te template-ve te tjera P.sh <xsl:template match=“/bank”> <xsl:apply-templates select=“customer”> <xsl:sort select=“customer-name”/> </xsl:apply-templates> </xsl:template> <xsl:template match=“customer”> <customer> <xsl:value-of select=“customer-name”/> <xsl:value-of select=“customer-street”/> <xsl:value-of select=“customer-city”/> </customer> <xsl:template> <xsl:template match=“*”/>

39 XQuery XQuery eshte nje gjuhe query me qellim te pergjithshem per te dhenat XML Aktualisht po standardizohet nga W3C XQuery perdor nje sintakse for … let … where .. result … for  SQL from where  SQL where result  SQL select let lejon variablat e perkohshem, dhe nuk ka ekuivalent ne SQL

40 Sintaksa ne XQuery Shprehja for perdor shprehjet XPath, dhe variablat ne shprehjen for te radhitur nga vlerat ne bashkesine e kthyer nga XPath Shprehja e thjeshte FLWR ne XQuery Gjeni gjithe llogarite me balance > 400 me secilin rezultat te perfshire ne tag-un <account-number> .. </account-number> for $x in /bank-2/account let $acctno := where $x/balance > return <account-number> $acctno </account-number> Shprehja let nuk nevojitet ne kete query, dhe selektimi mund te behet ne XPath. Query mund te shkruhet si: for $x in /bank-2/account[balance>400] return <account-number> </account-number>

41 Shprehjet path dhe funksionet
Shprehjet path perdoren per te lidhur variablat ne shprehjen for por mund te perdoren edhe ne zona te tjera P.sh shprehjet path mund te perdoren ne shprehjen let, per te lidhur var me rezultatet e shprehjeve te path-ve Funksioni distinct( ) mund te perdoret per te hequr perseritjet ne rezultatet e shprehjeve path Funksioni document(name) kthen rrenjen e dokumentit te emeruar P.sh . document(“bank-2.xml”)/bank-2/account Funksionet aggregate si sum( ) dhe count( ) mund te aplikohen ne rezulatet e shprehjeve path

42 Joins Joins specifikohen ne nje menyre shume te ngjashme me SQL for $a in /bank/account, $c in /bank/customer, $d in /bank/depositor where $a/account-number = $d/account-number and $c/customer-name = $d/customer-name return <cust-acct> $c $a </cust-acct> E njejta query mund te shprehet me selektimet e specifikuara si selektime Xpath: for $a in /bank/account $c in /bank/customer $d in /bank/depositor[ account-number = $a/account-number and customer-name = $c/customer-name] return <cust-acct> $c $a</cust-acct>

43 Aplikacionet Ekzistojne dy nderfaqe standarde programesh per te dhenat XML: SAX (Simple API for XML) E bazuar ne modelin analizor, perdoruesi siguron trajtimin e eventeve per te analizuar eventet P.sh. Fillim i nje elementi, fund i nje elementi Jo i pershtatshem per aplikacionet e database-it DOM (Document Object Model) XML te dhenat analizohen ne nje perfaqesim te nje peme Shume funksione sigurohen per pershkrimin e pemes DOM Java DOM API siguron klasen Node me metodat getParentNode( ), getFirstChild( ), getNextSibling( ) getAttribute( ), getData( ) (for text node) getElementsByTagName( ), … Gjithashtu siguron funksionet per update-in e pemes DOM

44 Ruajtja e te dhenave XML
Te dhenat XML mund te ruhen ne: Te dhenat jo-relacionale ruajne: Flat files (skedaret e sheshte) I zakonshem per ruajtjen XML Por ka plot probleme qe i kemi diskutuar si njekohshmerine dhe rigjetjen e te dhenave.. Database-i XML Database eshte i ndertuar ne menyre te vecante per te ruajtur te dhenat XML, duke suportuar modelin DOM dhe deklarimin e query-ve Aktualisht nuk ka sisteme ne shkalle komerciale Database-t relacionale Te dhenat duhet te perkthehen ne nje forme relacionale Avantazhi: sisteme database-i me te arrire Disavantazhi: mbingarkese ne perkthimin e te dhenave dhe query

45 Ruajtja e te dhenave XML ne database-t relacionale
Alternativat: Paraqitja me ane te stringave Paraqitja me ane te pemes Paraqitja me ane te kalimit ne relacione

46 Paraqitja me ane te stringave
Ruan cdo element te nivelit te siperm si nje fushe string te nje rreshti ne nje database relacional Perdor nje relacion te vetem per te ruajtur te gjithe elementet ose, Perdor nje relacion te ndare per cdo tip elementi te nivelit te siperm P.sh relacionet account, customer, depositor Secili me nje atribut me vlere-string per te ruajtur elementin Indeksimi: Ruan vlerat e nenelementeve/atributeve per t’u indeksuar si fusha ekstra te relacionit, dhe krijon indekset ne keto fusha P.sh customer-name ose account-number Oracle 9 suporton indekset e funksionit i cili perdor rezultatin e nje funksioni si nje vlere celes Funksioni duhet te ktheje vleren e nenelementit/atributit te kerkuar

47 Paraqitja me ane te stringave
Avantazhet : Mund te ruaje cdo te dhene XML edhe pse pa DTD Per sa kohe qe ekzistojne disa elemente te nivelit te siperm ne nje dokument, string-t nuk krahasohen me dokumentin e plote Lejon aksesin e shpejte per te aksesuar elementet individual. Dizavantazhet: eshte e nevojshme per te analizuar string-t per te aksesuar vlerat brenda elementeve Analizimi eshte i ngadalshem.

48 Paraqitja me ane te pemes
Paraqitja me ane te pemes: modelon te dhenat XML si peme dhe ruhen duke perdorur relacionet nodes(id, type, label, value) child (child-id, parent-id) Cdo element/atribut i jepet nje identifikues unik Tipi tregon elementin/atributin Etiketa specifikon emrin e tag-t te elementit/emrit te atributit Vlera eshte nje vlere teksti te elementit/atributit Relacioni child shenon relacionin parent-child ne peme Mund te shtojne nje atribut ekstra ne child per te regjistruar renditjen e femijeve bank (id:1) customer (id:2) account (id: 5) customer-name (id: 3) account-number (id: 7)

49 Paraqitja me ane te pemes
Avantazhi: mund te ruaje cdo te dhene XML edhe pse pa DTD dizavantazhet: Te dhenat ndahen ne disa pjese, duke rritur tejkalimin e hapesires Edhe query-t e thjeshta kerkojne nje numer te madh joins , qe shkaktojne nje ngadalesim

50 Kalimi i te dhenave XML ne relacione
Kalimi ne relacione Nqs njihet DTD e nje dokumenti, mund te kaloje te dhenat ne relacione Nje relacion krijohet per cdo tip elementi Elementet (e tipit #PCDATA), dhe atributet kalohen ne atribute te relacioneve Avantazhet: Ruajtje efikase Mund te perktheje query-t XML ne SQL, ekzekutohen ne menyre efektive, dhe pastaj perkthen rezultatet SQL perseri ne XML Dizavantazhet : eshte e nevojshme te njihet DTD

51 Kalimi i te dhenave XML ne relacione
Relacioni i krijuar per cdo tip elementi permban: Nje atribut id per te ruajtur nje id unike per cdo element Nje atribut relacioni korrespondues per cdo atribut elementi Nje atribut parent-id per te ruajtur gjurmet e elementit prind Si ne rastin e paraqitjes me ane te pemes Informacioni rreth pozicionit (ith child) gjithashtu mund te ruhet Gjithe nenelementet qe shfaqen vetem njehere mund te behen atribute te relacioneve Per nenelementet me vlere –tekst, ruan tekstin si vlere atributi Per nenelementet komplekse, mund te ruhet id e nenelementit Nenelementet qe mund te shfaqen disa here paraqiten ne nje tabele te vecuar E ngjashme me trajtimin e atributeve shumevleresh kur konvertohen nga diagramat ER ne tabela

52 Kalimi i te dhenave XML ne relacione
P.sh per DTD e bank-1 me elementet account te nderfutur brenda elementeve customer, krijohen relacione customer(id, parent-id, customer-name, customer-stret, customer-city) parent-id mund te fshihet meqe parent eshte elementi i vetem rrenje Gjithe atributet e tjere ishin nenelemente te tipit #PCDATA, dhe shfaqen vetem njehere account (id, parent-id, account-number, branch-name, balance) parent-id ruan gjurmet e cdo account-i qe shfaqet nen customer I njejti account mund te paraqitet disa here me parents te ndryshem


Download ppt "LEKSION 12 XML (Extensible Markup Language) Skema XML"

Similar presentations


Ads by Google