Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2007 Michal Krátký Tvorba informačních systémů 1/37
Obsah 8. XML Technologie XML, Datový model, Schémata, Dotazovací jazyky, Jmenné prostory, Transformace,. c 2006 2007 Michal Krátký Tvorba informačních systémů 2/37
Extensible Mark-up Language (XML) Extensible Mark-up Language (XML) byl uveden v roce 1998 konsorciem World Wide Web Consortium (W3C, http://www.w3.org/). Značkovací jazyk reprezentující informace elementy, které mohou obsahovat další elementy a atributy. Neobsahuje pevnou množinu značek, ale umožňuje definovat vlastní schéma XML dokumentu. c 2006 2007 Michal Krátký Tvorba informačních systémů 3/37
Extensible Mark-up Language (XML) Z jiného pohledu: formát pro přenos heterogenních dat: Geography Markup Language (GML), mathematical formulas (MathML), DocBook... Z jiného pohledu: datový model. XML dokument je modelován stromem (XML strom). c 2006 2007 Michal Krátký Tvorba informačních systémů 4/37
Dobře strukturovaný (well formed) XML dokument Element má typ identifikovaný jménem. Element může obsahovat množinu dvojic atribut= hodnota. V textovém tvaru XML dokumentu identifikujeme počáteční (start-tag) a koncovou značku (end-tag) elementu (<name>...</name>). Text mezi počáteční a koncovou značkou nazýváme obsah elementu (element content). c 2006 2007 Michal Krátký Tvorba informačních systémů 5/37
Dobře strukturovaný (well formed) XML dokument Pokud element obsahuje další potomky a znaková data, mluvíme o dokumentu se smíšeným obsahem (mixed content). Např. <a>hi, <b>mike</b></a>. Element nemající obsah nazýváme prázdný (empty). Zkrácený zápis: <img src="picture.jpg"/>. Dokument splňující takováto základní pravidla se nazývá dobře strukturovaný (well formed). c 2006 2007 Michal Krátký Tvorba informačních systémů 6/37
Příklad - XML dokument <?xml version= " 1.0 "? > <books> <book i d = " 003 04312 " > < t i t l e >The Two Towers< / t i t l e > <author>j.r.r. Tolkien< / author> < / book> <book i d = " 001 00863 " > < t i t l e >The Return of the King< / t i t l e > <author>j.r.r. Tolkien< / author> < / book> <book i d = " 045 00012 " > < t i t l e >Catch 22< / t i t l e > <author>joseph H e l l e r < / author> < / book>< / books> c 2006 2007 Michal Krátký Tvorba informačních systémů 7/37
XML strom 8. XML Technologie books book book book id title author id title author id title author 003-04312 The Two Towers J.R.R. Tolkien 001-00863 The Return of the King J.R.R. Tolkien 045-00012 Catch 22 Joseph Heller c 2006 2007 Michal Krátký Tvorba informačních systémů 8/37
Příklad - XML dokument se smíšeným obsahem 1/2 <books>... <book> < t i t l e >XML Data Management: Native XML and XML Enabled Database Systems< / t i t l e > <author> Akmal B. Chaudhri, Awais Rashid, Roberto Z i c a r i < / author> <keywords> XML, Native XML Database,... < / keywords> c 2006 2007 Michal Krátký Tvorba informačních systémů 9/37
Příklad - XML dokument se smíšeným obsahem 2/2 <desc> <isbn>0 201 84452 4< / isbn> copy 2003 Addison Wesley P r o f e s s i o n a l < / desc> < / book>... < / books> c 2006 2007 Michal Krátký Tvorba informačních systémů 10/37
XML strom 8. XML Technologie 0 BOOKS (0) 34 BOOK (1) TITLE 34 (2) 36 AUTHOR (11) 38 KEYWORDS (18) 40 DESC (19) 35 PCDATA (3) 37 PCDATA (3) 39 PCDATA (3) 41 ISBN (20) 43 PCDATA (3) (4) (5) (6) XML Data Management: (7) (4) (8) Native XML and XML-Enabled (9) (10) Database Systems (12) (13) Akmal B. Chaudrhi, (14) (15) Awais Rashid, (16) (17) Roberto Zicari (4) XML, (7) (4) (9) Native XML database,... 42 PCDATA (3) (21) 0-2001-84452-4 (22) (23) copyright 2003, (24) (25) Addison Wesley (26) Professional c 2006 2007 Michal Krátký Tvorba informačních systémů 11/37
Validní dokument 8. XML Technologie XML dokument splňující definované schéma nazýváme validní. DTD, XML Schema,... Není nutné psát interpretr pro každý XML dokument. c 2006 2007 Michal Krátký Tvorba informačních systémů 12/37
Příklad - DTD 8. XML Technologie <!DOCTYPE books [ <!ELEMENT books ( book ) > <!ELEMENT book ( t i t l e, author ) > <! ATTLIST book i d CDATA #REQUIRED> <!ELEMENT t i t l e (#PCDATA) > <!ELEMENT author (#PCDATA) > ] > c 2006 2007 Michal Krátký Tvorba informačních systémů 13/37
Příklad - XML Schema 1/2 <xsd:schema xmlns:xsd= " h t t p : / /www. w3. org /2001/XMLSchema" > <xsd:element name= " books " > <xsd:complextype> <xsd:sequence> <xsd:element name= " book " maxoccurs= " unbounded " > <xsd:complextype> <xsd:sequence> <xsd:element name= " t i t l e " type= " x s d : s t r i n g " / > <xsd:element name= " author " type= " x s d : s t r i n g " / > < / xsd:sequence> < x s d : a t t r i b u t e name= " i d " type= " IdType " use= " r equired " / > < / xsd:complextype> c 2006 2007 Michal Krátký Tvorba informačních systémů 14/37
Příklad - XML Schema 2/2 < / xsd:element> < / xsd:sequence> < / xsd:complextype> < / xsd:element> < xsd:simpletype name= " IdType " > < x s d : r e s t r i c t i o n base= " x s d : s t r i n g " > < x s d : l e n g t h value= " 9 " / > < x s d : p a t t e r n value= " [0 1] [0 1] " / > < / x s d : r e s t r i c t i o n > < / xsd:simpletype > < / xsd:schema> c 2006 2007 Michal Krátký Tvorba informačních systémů 15/37
XPath, XQuery, XQL,.... Jazyky jsou založené na XPath. XPath umožňuje procházet XML strom pomocí tzv. výrazů cest. Obsahuje tzv. osy XPath relace mezi uzly stromu. Obsahuje funkce, např. vrácení podřetězce atp. c 2006 2007 Michal Krátký Tvorba informačních systémů 16/37
XPath 8. XML Technologie Dotaz se skládá z výrazů axis::tag[filter] oddělených / nebo //. Výsledkem výrazu na kontextovém uzlu u je množina uzlů u : Relace axis obsahuje (u, u ). Značka pro u je tag. Podmínka filter nabývá hodnoty true na uzlu u. books/book/title //book/title //book[author= Joseph Heller ]/title c 2006 2007 Michal Krátký Tvorba informačních systémů 17/37
Příklad, XPath 8. XML Technologie books book book book id title author id title author id title author 003-04312 The Two Towers J.R.R. Tolkien 001-00863 The Return of the King J.R.R. Tolkien 045-00012 Catch 22 Joseph Heller books/book/title //book/title //book[author= Joseph Heller ]/title c 2006 2007 Michal Krátký Tvorba informačních systémů 18/37
Osy XPath 1/2 8. XML Technologie parent ancestor ancestor-or-self child descendant descendant-or-self preceding 1. uzel na cestě od u ke kořeni uzly ležící na cestě z u ke kořeni u a uzly ležící na cestě z u ke kořeni přímý potomek uzlu u všechny uzly pro které je u předek descendant + u uzly předcházející uzel u (kromě předků) c 2006 2007 Michal Krátký Tvorba informačních systémů 19/37
Osy XPath 2/2 8. XML Technologie following uzly následující uzel u (kromě potomků) preceding-sibling předcházející sourozenci u following-sibling následující sourozenci u attribute atribut uzlu u self u namespace jmenný prostor u c 2006 2007 Michal Krátký Tvorba informačních systémů 20/37
Příklad, Osy XPath 1/4 0 0 0 1 6 1 6 1 6 2 5 7 2 5 7 2 5 7 3 4 8 9 3 4 8 9 3 4 (a) (b) (c) 8 9 Výsledné uzly výrazů (a) parent::*, (b) ancestor::*, (c) ancestor-or-self::* z kontextového uzlu 7. c 2006 2007 Michal Krátký Tvorba informačních systémů 21/37
Příklad, Osy XPath 2/4 0 0 0 1 6 1 6 1 6 2 5 7 2 5 7 2 5 7 3 4 8 9 3 4 8 9 3 4 (a) (b) (c) 8 9 Výsledné uzly výrazů (a) child::*, (b) descendant::*, (c) descendant-or-self::* z kontextového uzlu 1. c 2006 2007 Michal Krátký Tvorba informačních systémů 22/37
Příklad, Osy XPath 3/4 1 0 6 1 0 6 2 5 7 2 5 7 3 4 8 9 3 4 8 9 (a) (b) Výsledné uzly výrazů (a) preceding::* a (b) following::* z kontextového uzlu 6 resp. 1. c 2006 2007 Michal Krátký Tvorba informačních systémů 23/37
Příklad, Osy XPath 4/4 1 0 6 1 0 6 2 5 7 2 5 7 3 4 8 9 3 4 8 9 (a) (b) Výsledné uzly výrazů (a) preceding-sibling::* a (b) following-sibling::* z kontextového uzlu 6 resp. 2. c 2006 2007 Michal Krátký Tvorba informačních systémů 24/37
XQuery 8. XML Technologie Aktuální standard W3C pro dotazování XML dat. < r e s u l t s > { f o r $ b i n doc ( books. xml ) / books / book, $n i n $ b / name, $a i n $ b / author r e t u r n < r e s u l t > { $ n } { $ a } < / r e s u l t > } < / r e s u l t s > c 2006 2007 Michal Krátký Tvorba informačních systémů 25/37
XML namespace 8. XML Technologie Umožňuje rozšířit jméno elementu o prefix jmenný prostor. <?xml version= " 1.0 " encoding= " ISO 8859 1"?> < x s l : s t y l e s h e e t version= " 1.0 " x m l n s : x s l = " h t t p : / /www. w3. org /1999/XSL / Transform " > < x s l : t e m p l a t e match= " / " > c 2006 2007 Michal Krátký Tvorba informačních systémů 26/37
EXtensible Stylesheet Language Transformation (XSLT) W3C standard. Transformace XML dokumentu na jiný XML dokument. Transformace je řízena transformačním souborem XML soubor validní ke schématu XSL. XSL je rozsáhlejší, obsahuje i XSL FO (formatting objects) např. transformace XML do pdf. c 2006 2007 Michal Krátký Tvorba informačních systémů 27/37
Příklad, XSLT 1/2 8. XML Technologie <?xml version= " 1.0 " encoding= " ISO 8859 1"?> < x s l : s t y l e s h e e t version= " 1.0 " x m l n s : x s l = " h t t p : / /www. w3. org /1999/XSL / Transform " > < x s l : t e m p l a t e match= " / " > <html> <body> <h2>cd C o l l e c t i o n < / h2> < t a b l e border= " 1 " > < t r bgcolor=" #9acd32 " > < th> T i t l e < / th> < th> A r t i s t < / th> < / t r > c 2006 2007 Michal Krátký Tvorba informačních systémů 28/37
Příklad, XSLT 2/2 8. XML Technologie < x s l : f o r each s e l e c t = " catalog / cd " > < t r > < td>< x s l : v a l u e of s e l e c t = " t i t l e " / >< / td> < td>< x s l : v a l u e of s e l e c t = " a r t i s t " / >< / td> < / t r > < / x s l : f o r each> < / t a b l e > < / body> < / html> < / x s l : t e m p l a t e > < / x s l : s t y l e s h e e t > < / x s l : s t y l e s h e e t > c 2006 2007 Michal Krátký Tvorba informačních systémů 29/37
Programovací jazyky a XML Parsery: DOM (Document Object Model) W3C, XML dokument je načten do paměti jako struktura instancí: např. Xerces Java Parser. SAX sekvenčně zpracováváme jednotlivé elementy, které parser načítá: např. Xerces Java Parser. Další např..net umožňuje pro každý typ uzlu definovat třídu. Implementace XSLT: Microsoft XSLT. Java - Apache Xalan (http://xalan.apache.org/). c 2006 2007 Michal Krátký Tvorba informačních systémů 30/37
Příklad, Java, DOM 8. XML Technologie DocumentBuilderFactory d b f a c t o r y = DocumentBuilderFactory. newinstance ( ) ; DocumentBuilder b u i l d e r = d b f a c t o r y. newdocumentbuilder ( ) ; Document doc = b u i l d e r. parse (new F i l e ( " f i l e. xml " ) ) ; Element r o o t = doc. getdocumentelement ( ) ; NodeList l i s t = r o o t. getelementsbytagname ( " book " ) ; for ( i n t i = 0 ; i < l i s t. getlength ( ) ; i + + ) { Element element = ( Element ) l i s t. item ( i ) ; S t r i n g i d = element. g e t A t t r i b u t e ( " i d " ) ; NodeList t i t l e L i s t = element. getelementsbytagname ( " t i t l e " ) ;.... } c 2006 2007 Michal Krátký Tvorba informačních systémů 31/37
Datový model XML - XML dokument je modelován stromem (XML strom). XML dokument/dokumenty tvoří databázi, schéma dokumentů je schématem této databáze. Pro dotazování XML dat, používáme XML dotazovací jazyky, např. XPath, XQuery apod. Existují jazyky pro provádění změn v XML dokumentech, např. XUpdate. Pro indexování XML dokumentů je nutné použít sofistikované metody. c 2006 2007 Michal Krátký Tvorba informačních systémů 32/37
Příklad, XPath, model books book book book id title author id title author id title author 003-04312 The Two Towers J.R.R. Tolkien 001-00863 The Return of the King J.R.R. Tolkien 045-00012 Catch 22 Joseph Heller books/book/title //book/title //book[author= Joseph Heller ]/title c 2006 2007 Michal Krátký Tvorba informačních systémů 33/37
Triviální implementace Každý element je vložen do B-stromu (indexujeme dle id v uspořádání dokumentu), jinými slovy vytvoříme tabulku Element(tag, id, value) a pro každý element do ní vložíme záznam. n0 books n1 book n2 book n3 n4 n5 id title author n7 n6 n8 id title author 003-04312 The XML Book John Smyth 045-00012 The XQuery Frank Book Nash /books/book[author= John Smyth ]/title c 2006 2007 Michal Krátký Tvorba informačních systémů 34/37
Provádění dotazu 8. XML Technologie 1 Najdi všechny elementy typu books. 2 Najdi všechny elementy typu book. Proved strukturální spojení mezi množinami. 3 Najdi všechny elementy typu author s hodnotou John Smyth. Proved strukturální spojení mezi množinami. 4 Najdi všechny elementy typu title. Proved strukturální spojení mezi množinami. c 2006 2007 Michal Krátký Tvorba informačních systémů 35/37
Aktuální stav 8. XML Technologie 1 Takto triviální přístupy jsou velmi neefektivní. Např. dotaz site/closed_auctions/closed_auction/annotation/ description/parlist/listitem/parlist/listitem/ text/emph/keyword trvá na MS SQL 2005 83s 14min (kolekce XMark 1GB). 2 Efektivní přístupy jsou v současné době záležitostí výzkumu. Např. přístup MDX vyvíjený na katedře tento dotaz vykoná za 4s. c 2006 2007 Michal Krátký Tvorba informačních systémů 36/37
Reference 8. XML Technologie XPath, XQuery http://www.w3c.org XML Namespace http://www.w3.org/tr/rec-xml-names/ XSLT http://www.w3schools.com/xsl/ Akmal B. Chaudhri, Awais Rashid, Roberto Zicari: XML Data Management: Native XML and XML-Enabled Database Systems. Addison-Wesley Professional, 2003. c 2006 2007 Michal Krátký Tvorba informačních systémů 37/37