LEKSION 12 XML (Extensible Markup Language) Skema XML

Slides:



Advertisements
Similar presentations
XML Examples. Bank Information Basic structure: A-101 Downtown 500 … Johnson Alma Surrey … A-101 Johnson …
Advertisements

Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
L13-S1 XML 2003 SJSU -- CmpE Database Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San José State.
1 Advanced Topics XML and Databases. 2 XML u Overview u Structure of XML Data –XML Document Type Definition DTD –Namespaces –XML Schema u Query and Transformation.
XML Query Languages Notes Based on Chapter 10 of Database System Concepts.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
Lecture 7 of Advanced Databases XML Querying & Transformation Instructor: Mr.Ahmed Al Astal.
 Structure of XML Data  XML Document Schema  Querying and Transformation  Application Program Interfaces to XML  Storage of XML Data  XML Applications.
©Silberschatz, Korth and Sudarshan10.1Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium (W3C) Originally.
XML By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany) DIRECTOR ARUNAI ENGINEERING COLLEGE TIRUVANNAMALAI.
Chapter 10: XML.
Lecture 6 of Advanced Databases XML Querying & Transformation Instructor: Mr.Eyad Almassri.
Computing & Information Sciences Kansas State University Friday, 17 Oct 2007CIS 560: Database System Concepts Lecture 21 of 42 Friday, 17 October 2008.
Chapter 10: XML XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data.
XMLI Structure of XML Data Structure of XML Data XML Document Schema XML Document Schema XPATH XPATH.
Computing & Information Sciences Kansas State University Thursday, 15 Mar 2007CIS 560: Database System Concepts Lecture 24 of 42 Thursday, 15 March 2007.
Algjebra Relacionale & SQL
Temple University – CIS Dept. CIS616– Principles of Data Management V. Megalooikonomou XML ( based on slides by Silberschatz, Korth and Sudarshan at Bell.
Chapter 23 XML. 2 Introduction  XML: eXtensible Markup Language (What is a Markup language?)  Defined by the WWW Consortium (W3C)  Originally intended.
Database System Concepts Bin Mu at Tongji University Chapter 10: XML.
CIS750 – Seminar in Advanced Topics in Computer Science Advanced topics in databases – Multimedia Databases V. Megalooikonomou XML ( based on slides by.
©Silberschatz, Korth and Sudarshan10.1Database System Concepts XML Query Languages Notes Based on Chapter 10 of Database System Concepts.
1. XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data XML Applications.
Computing & Information Sciences Kansas State University Friday, 20 Oct 2006CIS 560: Database System Concepts Lecture 24 of 42 Friday, 20 October 2006.
Database System Concepts ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 10: XML.
Chapter 10: XML. XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data XML.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
L14-S1 XML 2003 SJSU -- CmpE Database Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San José State.
Chapter 10: XML Introduction  XML: Extensible Markup Language  Defined by the WWW Consortium (W3C)  Originally intended as a document.
10.1 Chapter 10: XML Sections Problems 10.1, 10.2, 10.7 Find an example of using XML in a field of interest to you and describe it to the class.
Querying and Transforming XML Data
XML By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany)
Leksioni nr 2 Data Base.
Variablat Konstantet Strukturat e kontrollit Ciklet Tabelat (Arrays)
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
TIK 12 – Prof. Blerand Koshi
Marrja e te inputit te perdoruesit
Algoritmet e Renditjes
LEKSION 6 SQL. Struktura baze. Query-t. Veprimet me bashkesi.
Funksionet ne PHP PhD, MS, Under Leksion 8.
Bazat e te dhenave Elemente kryesore te MySQL-se
LEKSION 11 Database-t Object-Oriented(te orientuar objekt)
Elementet e gjuhës C++.
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
JavaScript Leksion 8.
Elementet e gjuhës C++.
Overview XML DTD, XML Schema Xpath, XQuery Xslt
Universiteti AAB Programi: PSIKOLOGJI STATISTIKE T-testi Për grupet e pavarura Për grupet e varura Dr.sc. Merita Shala.
Chapter 10: XML.
Perdorimi i Multimedias ne Web
Algoritmet e Sortimit.
Menaxhimi i perdoruesve dhe grupeve
F U N K S I O N E T.
LEKSION 9 Dizenjimi i database-it relacional.
Variablat dhe Funksionet
I Love my family!!!.
Perpunimi i stringjeve
Ms Word 2003.
Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.
LEKSION 4 Diagrama E-R. Karakteristika te modelit të zgjeruar E-R.
Format ne HTML/XHTML Leksion Jan-19.
Targetimi i elementeve specifike
Degëzimet.
TIK 12 – Prof. Blerand Koshi
Chapter 10: XML.
Ms Word 2003.
Chapter 10: XML.
SMART TOURISM ENHACEMENT PROJECT
Presentation transcript:

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

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

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-101 </account-number> <branch-name> Downtown </branch-name> <balance> 500 </balance> </account> <depositor> <account-number> A-101 </account-number> <customer-name> Johnson </customer-name> </depositor> </bank>

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

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 email headers (kokat e email-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

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

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> 400 </balance> </account> … </customer> . . </bank-1>

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

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

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

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

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

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=‘http://www.FirstBank.com’> … <FB:branch> <FB:branchname>Downtown</FB:branchname> <FB:branchcity> Brooklyn </FB:branchcity> </FB:branch> … </bank>

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

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

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 “+” - 1 ose me shume shfaqje “*” - 0 ose me shume shfaqje

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

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 >

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

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 ]>

Te dhenat XML me atributet ID dhe IDREF <bank-2> <account account-number=“A-401” owners=“C100 C102”> <branch-name> Downtown </branch-name> <balance> 500 </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>

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

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

Versioni XML i skemes te bankes DTD <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema> <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>

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, …

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

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

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 > 400]/@account-number Kthen account-number te atyre accounts me nje balance > 400 Atributet IDREF nuk referohen automatikisht

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

Cilesi te tjera te XPath Operatori “|” perdoret per te implementuar bashkimin P.sh /bank-2/account/id(@owner) | /bank- 2/loan/id(@borrower) 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

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

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

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

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>

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

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>

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=“*”/>

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=“*”/>

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

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 := $x/@account-number where $x/balance > 400 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> $x/@account-number </account-number>

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

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>

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

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

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

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

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.

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)

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

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

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

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