1 PRG036 – Technologie XML Přednáší: Irena Mlýnková Martin Nečaský

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
CXPath Dotazování nad heterogenními XML zdroji s pomocí konceptuálního schéma Jan Vávra, 21. dubna 2004
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
C# pro začátečníky Mgr. Jaromír Osčádal
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Programování v C++ Cvičení.
Práce s Xml ● Základní moduly pro práci s XML: – Xml.dom – Document Object Model API – Xml.dom.minidom ● Základní objekt je Dokument – stromová struktura.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
1 PRG036 – Technologie XML Přednáší: Irena Mlýnková Martin Nečaský
Návrh a tvorba WWW Cvičení 4
XML Schema Irena Mlýnková. Obsah XML – úvod, příklad, základní pojmy DTD – přehled XML Schema – podrobně.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
XML na papír Dušan Fencl
Programovací jazyk Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Databázové modelování
Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK.
RDF a RQL Roman Krejčík. RDF a RQL RDF – Resource Description Framework –Jazyk pro ukládání informací v XML –RDF Schema RQL – RDF Query Language –Dotazování.
Databáze velké množství dat pevně dané struktury
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
XML data na disku jako databáze Kamil Toman
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Pokročilé programování v C++ (část B)
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Vícerozměrný přístup pro indexování XML dat
Úvod do UNIXu (6th round)
Úvod do XML 2. část Zdeněk Žabokrtský (s využitím materiálů z
1 PRG036 – Technologie XML Přednáší: Irena Mlýnková Martin Nečaský
Perzistence XML dat Kamil Toman
Autor, Název akce Databázové systémy a SQL Lekce 7 Daniel Klimeš.
David Gešvindr MCT | MSP | MCITP | MCPD. Jak se zpracovává dotaz? Když norma nestačila Práce s XML Geografická data CTE Zpracování hierarchií a grafů.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
VideoWeb: Webová aplikace pro správu domácí videotéky Adam Melkus, Radek Jirovský, Jakub Kutil, Hoa Quoc TranPB138
XML a datový standard Zdeněk Jirkovec Softwarové Aplikace a systémy.
Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Dotazovací jazyk SQL I.
Databázové systémy a SQL
Databázové systémy a SQL
Internetové publikování Dynamické HTML
Databáze MS ACCESS 2010.
TNPW1 JavaScript Ing. Jiří Štěpánek.
Databázové systémy a SQL
Databázové systémy a SQL
Programovací jazyk Haskell
Databázové systémy a SQL
Počítačová cvičení z předmětu Datové sklady
MU002 Informatika II Základy algoritmizace 1/13
Dotazovací jazyk SQL I.
A5M33IZS – Informační a znalostní systémy
Přednáška 10 Uložené procedury.
MU002 Informatika II Základy algoritmizace 1/13
Transkript prezentace:

1 PRG036 – Technologie XML Přednáší: Irena Mlýnková Martin Nečaský LS 2010 Stránka přednášky: prg 036/

2 Osnova předmětu  Ú vod do principů form á tu XML, přehled XML technologi í, jazyk DTD  Datov é modely XML, rozhran í DOM a SAX  Ú vod do jazyka XPath  Ú vod do jazyka XSLT  XPath 2.0, XSLT 2.0  Ú vod do jazyka XML Schema  Pokročil é rysy jazyka XML Schema  Přehled standardn í ch XML form á tů  Ú vod do jazyka XQuery  Pokročil é rysy jazyka XQuery, XQuery Update  Ú vod do XML datab á z í, nativn í XML datab á ze, č í slovac í sch é mata, structural join  Relačn í datab á ze s XML roz ší řen í m, SQL/XML

3 Vztahy mezi XML jazyky XPath XPointer XLink XSLT XQuery

4 Dotazovac í jazyky nad XML daty  C í le: dotazov á n í, pohledy, transformace, př í padně aktualizace XML dat Od r XML-QL, XQL, … Vývoj v konsorciu W3C se ust á lil/pokračuje v jazyc í ch XSLT 1.0, XSLT 2.0, XPath 1.0, XPath 2.0, XQuery 1.0  XSLT je jazyk pro transformace, využ í v á XPath, z á pis transformac í hodně využ í v á XML  XQuery vhodněj ší pro dotazov á n í – uživatelsky orientovan á syntaxe Pz.: XPath 2.0  XQuery

5 Z á kladem je XPath  Z á kladn í m stavebn í m kamenem dotazovac í ch jazyků nad XML daty  Výběr č á st í XML dokumentů  Podrobně viz. předn áš ka o XPath

6 XML dotazovac í jazyky (1) ‏  Zpř í stupněn í potenci á lně rozs á hlých dat nez á visle na jejich skutečn é reprezentaci  Ide á ln í dotazovac í jazyk by š lo použ í t na dotazov á n í do nestrukturovaných dat (text) ‏ semistrukturovaných dat (web, xml) ‏ silně strukturovaných dat (RDBMS) ‏ objektových dat

7  Takový jazyk by byl př í li š komplikovaný → specializace: řetězcov é masky, regul á rn í výrazy SQL XPath, XQuery OQL XML dotazovací jazyky (2)

8  Historick é XML-QL, Lorel, XQL, Quilt,...  Běžně použ í van é XPath 1.0  Nastupuj í c í XPath 2.0, XQuery 1.0 i XSLT je často použ í v á n pro dotazov á n í XML dotazovací jazyky (3)

9  Aktu á lně XQuery 1.0  Stejný datový model s XPath 2.0  XQuery 1.0 je nadmnožinou XPath 2.0 Každý dotaz v XPath 2.0 je i dotaz v XQuery 1.0  XPath 1.0 a XPath 2.0 (a tedy i XQuery 1.0) nejsou vz á jemně zcela kompatibiln í Ddatový model XPath 1.0 nen í kompatibiln í s modelem XML Infoset XQuery

10  Vět ší vyjadřovac í s í la než XPath 1.0, XQL, atd.  Čist ší s é mantika (XQuery Core model) ‏  Využit í XML Schema popis struktury datov é typy  Kompatibilita datov é ho modelu s XML Infoset  Př í stup založen na př í kladech použit í XQuery

11 XQuery Šéfkuchař bez čepice Jamie Oliver kuchařky 250 Modrá, nikoli zelená planeta Co je ohroženo: klima nebo svoboda? Václav Klaus společnost ekologie 176

12 XQuery Jamie po italsku Jamie's Italy Vladimir Fuksa Jamie Oliver kuchařky 319

13 XQuery Nepříjemná pravda Naše planeta v ohrožení – globální oteplování a co s ním můžeme udělat An incovenient Truth Jitka Fialová Al Gore ekologie 329

14  XQuery je funkcion á ln í jazyk Dotaz je výrazem Výrazy lze libovolně kombinovat  Forma dotazu v XQuery: Deklarace jmenných prostorů (nepovinn é ) ‏ Definice funkc í (nepovinn é ) ‏ Vlastn í výraz dotazu XQuery

15  XPath výrazy //katalog/kniha[autor= ” Jamie Oliver ” ]  Konstruktory element kniha {element autor}  FLWOR výrazy FOR... LET... WHERE... ORDER BY... RETURN  Podm í něn é výrazy IF... THEN... ELSE XQuery

16  Kvantifik á tory EVERY var IN expr SATISFIES expr SOME var IN expr SATISFIES expr  Operace s typy TYPESWITCH typeexpr CASE... DEFAULT  Oper á tory a funkce x + y, z = x, fce(x,y,z) ‏  Proměnn é a konstanty $x, “ Nov á k ”, 256  Porovn á v á n í XQuery

17 XQuery - Konstruktory Výpis z doc(”katalog.xml”)//kniha Titul: {doc(”katalog.xml”)//kniha[1]/titul} Podtitul: {doc(”katalog.xml”)//kniha[1]/podtitul} Titul: {fn:data(doc(”katalog.xml”)//kniha[2]/titul)} Podtitul: {fn:data(doc(”katalog.xml”)//kniha[2]/podtitul})‏ Přímé konstruktory

18 XQuery - Konstruktory element html { element body { element h1 {“Výpis z doc(”katalog.xml”)//kniha”}, element h2 { text{“Titul: ”}, {doc(”katalog.xml”)//kniha[1]/titul} },... } Počítané konstruktory

19 XQuery - konstruktory Výpis z doc(”katalog.xml”)//kniha Titul: Šéfkuchař bez čepice Podtitul: Titul: Modrá, nikoli zelená planeta Podtitul: Co je ohroženo: klima nebo svoboda? Výsledek

20  Z á kladn í konstrukce jazyka XQuery  Klauzule for (for $var in expr) (FLWOR) ‏ Vyhodnocuje výraz expr jehož výsledkem je seznam n-tic n-tice iterativně přiřazuje do proměnn é $var  Klauzule let (let $var := expr) (FLWOR) ‏ vyhodnot í výraz expr a přiřad í výsledek do proměnn é $var  Klauzule where (where expr) (FLWOR) ‏ filtr na jednotliv é n-tice z klauzule for XQuery - FLWOR

21  Klauzule order by (order by expr) (FLWOR) ‏ tř í d í n-tice, kter é pro š ly filtrem klauzule where podle dan é ho krit é ria  Klauzule return (return expr) (FLRWOR) ‏ z á věrečn á klauzule, ve kter é je zkonstruov á n výsledek výrazu ze z í skaných n-tic XQuery - FLWOR

22 XQuery - FLWOR for $kniha in doc(“knihy.xml”)//kniha where $kniha/stran > 300 order by return {$kniha/titul}, {$kniha/autor} Pro každou knihu, která má více než 300 stran vypiš titul a autora seřazené podle roku vydání

23 XQuery - FLWOR for $kniha in doc(“knihy.xml”)//kniha where $kniha/originál return {$kniha/titul} {data($kniha/originál/titul)} {$kniha/autor} Pro každou knihu, která má cizojazyčný originál vypiš orignální i český titul a autora

24 XQuery - FLWOR  FLWOR výrazy také umožňují výrazně transformovat původní strukturu dat, např.: Převod do XHTML a dalších formátů  XHTML tabulka knih Přehazování předků a potomků (swap)‏  kniha / autor → autor / seznam knih Seskupování (group by)‏  seskupení knih podle kategorie Spojování XML dat z různých zdrojů (join)‏  knihy v katalogu doplníme o recenze z jiného zdroje

25 XQuery - FLWOR Titul Autor Stran { for $kniha in doc(“knihy.xml”)//kniha where $kniha/kategorie = “kuchařka” return {data($kniha/titul)} {data($kniha/autor)} {data($kniha/stran)} } Vypiš HTML tabulku knih z kategorie kuchařek se sloupečky titul, autor a počet stran

26 XQuery - FLWOR { for $jmeno in distinct-values(doc(“knihy.xml”)//autor)‏ return {$jmeno} { for $kniha in doc(“knihy.xml”)//kniha where $kniha/autor = $jmeno return {$kniha/titul} } } Pro každého autora vypiš seznam jeho knih

27 XQuery - FLWOR { for $kategorie in distinct-values(doc(“knihy.xml”)//kategorie)‏ return { for $kniha in doc(“knihy.xml”)//kniha where $kniha/kategorie = $kategorie return {$kniha/titul} } } Rozstřiď knihy podle kategorií, pro každou kategorii vytvoř samostatný element s názvem v atributu

28 XQuery - FLWOR { for $kniha in doc(“knihy.xml”)//kniha, $prodej in doc(“prodej.xml”)//kniha where $kniha/ISBN = $prodej/ISBN return {$kniha/titul}, {$kniha/autor}, {$prodej/stav}, } Ke každé knize připoj seznam prodaných kusů ze zdroje prodej.xml (vnitřní spojení)‏

29 XQuery - FLWOR { for $kniha in doc(“knihy.xml”)//kniha return {$kniha/titul}, {$kniha/autor}, { for $recenze in doc(“recenze.xml”)//recenze where $recenze/ISBN = $kniha/ISBN return $recenze/text } } Ke každé knize připoj recenze ze zdroje recenze.xml (vnější spojení)‏

30  Klauzule if (if expr) ‏ Vyhodnocuje výraz expr jehož hodnotou je true nebo false  Klauzule then (then expr) ‏  Klauzule else (else expr) ‏ XQuery – Podmíněné výrazy

31 for $kniha in doc(“knihy.xml”)//kniha return {$kniha/titul} {$kniha/kategorie[1]} { if (count($kniha/kategorie) > 1 ) then return } Pro každou knihu vypiš její název a první kategorii, pokud patří i do dalších kategorií, nahraď je prázdným elementem XQuery – Podmíněné výrazy

32 for $kniha in doc(“knihy.xml”)//kniha return {$kniha/titul} {$kniha/kategorie[1]} { if (count($kniha/kategorie > 1) )‏ then return } Pro každou knihu vypiš její název a první kategorii, pokud patří i do dalších kategorií, nahraď je prázdným elementem XQuery – Podmíněné výrazy

33  Klauzule every/some (every/some var in expr) ‏ vhodnot í výraz expr a požaduje aby každ á /nějak á n-tice ve výsledku splňovala podm í nku  Klauzule satisfies (satisfies expr) ‏ expr je podm í nka kvantifik á toru XQuery – Kvantifikátory

34 for $autor in distinct-values(doc(“katalog.xml”)//autor) where every $autorova-kniha in for $kniha in $doc(“knihy.xml”)//kniha where $kniha[autor = $autor/jmeno] return $kniha satisfies $autorova-kniha/original return $autor Autoři, kteří nepíší české knihy XQuery – Kvantifikátory

35  Zabudovan é funkce distinct, distinct-value, empty, name,... Agregačn í funkce max, min, avg, count,... Dal ší : řetězcov é, numerick é... je jich hodně namespace fn  Uživatelsky definovan é funkce Př í mo pomoc í syntaxe XQuery I rekurzivn í, typovan é Podpora knihoven, roz š iřiteln é XQuery – Funkce

36 XQuery – Zabudované funkce  Některé už jsme poznali: uzel dokumentu podle daného uri: fn:doc($uri as xs:string?) as document- node()? sekvence atomických hodnot ze sekvence položek fn:data($arg as item()*) as xs:anyAtomicType* počet položek v sekvenci fn:count($arg as item()*) as xs:integer odstranění duplicit (jen atomické hodnoty)‏ fn:distinct-values($arg as xs:anyAtomicType*) as xs:anyAtomicType*

37 XQuery – Uživatelsky definované funkce Syntaxe define function name(parameters) as type Kde name je jméno funkce parameters je seznam parametrů (typovaných i netypovaných)‏ type je typ návratové hodnoty funkce

38 module “ define function knihy-autora($jmeno, $prijmeni) as element()* [ for $kniha in doc(“knihy.xml”)//kniha where some $autor in $kniha/autor satisfies $autor/prijmeni = $prijmeni and $autor/jmeno = $jmeno order by $kniha/nazev return $kniha/nazev ] Funkce vracející názvy knih od daného autora (podle jména a příjmení, jedna kniha může mít i více autorů), seřazené podle názvu XQuery – Uživatelsky definované funkce

39 import module namespace ksi = “ at “file://home/novak/xquery/lib/knihy.xq” Jan Novák {ksi:knihy-autora(“Jan”, “Novák”)} Import knihovny s přiřazením prefixu určitého prostoru jmen XQuery – Uživatelsky definované funkce

40 module “ define function podsekce($kniha-or-sekce) as element()* [ for $podsekce in $kniha-or-sekce/sekce return {$podsekce/nazev} {fn:count($podsekce/sekce} {podsekce($podsekce)} ] Funkce procházející strukturu knihy (sekce – rekurzivně) a počítající počet podsekcí dané sekce XQuery – Uživatelsky Definované Funkce

41 import module namespace ksi = “ at “file://home/novak/xquery/lib/knihy.xq” for $kniha in fn:doc(“katalog.xml”)//kniha return {$kniha/nazev} {fn:count($kniha/sekce)} {ksi:podsekce($kniha)} Import knihovny s přiřazením prefixu určitého prostoru jmen XQuery – Uživatelsky Definované Funkce

42 XQuery – Porovnání Hodnotová  Oper á tory lt, gt, le, ge, eq, ne ve významu “ men ší”, “ vět ší”, “ men ší rovno ”, “ vět ší rovno ”, “ rovno ”, “ nerovno ”  Postup porovn á n í operandů Atomizace Implicitn í konverze na stejný datový typ Porovn á n í upravených operandů

43 XQuery – Porovnání Hodnotová  Netypov é operandy jsou implicitně přetypov á ny na řetězce  Pokud je některý z operandů převeden na pr á zdnou sekvenci je výsledkem porovn á n í pr á zdn á sekvence  Pokud je některý z operandů převeden na sekvenci del ší než 1 je vyvol á na chyba

44 XQuery – Porovnání Hodnotová  1 le 2 => true  (1) le (2) => true  (1) le (2,1) => chyba  (1) le () => () ‏  5 eq 5 => true  $kniha/autor eq “ Jamie Oliver ” => true pouze pokud $book m á pr á vě jeden podelement autor s hodnotou “ Jamie Oliver ”

45 XQuery – Porovnání Obecná  Oper á tory, =, =, !=  I na sekvence  Postup porovn á n í operandů Atomizace  Vzniknou sekvence atomických hodnot Hled á se položka z lev é ho operandu a položka z prav é ho operandu, kter é nabývaj í pro oper á tor hodnotu true  Pokud existuje, pak true  Pokud neexistuje, pak false

46 XQuery – Porovnání Obecná  Při hled á n í p á ru položek opět konverze Obě netypov é – konverze na xs:string Jedna netypov á, druh á numerick á – konverze na xs:double Jedna netypov á, druh á typovan á ale ne řetězcov á ani numerick á – převod na tento typ

47 XQuery – Porovnání Obecná  1 true  (1) true  (1) false  (0,1) = (1,2) => true  (0,1) != (1,2) => true  $kniha/autor = “ Jamie Oliver ” => true pokud $book m á nějaký podelement autor s hodnotou “ Jamie Oliver ”

48 XQuery – Porovnání Uzlová  Oper á tory is, >  Postup porovn á n í operandů Vyhodnocen í operandů Pokud je některý z operandů pr á zdn á sekvence je výsledkem porovn á n í pr á zdn á sekvence Pokud je některý z operandů sekvence s d é lkou vět ší než 1 je vyvol á na chyba

49 XQuery – Porovnání Uzlová  is je true, pokud oba operandy jsou uzly se stejnou identitou  << je true, pokud levý operand předch á z í pravý operand (podle pořad í dokumentu) ‏  >> je true, pokud levý operand n á sleduje pravý operand (podle pořad í dokumentu) ‏

50 XQuery – Porovnání Uzlová /katalog/kniha[isbn=” ”] is /katalog/kniha[titul=”Jamie Oliver”] true, pouze pokud se oba operandy vyhodnotí na ten samý uzel

51 let $program-dne := doc(“program.xml”)/program/den[1] let $ranni-kavicka := for $prednaska in $program-dne/prednaska where $prednaska << $ranni-kavicka return $prednaska Uvažujte program konference. Napište dotaz, který pro každý dotaz vrátí přednášky, které se konají první den před první přestávkou na kávu. XQuery – Porovnání Uzlová

52 XQuery – Integritní omezení XML Schema poskytuje nástroje pro specifikaci různých integritních omezení např. kardinality, klíče, datové typy,... Neposkytuje ale vhodné nástroje pro specifikaci složitějších IO např. “Pokud autor píše v cizím jazyce musí každá jeho kniha obsahovat i název v tomto jazyce a jméno překladatele do češtiny”

53 XQuery – Integritní omezení IO jsou v XML datech v určitých případech stejně i více důležitá než v RDBMS Při integraci dat z různých externích zdrojů je potřeba kontrolovat velké množství různých IO Při řízení toku dat v rámci organizace i mezi různými organizacemi Taková IO vycházejí z podnikové logiky, mohou být poměrně složitá a týkají se často různých zdrojů/XML dokumentů Důležitost poroste (SOA, webové služby,...)‏

54 XQuery – Integritní omezení XQuery je dostatečně silný jazyk pro specifikaci IO paralela CHECK v SQL Kontrola je vlastně speciální dotaz vracející hlášení o kontrole jako XML data, např.: Pokud jsou data O.K. Pokud data porušují integritní omezení Hlášení o chybě

55 let $autori := doc(“autori.xml”)//autor[jazyk != ”cs”] return { if every $autor in $autori satisfies every $autorova-kniha in for $kniha in $doc(“knihy.xml”)//kniha where $kniha[autor = $autor/jmeno] return $kniha satisfies $autorova-kniha/original then return else return } IO(1001): Pokud autor píše v cizím jazyce musí každá jeho kniha obsahovat i název v tomto jazyce a jméno překladatele do češtiny XQuery – Integritní omezení

56 let $autori := doc(“autori.xml”)//autor[jazyk != ”cs”] let $spatniautori := for $autor in $autori where some $autorova-kniha in for $kniha in $doc(“knihy.xml”)//kniha where $kniha[autor = $autor/jmeno] return $kniha satisfies count($autorova-kniha/original) = 0 return $autor return { if exists($spatniautori)‏ then return Autor {data($autor)} má knihu bez původního názvu a překladatele! else return } XQuery – Integritní omezení

57 let $spatniautori := for $autor in doc(“autori.xml”)//autor[jazyk != ”cs”] let $autorovyspatneknihy := for $kniha in $doc(“knihy.xml”)//kniha where $kniha[autor=$autor/jmeno] and count($kniha/original)=0 return $kniha/nazev where count($autorovyspatneknihy)>0 return {$autor/jmeno} {$autorovyspatneknihy} return { if exists($spatniautori)‏ then return { for $autor in $spatniautori return Autor {$autor/jmeno} nemá u knih {for $nazev in $autor/knihy/nazev return {$nazev},} uveden původní název a překladatele. } else return } XQuery – Integritní omezení

58 Autor {$autor/jmeno} nemá u knih { for $nazev in $autor/knihy/nazev[position()<last()] return {$nazev}, } a { $autor/knihy/nazev[last()] } uveden původní název a překladatele. XQuery – Integritní omezení Upravená hláška o chybě:

59 XQuery – podpora schémat Podpora schémat je významným přínosem oproti ostatním XML dotazovacím jazykům XQuery musí být schopno pracovat s dokumenty bez známé struktury XQuery musí využívat vlastnosti schématu, je- li známé (rozšířená implementace)‏ Implementace může umožňovat statické typování Typový systém založen na XML Schema

60 XQuery – formální sémantika XQuery obsahuje velké množství redundancí XQuery Core definuje syntaktickou podmnožinu jazyka XQuery, která má stejnou vyjadřovací sílu jako původní jazyk Součástí definice XQuery jsou i přepisovací pravidla do XQuery Core XQuery Core má význam především z teoretického hlediska, příliš se nehodí k optimalizaci dotazů

61 Konec