PRG036 Technologie XML



Podobné dokumenty
Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D.

Využití XML v DB aplikacích

PRG036 Technologie XML

Tvorba informačních systémů

Dotazování nad XML daty a jazyk XPath

Z n a č k o v a c í j a z y k y. XPath, XLink, XQuery, XPointer, XLinkTime, XForms

XQuery. Jirka Kosek. Visual FoxPro DevCon června Praha. Copyright 2005 Jiří Kosek

TÉMATICKÝ OKRUH Softwarové inženýrství

Jazyky XQuery a XPath 1

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Tvorba informačních systémů

Ukládání a vyhledávání XML dat

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

Implementace XML signatur

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Oracle XML DB. Tomáš Nykodým

XPath je jazyk, který slouží k

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

XQuery: dotazovací jazyk nad XML

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Accelerating XPath location steps

Tvorba informačních systémů

XSLT extensible Stylesheet Language Transformation

NSWI096 - INTERNET JavaScript

Bakalářská práce. Vladimír Mareš

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Další XML technologie

XML snadno a rychle Martin Kuba, ÚVT MU

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

XML terminologie a charakteristiky. Roman Malo

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

Ukazka knihy z internetoveho knihkupectvi

Dotazování nad stromem abstraktní syntaxe

APLIKACE XML PRO INTERNET

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

Správnost XML dokumentu

Příklad buňka tabulky

Úvod do databázových systémů B

Úvod do XSLT 2.0. Jirka Kosek Copyright Jiří Kosek

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Databázové systémy. Přednáška č. 5

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

XSLT a jmenné prostory

Rozhraní pro práci s XML dokumenty. Roman Malo

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

PHP a XML. Stručný obsah

Operátory ROLLUP a CUBE

Teoretické a pokročilé aspekty XML technologií

Databázové systémy Cvičení 5.2

MBI - technologická realizace modelu

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Validace souborů DS3

Úvod do databázových systémů

Vstupní data pro program Deformace ve formátu XML

FlexiBee Pokročilé funkce. Ondřej Světlík FlexiBee Systems s.r.o.

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Komprese a dotazování nad XML dokumenty

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

SQL a XML jako alternativa ke klasickým unixovým nástrojům

Interaktivní databáze s webovým rozhraním pro uchovávání a

Dolování v objektových datech. Ivana Rudolfová

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

Tvorba WWW stránek. Mojmír Volf

POKROČILÉ POUŽITÍ DATABÁZÍ

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D.

Michal Krátký, Miroslav Beneš

Úvod do databázových systémů

XQuery algebra XQuery Algebra

Programování v jazyce JavaScript

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Analýza dat a modelování. Speciální struktury

Paradigmata programování 1

Databáze SQL SELECT. David Hoksza

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

DOTAZOVACÍ JAZYK PRO MPEG-7 MP7QL SÉMANTICKÉ VYHLEDÁVÁNÍ NAD MULTIMEDIÁLNÍM OBSAHEM

TRANSFORMACE XML DOKUMENTŮ POMOCÍ JAZYKA XSLT

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Databáze I. Přednáška 6

4. lekce Přístup k databázi z vyššího programovacího jazyka

Obsah přednášky. XML DOM SAX XPath XSL transformace 1/46

DBS Konceptuální modelování

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

VEŘEJNĚ DOSTUPNÁ ROZHRANÍ PRO PRÁCI S DATY NSP

Algoritmizace a programování

Úvod do databázových systémů

Analýza a modelování dat 3. přednáška. Helena Palovská

POPIS STANDARDU CEN TC278/WG7. 1 z 5. draft prenv Geografická silniční databáze. Oblast: ZEMĚPISNÁ DATA V SILNIČNÍ DOPRAVĚ ( GRD)

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Transkript:

PRG036 Technologie XML Přednáší: Irena Mlýnková (mlynkova@ksi.mff.cuni.cz) Martin Nečaský (necasky@ksi.mff.cuni.cz) LS 2010 Stránka přednášky: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ 1

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 2

Dotazovací jazyky nad XML daty Cíle: dotazování, pohledy, transformace, případně aktualizace XML dat Od r. 1998 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 orientováná syntaxe Pz.: XPath 2.0 XQuery 3

Co je XPath? XPath je základní jazyk pro dotazování nad XML dokumenty Výběr částí XML dokumentů Základní myšlenka se podobá navigaci v systému souborů Notace XPath není vyjádřena v XML Na XPath je založen XSLT, XPointer, XQuery 4

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> <cena>91934</cena> <>modra</> </> </> </> 5

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> <cena>91934</cena> <>modra</> </> </> </> 6

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> <cena>91934</cena> <>modra</> </> </> </> 7

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> <cena>91934</cena> <>modra</> </> </> </> 8

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> <cena>91934</cena> <>modra</> </> </> </> 9

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> stav <>1</> "10/10/2008" <cena>91934</cena> <>modra</> </> </> </> 10

Model XML dat v XPath <?xml version="1.0"?> <!DOCTYPE SYSTEM ".dtd"> < ="10/10/2008" stav=> < cislo="c992">martin Nečaský</> <> < => <>5</> <cena>22</cena> </> < = 929118813"> <>1</> stav <cena>91934</cena> "10/10/2008" <>modra</> cislo </> "C992" </> </> "Martin Nečaský" 11

