PB138cv/Cv10

Z FI WIKI
Přejít na: navigace, hledání

Dotazovací jazyky

  • XML dokument
    • dokument, ve kterém značkujeme strukturu
    • struktura, sloužící k plnění dat
  • obé potřebuje dotazovací jazyk pro nalezení,získání, transformaci obsahu
  • XPath - ten používá i XSLT - jednoduchý (jednoduché podmínky, jeden soubor)
  • XQL, XMLQL, XQueryX, XQuery

XQuery

  • vychází z SQL, předchozích XML dotazovacích jazyků
  • není XML. (existuje i syntax v XML)
  • pro výběr podstruktury užívá XPath
  • pro typy dat používá XML Schema

Tutoriály:


"Rozšířený" XPath

  • adresace v množině dokumentů (doc(URL))
doc("data/soubor.xml")/auta/automobil[dveri < 5]
  • Výsledek - jeden či více XML fragmentů. Pořadí fragmentů je dáno pořadím v dokumentu (!)
  • můžeme používat
    • XML - "chytne" se na něj jen samotná taková struktura
      • v transformační části - definice návratové struktury
    • proměnné - značíme $jmeno

FLWOR = For Let Where Order Return

Obecná struktura dotazu v XQuery

for $d in doc("oddeleni.xml")//cislo
let $e := doc("zamestnanci.xml")//zamestnanec[cisloodd = $d]
where count($e) >= 10
order by avg($e/plat) descending
return
 <oddeleni>
    { $d,
       <zamestnancu>{count($e)}</zamestnancu>,
       <prumplat>{avg($e/plat)}</prumplat>
    }
 </oddeleni>
  • for $prom in LIST vybírá seznam dokumentů či elementů, ve kterých chceme vyhledávat.
  • let $prom := XPath vybírá (pro dané přiřazení) další přiřazení - ale jedno
  • where PODMINKA určuje podmínku, kterou musí splňovat vybrané skupiny,
  • order by definuje seřazení
  • return definuje návratovou hodnotu - tj. XML strukturu
    • let a for se v dokumentu může vyskytovat víc (pokud chceme vybrat větší skupinu, n-tici elementů/podstromů pro práci s nimi.
    • LIST - buď nejednoznačné XPath, nebo seznam oddělený čárkami, může se omezovat ještě funkcemi
    • PODMINKA - může používat i existenční some() či absolutní all() kvantifikátory
    • FUNKCE - uživatel může definovat své vlastní fce
    • IF/THEN/ELSE - v části definice návratové hodnoty můžeme rozhodovat na základě hodnot proměných

Využití

V Javě

java -classpath saxon9.jar net.sf.saxon.Query -o [cesta k vystupnimu souboru] [cesta k souboru s XQuery dotazem]

Příklad

Na této adrese je seznam mnoha receptů. Vytvořte XQuery dotaz, který:

  • Vybere všechny tituly (title) receptů a vrátí je uzavřené v dokumentu s kořenovým elementem <recepty>
  • Vybere taková jídla, která obsahují více než 0,2 lžičky másla a vrátí pro ně záznamy s titulkem a nutriční hodnotou (element jidlo, podelementy title a nutricnihodnota - bude mít atribut cal s hodnotou kalorií (v původním XML atribut calories).

XUpdate [1]

  • Jazyk pro úpravu XML
  • Není standard W3C, ale XML:DB
  • struktura podobná XSL-stylesheetu
    • kořen - xupdate:modifications
      • upravovací šablony (např. xupdate:insert-before, xupdate:insert-after, xupdate:append..., které pomocí XPath určí co se mění a jejich obsah určuje na co).
  • Javová implementace