Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.

Podobné prezentace


Prezentace na téma: "XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů."— Transkript prezentace:

1 XQuery Dotazovací jazyk XML Daniel Privalenkov

2 O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů

3 K čemu je dobrý XML Umožňuje výměnu informací mezi internet-aplikacemi nezávisle na způsobu ukládání dat Flexibilita v reprezentaci různých informací Data jsou „samovysvětlující“

4 Proč potřebujeme speciální dotazovací jazyk pro XML Relační data:  pravidelná struktura  jednorozměrné  většinou „hustá“ … XML data  nepravidelná struktura  velmi často vnořené elementy  často řídká …

5 Syntaxe XQuery Vyjádření pomocí XML Optimalizovaná pro lidí

6 Datový model Posloupnost – uspořádaná množina prvků (může být i prázdná) Prvek – uzel nebo atomická hodnota Atomická hodnota – hodnota nějakého základního typu definovaného v XML Existuje 7 druhů uzlů: element, atribut, text, dokument, komentář, instrukce, namespace

7 Uzly mohou mít další uzly jako své potomky Některé uzly mají jména nebo typovou hodnotu Typová hodnota – posloupnost (i prázdná) atomických hodnot uzly mají přiřazeny identitu Mezi všemi uzly existuje celková hierarchie – tzv. uspořádání dokumentu (document order) Posloupnosti mohou být heterogenní Posloupnost nemůže být prvkem jiné posloupnosti

8 Error hodnota – vzniká jako výsledek vyhodnocení výrazu, který obsahuje chybu

9 Převod XML na datový model Validace schématu (Schema validation) – XML -> DM Serializace – DM -> XML

10

11

12 Výrazy XQuery je CASE sensitive Komentáře: {-- ………. --} Literály – např. 47, 4.7, 4.7E3 atd. Konstruktor – vytvoření atomických hodnot konkrétního typu např. date(“2002-5-31”) Závorky, - konkatenace dvou posloupností, Např. 1,2,3 = (1,2,3) = 1 to 3 = ((1,2),(), 3)

13 Proměnné - $jmeno_promenne Let – spojuje proměnné a pak vyhodnocuje vnitřní výraz let $start := 1, $stop := 3 return $start to $stop Volání funkcí substring(“Martha Washington”, 1, 6)

14 Výrazy cesty (path expressions) Posloupnost výrazů oddělených lomítkem Krok = výraz mezi lomítky Výsledkem kroku je posloupnost uzlů Celkovým výsledkem je výsledek posledního kroku Každý krok je vyhodnocen v kontextu konkrétního uzlu – kontextový uzel Osový krok

15 Osy: child, descendant, parent, attribute, self, descendant-or-self 2 syntaxe path výrazů: abbreviated unabbreviated

16 Příklady P1 Napište seznam všech položek nabízených na prodej Smithem document(“items.xml”)/child::* /child::item[child::seller = “Smith”] /child::description document(“items.xml”)/*/item[seller = “Smith”] / description

17 P2 Napište seznam všech elementů typu description, které se nacházejí v dokumentu items.xml document(“items.xml”)//description

18 P3 Najděte atribut statusu položky, která je rodičem zadané proměnné $description $description/../@status

19 Predikáty Výraz v hranatých závorkách např. item[seller = “Smith”] Operátory porovnání hodnot: eq, ne, lt, le, gt, ge Obecné porovnávací operátory: =, !=, >, >=, <, <= Operátory porovnání uzlů: is, isnot

20 Operátory porovnání pořadí uzlů > Logické operátory and, or negace: not

21 Konstruktory elementů 4871 250.00

22 {$i} {max($bids[itemno=$i]/[bidamount)}

23 { $b/@status, $b/itemno, $b/bid-amount }

24 Computed element constructor element {name($e)} {$e/@*, data($e)*2}

25 Computed attribute constructor Attribute {if $p/sex =“M” then “father” else “mother} {$p/name}

26 Iterace a třídění for $n in (2,3) return $n + 1 for $m in (2,3), $n in (5,10) return {$m} times {$n} is {$m * $n}

27 Př. Pro každou položku, která má více než 10 nabídek vygenerujte element „populární nabídka“, který bude obsahovat číslo položky, popis a počet nabídek for $i in document(“items.xml”)/*/item let $b := document(“bids.xml”)/*/bid[itemno = $i/itemno] where count ($b) > 10 return { $i/itemno, $i/description, {count($b)} } sortby bid-count descending

28 Aritmetika Základní operace: +,-,*, div, mod Agregační funkce: sum, avg, count, max, min Aplikace těchto operací na prázdnou posloupnost vrací prázdnou posloupnost

29 Operace nad posloupnostmi union - sjednocení intersect - průnik except – rozdíl

30 Př. Sestrojte nový element nedávné velké nabídky, který bude obsahovat kopie všech nabízených elementů z bids.xml takové, že mají bid-amount větší než 1000 a datum po 1. lednu 2002 document(“bids.xml”)/*/bid[bid-amount >1000.00] interesects document(“bids.xml”)/*/bid[bid-date > date(“2002- 01-01”)]

31 Podmínky if then else if ($part/@discounted) then $part/wholesale else $part/retail

32 Kvantifikace every satisfies some satisfies Př. Najděte položky v items.xml, pro které všechny nabídky byly dvakrát větší než rezervovaná cena. Vraťte kopie všech těchto elementů „zabalené“ do nového elementu, který se bude jmenovat podhodnocená cena. for $i in document(“items.xml”) where every $b in document(“bids.xml”)/*/bid[itemno = $i/itemno] satisfies $b/bid-amount > 2 * $i/reserve-price return $i

33 Funkce define function highbid(element $item) returns decimal { max(document(“bids.xml”) //bid [itemno = $item/itemno]/bidamount) } highbid(document(“items.xml”)//item[itemno = “12”)


Stáhnout ppt "XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů."

Podobné prezentace


Reklamy Google