Model XML dat v XPath "10/10/2008" stav cena cena "929118813" cislo "C992" "Martin Nečaský" "1" "91934" "modra"

Model XML dat v XPath Typy uzlů v modelu kořenový uzel uzly elementů textové uzly atributové uzly uzly pro komentáře uzly proveditelných instrukcí uzly jmenných prostorů Co tam není: sekce CDATA, odkazy na entity a DTD 13

Model XML dat v XPath Specifika Atributy nejsou zařazeny do seznamu dětí a potomků daného uzlu Atributy ze jmenného prostoru xmlns jsou chápány jako speciální uzly Kořenový uzel nereprezentuje kořenový element ale celý XML dokument Kořenový element je reprezentován jako dítě kořenového uzlu 14

Výrazy v XPath Výrazem v jazyce XPath je cesta Cesta se skládá z kroků Absolutní cesta: /Krok1/Krok2/ /KrokN Relativní cesta: Krok1/Krok2/ /KrokN 15

Výrazy v XPath - Příklady / stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady / stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady /// stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady ////@ stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady ////cena/ stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady //// stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady ///jmeno stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady //seznam-polozek/ stav cislo "C992" "Martin Nečaský" cena cena "929118813" "1" "91934" "modra"

Výrazy v XPath - Příklady cena/ Relativní cesta sama o sobě nemůže být vyhodnocena Nemá to žádný smysl, protože nevíme odkud máme začít Vstupem musí být kromě samotné cesty také jeden a více uzlů v XML dokumentu, ze kterých máme vyhodnocení začít tzv. Kontextová množina 24

Výrazy v XPath - Příklady cena/ "10/10/2008" stav cislo "C992" "Martin Nečaský" cena "929118813" "1" "modra"

Výrazy v XPath - Příklady cena/ "10/10/2008" stav cislo "C992" "Martin Nečaský" cena "929118813" "1" "modra"

Výrazy v XPath - Příklady cena/ "10/10/2008" stav cislo "C992" "Martin Nečaský" cena "929118813" "1" "modra"

Výrazy v XPath - Příklady cena/ "10/10/2008" stav cislo "C992" "Martin Nečaský" cena "929118813" "1" "modra"

Vyhodnocení XPath výrazu Nechť P je XPath cesta, kde S je její první krok a P je zbytek cesty Nechť C značí kontextovou množinu uzlů pro vyhodnocení P Pokud je P absolutní, pak C obsahuje pouze a jen kořenový uzel dokumentu Pokud je P relativní, musí být C specifikována explicitně Pokud je P prázdná, pak výsledkem vyhodnocení je C Prázdná = 0 kroků Jinak je P vyhodnocena vzhledem k C následovně: C = {} Pro každý uzel u z C vyhodnoť S a výsledek přidej do C Vyhodnoť P vzhledem k C 29

Vyhodnocení XPath výrazu Pozor, návratová hodnota cesty je množina uzlů Množina je neuspořádaná Tedy ani výsledek nelze očekávat uspořádaný (např. v pořadí, ve kterém se vyskytují uzly v XML dokumentu, viz. dále) 30

XPath cesty formálně XPath krok je formálně následující výraz osa::test-uzlu predikát1... predikátn Osa, test uzlu a seznam predikáty Osa a predikáty jsou nepovinné Zatím jsme viděli pouze použití test-uzlu Seznam predikátů byl prázdný Osa byla defaultní 31

XPath osy osa::test-uzlu predikát1... predikátn Osa specifikuje, v jaké relaci mají být uzly vybrané v tomto kroku vzhledem k uzlu u z kontextové množiny child Vybrané uzly jsou děti (přímí potomci) uzlu u Defaultní osa // /child::/child:: 32

XPath osa self Vybraný uzel je samotný uzel u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 33

XPath osa parent Je vybrán rodič uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 34

XPath osa ancestor Jsou vybrány všichni předci uzlu u Tj. uzly ležící na cestě od u ke kořenovému uzlu "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 35

XPath osa ancestor-or-self Jsou vybrány všichni předci uzlu u včetně uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 36

XPath osa child Jsou vybráni přímí potomci (děti) uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 37

XPath osa descendant Jsou vybráni potomci uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 38

XPath osa descendant Jsou vybráni potomci uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 39

XPath osa descendant-or-self Jsou vybráni potomci a samotný uzel u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 40

Průchod stromu do hloubky "10/10/200 8" stav 2 cislo "C992" 3 "Martin Nečaský" 5 0 1 6 7 cena 8 4 "929118813 9 " 12 11 "1" 10 13 14 "modra" 41

XPath osa preceding-sibling Jsou vybráni sourozenci uzlu u, které mu předcházejí v průchodu do hloubky "10/10/200 8" stav 2 cislo "C992" 3 "Martin Nečaský" 5 0 1 6 7 cena 8 4 "929118813 9 " 12 11 "1" 10 13 14 "modra" 42

