1 / 34

XML Spletne tehnologije

XML Spletne tehnologije. Primerjava relacijskih in XML podatkov. { row : { name : “John”, phone : 3634 }, row : { name : “Sue”, phone : 6343 }, row : { name : “Dick”, phone : 6363 } }. row. row. row. phone. phone. phone. name. name. name. “Sue”. “John”. 3634. 6343.

job
Download Presentation

XML Spletne tehnologije

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

E N D

Presentation Transcript


  1. XML Spletne tehnologije

  2. Primerjava relacijskih in XML podatkov { row: { name: “John”, phone: 3634 }, row: { name: “Sue”, phone: 6343 }, row: { name: “Dick”, phone: 6363 } } row row row phone phone phone name name name “Sue” “John” 3634 6343 “Dick” 6363 Relacija … vXML

  3. Primerjava relacijskih in XML podatkov • Relacija je v osnovi drevo, ki ima: • Neomejeno število vozlišč na prvem nivoju(poljubno število vrstic) • Vozlišča prvega nivoja imajo natančno določeno stopnjo oz. število potomcev (natančno določeno število polj) • XML podatkovna struktura je v osnovi poljubno drevo, ki ima: • Neomejeno število vozlišč na vseh nivojih • Poljubno število nivojev • Spremenljivo število potomcev posameznih vozlišč • Spremenljivo dolžino poti

  4. Poizvedovalni jezik za XML • Mora biti visoko nivojski “SQL za XML” • Mora biti skladen zXSchema: • Delovati mora tudi v primerih, ko informacij o shemi ni. • Podpirati mora enostavne in kompleksne (gnezdene) podatkovne tipe. • Podpirati mora univerzalne in eksistencialne kvantifikatorje ter agregacijo. • Omogočati mora izvajanje operacij nad sekvencami in hierarhičnimi strukturami dokumentov. • Omogočati mora pretvorbo in izdelavo XML struktur.

  5. XQuery • Vplivi: XML-QL, Lorel, Quilt, YATL • Prebere sekvenco XML fragmentov ali pa atomarne vrednosti in vrne sekvenco XML fragmentov ali atomarne vrednost. • Vhodi/izhod so objekti, ki so definirani z XML-Query podatkovnim modelom in ne z nizi iz XML sintakse.

  6. XQuery: Pregled • Izrazi za pot (Path expressions) • Konstruktorji (Element constructors) • FLWOR izrazi (For-Let-Where-Order-Returnexpressions): • FOR, LET, WHERE, ORDER, RETURN stavek • Vključujejo tudi nekatere druge izraze, kot so na primer pogojni izrazi, izpisi, kvantifikatorji itd. • Generalizacija SELECT, FROM, HAVING, WHERE stavkov iz SQL • Kontekstno odvisni izrazi: • Element (trenutno vozlišče), • Pozicija (v nizu, ki ga obdelujemo), • Velikost (niza, ki ga obdelujemo), • Vključujejo tudi imenske prostore , spremenljivke, funkcije, datume itd.

  7. XQuery: Izraz za pot (Path Expressions) • Primer: • Bib/paper • Bib/book/publisher • Bib/paper/author/lastname • V XML dokumentu je vrednost poti pmnožica objektov, ki so dostopni po tej poti

  8. Bib &o1 paper paper book references &o12 &o24 &o29 references references author page author year author title http title title publisher author author author &o43 &25 &o44 &o45 &o46 &o52 &96 1997 &o51 &o50 &o49 &o47 &o48 first last firstname lastname lastname firstname &o70 &o71 &243 &206 “Serge” “Abiteboul” “Victor” 122 133 “Vianu” XQuery: Primer poti Doc = Bib/paper = <&o12,&o29> Bib/book/publisher = <&o51> Bib/paper/author/lastname= <&o71,&206> Zaporedje elementov je pomembno

  9. XQuery: Konstruktorji (Element Construction) • Z XQuery izrazi lahko sestavimo nove vrednosti in strukture. • Primer: če pogledamo poti, ki smo jih definirali na prejšnjem diapozitivu: • Vsaka pot opredeljuje nov niz elementov • Tvorimo lahko nove poljubne strukture

  10. XQuery: FLWOR izrazi • FOR-LET-WHERE-ORDERBY-RETURN = FLWOR FOR/LET stavek Seznam n-teric WHERE stavek Seznam n-teric ORDERBY/RETURN stavek Instanca (primerek) XQuery podatkovnega modela

  11. XQuery: FOR vs. LET… • FOR $x IN list-expr • Poveže $x s posameznimi vrednostmi v seznamu. • LET $x = list-expr • Poveže $x s celotnim seznamom • Uporaben je za gnezdenje izrazov in agregacijo

  12. XQuery: FOR vs. LET… • FOR obdela vsak element vhodnega zaporedja in rezultate združi v izhodno zaporedje • V običajnih primerih obstaja en izhodni element za vsak vhodni… • Primer: • Vhod (vhodno zaporedje): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 • Izhod (izhodno zaporedje): 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 for $n in (1 to 10) return $n * $n

  13. XQuery: FOR vs. LET… • Z XQuery LET stavkom deklariramo spremenljivko in ji priredimo vrednost • Primer: • Vsako pojavitev reference na spremenljivko zamenjamo z vrednostjo spremenljivke • Rezultat je ekvivalenten spodnjemu izrazu: let $maxCredit:= 3000 let $overdrawnCustomers := //customer[overdraft > $maxCredit] return count($overdrawnCustomers) count(//customer[overdraft > 3000])

  14. XQuery: FOR vs.LET Izhod: <result> <book>...</book></result> <result> <book>...</book></result> <result> <book>...</book></result> ... FOR$x IN document("bib.xml")/bib/book RETURN <result> $x </result> FOR vrne seznam kjer je $x združen z vsakim elementom book znotraj datoteke bib.xml Izhod: LET$x IN document("bib.xml")/bib/book RETURN <result> $x </result> <result> <book>...</book> <book>...</book> <book>...</book> ... </result> LET vrne rezultat kjer je $x združen s celotnim seznamom elementov book iz datoteke bib.xml.

  15. XQuery: Primer (1) • Poišči vse naslove knjig, ki so bile izdane po letu 1995: Izhod: FOR $x IN document("bib.xml")/bib/book WHERE $x/year > 1995 RETURN $x/title <title> abc</title> <title> def </title> <title> ghi </title>

  16. XQuery: Primer (2) … • Za vsakega avtorja knjige, ki jo je izdala založba Morgan Kaufmann, izpišite vse njegove izdane knjige FOR $a IN distinct(document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author) RETURN <result> $a, FOR $t IN /bib/book[author=$a]/title RETURN $t </result> distinctje funkcija, ki izloči duplikate (vhodni podatki se najprej pretvorijo v atomarne vrednosti, nato se izločijo duplikati)

  17. XQuery: Primer (2) Izhod: <result> <author>Jones</author> <title> abc </title> <title> def </title> </result> <result> <author> Smith </author> <title> ghi </title> </result> Ugnezdena struktura elementov rezultata je določena z ugnezdeno strukturo poizvedbe FOR $t IN /bib/book[author=$a]/title

  18. XQuery: WHERE • WHERE stavek opravlja podobno vlogo kot v SQL • določa selekcijski pogoj (filter) • je opcijski • pojavi se lahko samo enkrat in sicer takoj po FOR ali LET stavku for $genre in //genre/choice for $video in //video for $actorRefs in $video/actorRef for $actor in //actor where $video/genre = $genre and $actor/@id = $actorRefs return concat($genre, ": ", $actor)

  19. XQuery: Primer (3) • Izpišite vse založnike, ki so izdali več kot 100 knjig: <big_publishers> FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p </big_publishers> Za vsakega založnika p V b shrani seznam objavljenih knjig p-ja Preštej število knjig v bin vrni p, če je število knjig > 100 countje funkcija, ki vrne število elementov

  20. XQuery: Primer (4) • Izpišite vse knjige, ki imajo višjo ceno od povprečne: LET $a=avg(document("bib.xml")/bib/book/price) FOR $b in document("bib.xml")/bib/book WHERE $b/price > $a RETURN $b

  21. XQuery: Zbirke (Collections) … • Urejena zbirka • /bib/book/author • Neurejena zbirka • distinct(/bib/book/author) LET $a = /bib/book $aje stavek, ki iterira skozi vse knjige v zbirki tudi zbirka (več avtorjev…) $b/author Izhod: <result> <author>...</author> <author>...</author> <author>...</author> ... </result> RETURN <result> $b/author </result> Stavek vrne eno zbirko!

  22. XQuery: Zbirke (Collections) … • Zbirke v izrazih: Izraz je veljaven samo v primeru, da imata oba niza največ en element Atomatizacija seznam n cen $b/price seznam n številk ?? $b/price* 0.7 seznam n x m številk ?? $b/price* $b/quantity /book1/authoreq“Kennedy“ Primerjava vrednosti Splošna primerjava /book1/author= “Kennedy“

  23. XQuery: ORDERBY • Orderbystavek uredi rezultate poizvedbe • Primer: Video posnetke uredi oz. izpiši naraščajoče glede ne leto nastanka, znotraj posameznega leta pa padajoče glede na oceno gledalcev. FOR$x in //video ORDERBY$x/year ascending, number($x/user-rating) descending RETURN $x/title

  24. XQuery: RETURN • Vsak XQuery FLWOR izraz vsebuje return stavek • Return stoji vedno na koncu izraza • S stavkom določimo strukturo oz. zgradbo rezultata (Kaj vse bo vključeno v rezultat?) Izpišite vse igralce, ki igrajo v komedijah. FOR$vin //video[genre="comedy"] RETURN //actor[@id = $v/actorRef]

  25. XQuery: Urejanje <publisher_list> FOR $p IN distinct(document("bib.xml")//publisher) ORDERBY $p RETURN <publisher> <name> $p/text() </name>, FOR $b IN document("bib.xml")//book[publisher = $p] ORDERBY $b/priceDESCENDING RETURN <book> $b/title, $b/price </book> </publisher> </publisher_list>

  26. XQuery: If-Then-Else FOR $h IN //holding ORDERBY $h/title RETURN <holding> $h/title, IF $h/@type = "Journal" THEN $h/editor ELSE $h/author </holding>

  27. XQuery: Eksistenčni kvantifikator… • Eksistenčni kvantifikator je XQuery SOME operator. • Ali podanemu pogoju zadošča vsaj eno vozlišče znotraj množice vozlišč? • Ali obstaja vsaj ena cena, ki je višja od 1000? some $price in document("data/items.xml")//reserve_price satisfies $price > 1000 • Vrni vrednost, če obstaja vsaj ena cena, ki je višja od 1000.

  28. XQuery: Eksistenčni kvantifikator FOR $b IN //book WHERE SOME$p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title

  29. XQuery: Univerzalni kvantifikator • Univerzalni kvantifikator je XQuery EVERY operator • Ali podanemu pogoju zadoščajo vsa vozlišča znotraj podane množice vozlišč? FOR $b IN //book WHERE EVERY$p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title

  30. XQuery: Razno • Before in After: • Urejanje vhodnih podatkov. • Filter: • Omejevanje izhodnega drevesa. • Rekurzivne funkcije, • Imenski prostori (Namespaces) • Reference, povezave … • …

  31. XML-Query Podatkovni model • Opis XML podatkov v obliki drevesa Node::= DocNode| ElemNode|ValueNode| AttrNode| NSNode|PINode|CommentNode|InfoItemNode| RefNode http://www.w3.org/TR/query-datamodel/2/2001

  32. XML-Query Podatkovni model • Elementarno vozlišče (poenostavljena definicja) elemNode : (QNameValue, {AttrNode },[ ElemNode | ValueNode])ElemNode Daj mi značko, nabor atributov, seznam elementov/vrednosti in jaz ti bom vrnil element QNameValueje naziv značke

  33. XML-Query Podatkovni model <bookprice = “55” currency = “USD”> <title> Foundations … </title> <author> Abiteboul </author> <author> Hull </author> <author> Vianu </author> <year> 1995 </year> </book> book1= elemNode(book, {price2, currency3}, [title4, author5, author6, author7, year8]) price2 = attrNode(…) /* next */currency3 = attrNode(…)title4 = elemNode(title, string9)…

  34. Dodatno gradivo: • Dodatne informacije so dostopne na spodnjih povezavah: • http://www.w3.org/TR/xquery • Specifikacije • http://www.w3.org/XML/Query#products • Implementacije • http://xml.coverpages.org/xmlQuery.html • XQuery (povzetki in povezave) • http://www.xmlstarterkit.com/ • Software AG’s XML server s podporo XQuery • http://www.xquery.com • Tutoriali • http://www.saxonica.com • Odprtokodna XQuery implementacija

More Related