XPath osa preceding Jsou vybráni všechny uzly, které předcházejí uzlu u v průchodu do hloubky (kromě předků) "10/10/200 8" stav 2 cislo "C992" 3 "Martin Nečaský" 5 0 1 6 7 cena 8 4 "929118813 9 " 12 11 "1" 10 13 14 "modra" 43

XPath osa following-sibling Jsou vybráni sourozenci uzlu u, které ho následují v průchodu do hloubky "10/10/200 8" stav 2 cislo "C992" 3 "Martin Nečaský" 5 0 1 6 7 cena 8 4 "929118813 9 " 12 11 "1" 10 13 14 "modra" 44

XPath osa following Jsou vybráni všechny uzly, které následují uzel u v průchodu do hloubky (kromě potomků) "10/10/200 8" stav 2 cislo "C992" 3 "Martin Nečaský" 5 0 1 6 7 cena 8 4 "929118813 9 " 12 11 "1" 10 13 14 "modra" 45

XPath osa attribute Vybere atributy uzlu u "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 46

XPath osa namespace Vybere atributy ze jmenného prostoru xmlns uzlu u 47

XPath - osy ancestor preceding-sibling parent self following-sibling child preceding attribute namespace descendant following

XPath test uzlu osa::test-uzlu predikát1... predikátn Testuje uzly vybrané osou Typ uzlu a případně název 49

XPath test uzlu osa::node() predikát1... predikátn Testem projde jakýkoliv uzel vybraný osou 50

XPath test uzlu descendant::node() "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 51

XPath test uzlu osa:: predikát1... predikátn Testem projde textový uzel vybraný osou 52

XPath test uzlu descendant:: "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 53

XPath test uzlu osa::* predikát1... predikátn Testem projde jakýkoliv uzel vybraný osou, který má jméno jméno má každý element a atribut Ale pozor: neexistuje osa, která najednou vybere elementy i atributy 54

XPath test uzlu descendant::* "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 55

XPath test uzlu osa::comment() osa::processing-instruction() osa::processing-instruction( php ) 56

XPath osy a testy uzlů - zkratky Pro nejpoužívanější osy a testy uzlů jsou zavedeny zkratky P/ P/child:: P/@ P/attribute:: P/../ P/parent::*/ P// P/descendant-or-self::node()/ // vybere všechny elementy v XML dokumentu 57

XPath predikáty osa::test-uzlu predikát1... predikátn Predikát umožňuje specifikovat pokročilejší podmínky na uzly, které byly vybrány osou a prošly testem uzlu Pro kontextový uzel u jsou nalezeny všechny uzly ležící na dané ose z uzlu u, na výstup jdou ale pouze ty, které splňují test-uzlu a všechny predikáty predikát ::= [ podmínka ] podmínka ::= not( podmínka ) podmínka and podmínka podmínka or podmínka 58

Testování existence uzlu Podmínkou může být relativní XPath cesta P Pro daný uzel u se vyhodnotí true, pokud množina uzlů zacílená cestou P z u je neprázdná 59

Testování existence uzlu //[@] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 60

Testování existence uzlu //[cena] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 61

Testování existence uzlu //[../../@stav] objednavky... stav 62

Testování existence uzlu //[ancestor::/@stav] objednavky... stav 63

Testování existence uzlu //[@stav]// objednavky... stav 64

Testování hodnoty Podmínkou může být porovnání dvou operandů Operandy jsou XPath výrazy Cesta, hodnota... Operátor je =!= < > <= >= &eq; < > 65

Testování hodnoty //[ = "modra"] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 66

Testování hodnoty //[cena > 30] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" 67

Testování hodnoty //[@stav = ]// objednavky... stav 68

Testování hodnoty Operátory =!=... Operandy jsou množiny hodnot/uzlů Vyhodnotí se jako true pokud existuje hodnota/uzel v levém a hodnota/uzel v pravém operandu, pro něž je operátor true Operátory &eq; &neq;... Operandy nesmějí být množiny Pokud je operandem uzel/množina uzlů, je/jsou převeden(y) na textovou hodnotu atomizace 69

Testování hodnoty //[ = "modra"] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 70

Testování hodnoty //[!= "modra"] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 71

Testování hodnoty //[ &eq; "modra"] CHYBA! "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 72

Vestavěné funkce Testování pozice každý uzel v kontextové množině má přiřazenu pozici (určena pozicí v dokumentu a směrem osy) position() Vrací pozici uzlu v kontextové množině last() Vrací počet uzlů v kontextové množině 73

Vestavěné funkce ///[position() = 1] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 74

Vestavěné funkce ///[position() = last()] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 75

Vestavěné funkce ///[1] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 76

Vestavěné funkce ///[last()] "10/10/200 8" stav cislo "C992" "Martin Nečaský" cena "929118813 " "1" "modra" "zluta" 77

Vestavěné funkce count(expression) Vrací počet uzlů vrácených XPath výrazem expression 78

Vestavěné funkce //[count() > 2] objednavky... stav 79

Vestavěné funkce id(value) Vrátí element s value jako id concat, starts-with, contains, substring-after, substringbefore, substring(value),... sum, floor, ceiling,... 80

Konec 81