46
Tvorba informaˇ cních systém ˚ u 1/46 8. XML Technologie Tvorba informaˇ cních systém ˚ u Michal Krátký Katedra informatiky VŠB–Technická univerzita Ostrava Tvorba informaˇ cních systém ˚ u, 2008/2009

Katedra informatiky VŠB–Technická univerzita Ostrava · Tvorba informacních systému˚ˇ 1/46 8. XML Technologie Tvorba informacních systému˚ˇ Michal Krátký Katedra informatiky

Embed Size (px)

Citation preview

Tvorba informacních systému 1/46

8. XML Technologie

Tvorba informacních systému

Michal Krátký

Katedra informatikyVŠB–Technická univerzita Ostrava

Tvorba informacních systému, 2008/2009

Tvorba informacních systému 2/46

8. XML Technologie

Obsah

XML technologie,Datový model, schéma dokumentu.Dotazovací jazyky – XPath,Jmenné prostory,Transformace – XSLT,API pro práci s XML.

Tvorba informacních systému 3/46

8. XML Technologie

Úvod

Extensible Mark-up Language (XML)

Extensible Mark-up Language (XML) byl uveden v roce1998 konsorciem World Wide Web Consortium (W3C,http://www.w3.org/).

Znackovací jazyk reprezentující informace elementy, kterémohou obsahovat další elementy a atributy.

Neobsahuje pevnou množinu znacek, ale umožnujedefinovat vlastní schéma XML dokumentu.

Tvorba informacních systému 4/46

8. XML Technologie

Úvod

Extensible Mark-up Language (XML)

Pohled 1: Popis heterogenních dat, príklad aplikací:

hypertextový dokument – XHTML,

popis prostorových dat – Geography Markup Language(GML),

matematické rovnice – MathML,

vektorová grafika – SVG,

knihy a casopisy v computer science – DocBook.

Tvorba informacních systému 5/46

8. XML Technologie

Úvod

XML, ukázka MathML

[a + b]260

<math xmlns=" h t t p : / /www.w3 . org /1998/ Math / MathML"><mrow>

<msup><mfenced open=" [ " c lose=" ] ">

<mrow><mi>a< / mi><mo>+< /mo><mi>b< / mi>

< / mrow>< / mfenced><mn>260< /mn>

< / msup>< / mrow>

Tvorba informacních systému 6/46

8. XML Technologie

Úvod

XML, ukázka SVG<?xml version=" 1.0 " standalone=" no " ?>< !DOCTYPE svg PUBLIC " − / /W3C/ / DTD SVG 1 . 1 / /EN"" h t t p : / /www.w3 . org / Graphics /SVG/ 1 . 1 /DTD/ svg11 . dtd ">

<svg width="100%" he igh t= "100%" version=" 1.1 "xmlns=" h t t p : / /www.w3 . org /2000/ svg ">

< r e c t x=" 20 " y=" 20 " rx= " 20 " ry= " 20 " width=" 250 " he igh t= " 100 "s t y l e =" f i l l : r e d ; s t r o k e : b l a c k ; s t roke−wid th :5 ; o p a c i t y : 0 .5 " / >< / svg>

Tvorba informacních systému 7/46

8. XML Technologie

Úvod

XML, ukázka XHTML

<?xml version=" 1.0 " encoding="UTF−8" ?>< !DOCTYPE html

PUBLIC " − //W3C/ / DTD XHTML 1.0 S t r i c t / / EN"" h t t p : / /www.w3 . org /TR/ xhtml1 /DTD/ xhtml1−s t r i c t . dtd ">

<html xmlns=" h t t p : / /www.w3 . org /1999/ xhtml " xml:lang=" en " lang=" en "><head>

< t i t l e >Minimal XHTML 1 . 0 Document w i th W3C DTD< / t i t l e >< / head><body>

<p>This i s a minimal<a h re f = " h t t p : / /www.w3 . org /TR/ xhtml1 / ">XHTML 1 . 0 < / a>document w i th a W3C u r l f o r the DTD. < / p>

< / body>< / html>

Oproti HTML striktne oddelujeme obsah a formátování obsahu.

Tvorba informacních systému 8/46

8. XML Technologie

Úvod

Extensible Mark-up Language (XML)

Pohled 2: Datový model

XML dokument je modelován jako strom (tzv. XML strom).Porovnejte s relacním datovým modelem.

Poznámka: Tento datový model se objevil již v jazyku SGML a vdatabázové komunite v podobe tzv. slabe strukturovaných dat.

Tvorba informacních systému 9/46

8. XML Technologie

Úvod

Dobre strukturovaný (well formed) XML dokument 1/2

Element má typ identifikovaný jménem (casto oznacujemejako tag – znacka). Napr. <book>...</book>.

Element muže obsahovat množinu dvojic atribut=’hodnota’.V textovém tvaru XML dokumentu identifikujeme pocátecní(start-tag) a koncovou znacku (end-tag) elementu (<name>...</name>).

Text mezi pocátecní a koncovou znackou nazýváme obsahelementu (element content).

Tvorba informacních systému 10/46

8. XML Technologie

Úvod

Dobre strukturovaný (well formed) XML dokument 2/2

Pokud element obsahuje další potomky a znaky, mluvímeo dokumentu se smíšeným obsahem (mixed content).Napr. <a>Hi, <b>Mike</b></a>.

Element nemající obsah nazýváme prázdný (empty).Zkrácený zápis: <img src="picture.jpg"/>.

První rádek obsahuje XML deklaraci, napr.<?xml version="1.0" ?>.

Dokument splnující tato základní pravidla se nazývá dobrestrukturovaný (well formed).

Tvorba informacních systému 11/46

8. XML Technologie

Úvod

Príklad - dobre strukturovaný 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 . To lk ien< / author>

< / book><book i d ="001−00863">

< t i t l e >The Return o f the King< / t i t l e ><author>J .R.R . To lk ien< / 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>

Tvorba informacních systému 12/46

8. XML Technologie

Úvod

Príklad - XML strom

XML strom pro dobre strukturovaný XML dokument.

The Return of the King

001-00863 J.R.R. Tolkien

book

id title author

Catch 22045-00012 Joseph Heller

book

id title author

The Two Towers

003-04312 J.R.R. Tolkien

book

id title author

books

Tvorba informacních systému 13/46

8. XML Technologie

Úvod

Príklad - nekorektní XML dokument<?xml version=" 1.0 " ?><body>< u l >

< l i > T i t u l e k 1< l i > T i t u l e k 2

< / u l >< / body>

Znacky li nejsou uzavreny – dokument není dobrestrukturovaný. Dusledkem je nejasná interpretace:< l i > T i t u l e k 1< / l i >< l i > T i t u l e k 2< / l i >

Nebo:< l i > T i t u l e k 1< u l >< l i > T i t u l e k 2< / l i >< / u l >< / l i >

Co mel autor na mysli?

Tvorba informacních systému 14/46

8. XML Technologie

Úvod

Príklad - XML dokument se smíšeným obsahem 1/2

<books><book>

< t i t l e >XML Data Management< / t i t l e ><author>

Akmal B . Chaudhri , Awais Rashid ,Roberto Z i c a r i

< / author><keywords>

XML, Nat ive XML Database , . . .< / keywords><desc>

< isbn>0−201−84452−4< / isbn>copy 2003 Addison Wesley Pro fess iona l

< / desc>< / book>. . .

< / books>

Tvorba informacních systému 15/46

8. XML Technologie

Úvod

Príklad - XML strom

XML strom pro dokument se smíšeným obsahem.

BOOKS

BOOK

TITLE

PCDATA

(4) (5) (6)XML Data Management:(7) (4) (8)

Native XML and XML-Enabled(9) (10)

Database Systems

AUTHOR

PCDATA

(12) (13)Akmal B. Chaudrhi,

(14) (15)Awais Rashid,

(16) (17)Roberto Zicari

KEYWORDS

PCDATA

(4)XML,(7) (4) (9)

Native XML database,...

DESC

ISBN

PCDATA

(21)0-2001-84452-4

PCDATA

(22) (23)copyright 2003,

(24) (25)Addison Wesley

(26)Professional

34

(2)

34

(1)

0

(0)

36

(11)

38

(18)

35

(3)

37

(3)

39

(3)

40

(19)

41

(20)

43

(3)

42

(3)

Tvorba informacních systému 16/46

8. XML Technologie

Úvod

Validní dokument

XML dokument splnující definované schéma nazývámevalidní.

Obdoba schématu relacní databáze:relacní databáze - schéma relacní databázevsdokument - schéma dokumentu

Jazyky popisující schéma: DTD, XML Schema (W3C), . . .

Výhoda: není nutné psát parser pro každý XML dokument.Pouze definujeme schéma ke kterému je dokument validní.

Tvorba informacních systému 17/46

8. XML Technologie

Úvod

Príklad - DTD< !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) >

] >

Komentár:

Element books obsahuje elementy book.Element book obsahuje elementy title a author.Element book obsahuje atribut id.Element title obsahuje retezcovou hodnotu.Element author obsahuje retezcovou hodnotu.

Tvorba informacních systému 18/46

8. XML Technologie

Úvod

DTD

Základní rys: Definujeme atributy a elementy jako deti jinýchelementu.

Nevýhody:

Nejsou definovány datové typy, napr. celé císlo neboretezec.Nejedná se o XML dokument – DTD bylo prevzato zSGML.

Tvorba informacních systému 19/46

8. XML Technologie

Úvod

XML Schema

Vlastnosti:

Vestavené datové typy (xsd:string, xsd:int, ...),možnost definovat uživatelské datové typy.

Presné nastavení poctu výskytu elementu v nadelementu.

Relativne složité a necitelné, druhý pohled: XML dokumentnemusí být nutne dobre citelný pro cloveka.

Tvorba informacních systému 20/46

8. XML Technologie

Úvod

Príklad - XML Schema 1/3

<xsd:schemaxmlns: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:element>

Komentár: XML dokument obsahuje korenový element booksa neomezeným poctem detských elementu book.

Tvorba informacních systému 21/46

8. XML Technologie

Úvod

Príklad - XML Schema 2/3

. . .<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=" requ i red " / >< / xsd:complexType>

< / xsd:element>

Komentár: Element book obsahuje elementy title a authors obsahem typu string a atribut id typu IdType.

Tvorba informacních systému 22/46

8. XML Technologie

Úvod

Príklad - XML Schema 3/3

. . .<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 "><xsd : l eng th value=" 9 " / >< xsd :pa t t e rn value=" [0−1]−[0−1] " / >

< / x s d : r e s t r i c t i o n >< / xsd:simpleType>< / xsd:schema>

Komentár: Definujeme datový typ IdType, který dedí zretezce. Omezíme délku na 9 znaku a regulárními výrazemobsah retezce.

Tvorba informacních systému 23/46

8. XML Technologie

XML dotazovací jazyky - XPath

XML dotazovací jazyky

XPath, XQuery (oba W3C), . . . .

Jazyky jsou založené na XPath.

XPath umožnuje procházet XML strom pomocí výrazu cest(path expressions).

Obsahuje osy XPath (XPath axes) – relace mezi uzlystromu.

Dále obsahuje funkce, napr. vrácení podretezce atd.

Tvorba informacních systému 24/46

8. XML Technologie

XML dotazovací jazyky - XPath

XPath

Dotaz se skládá z výrazu axis::tag[filter] oddelených /nebo //. Výsledkem výrazu na kontextovém uzlu u je množinauzlu u′:

Relace axis obsahuje (u, u′).Znacka pro u′ je tag.Podmínka filter nabývá hodnoty true na uzlu u′.

books/book/title//book/title//book[author=’Joseph Heller’]/title//book[author=’Joseph Heller’ AND year >1965]/title

Tvorba informacních systému 25/46

8. XML Technologie

XML dotazovací jazyky - XPath

Príklad, XPath

The Return of the King

001-00863 J.R.R. Tolkien

book

id title author

Catch 22045-00012 Joseph Heller

book

id title author

The Two Towers

003-04312 J.R.R. Tolkien

book

id title author

books

books/book/title//book/title//book[author=’Joseph Heller’]/title

Tvorba informacních systému 26/46

8. XML Technologie

XML dotazovací jazyky - XPath

Osy XPath 1/2

parent 1. uzel na ceste od u ke koreniancestor uzly ležící na ceste z u ke koreniancestor-or-self u a uzly ležící na ceste z u ke korenichild prímý potomek uzlu udescendant všechny uzly pro které je u predekdescendant-or-self descendant + upreceding uzly predcházející uzel u (krome

predku)

Tvorba informacních systému 27/46

8. XML Technologie

XML dotazovací jazyky - XPath

Osy XPath 2/2

following uzly následující uzel u (krome po-tomku)

preceding-sibling predcházející sourozenci ufollowing-sibling následující sourozenci uattribute atribut uzlu uself unamespace jmenný prostor u

Tvorba informacních systému 28/46

8. XML Technologie

XML dotazovací jazyky - XPath

Príklad, Osy XPath 1/4

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

(a) (b) (c)

Výsledné uzly výrazu (a) parent::*, (b) ancestor::*,(c) ancestor-or-self::* z kontextového uzlu 7.

Tvorba informacních systému 29/46

8. XML Technologie

XML dotazovací jazyky - XPath

Príklad, Osy XPath 2/4

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

(a) (b) (c)

Výsledné uzly výrazu (a) child::*, (b) descendant::*,(c) descendant-or-self::* z kontextového uzlu 1.

Tvorba informacních systému 30/46

8. XML Technologie

XML dotazovací jazyky - XPath

Príklad, Osy XPath 3/4

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

(a) (b)

Výsledné uzly výrazu (a) preceding::* a(b) following::* z kontextového uzlu 6 resp. 1.

Tvorba informacních systému 31/46

8. XML Technologie

XML dotazovací jazyky - XPath

Príklad, Osy XPath 4/4

01

2

3 4

5

6

7

8 9

01

2

3 4

5

6

7

8 9

(a) (b)

Výsledné uzly výrazu (a) preceding-sibling::* a(b) following-sibling::* z kontextového uzlu 6 resp. 2.

Tvorba informacních systému 32/46

8. XML Technologie

XML dotazovací jazyky - XPath

XQuery

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 / authorr 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 >

Tvorba informacních systému 33/46

8. XML Technologie

XML Namespace, XSLT

XML namespace

Umožnuje rozšírit 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 "xmlns :xs l= " h t t p : / /www.w3 . org /1999/XSL / Transform ">

< x s l : t e m p l a t e match=" / ">

Tvorba informacních systému 34/46

8. XML Technologie

XML Namespace, XSLT

EXtensible Stylesheet Language Transformation(XSLT)

W3C standard.

Transformace XML dokumentu na jiný XML dokument.

Transformace je rízena transformacním souborem – XMLsoubor validní ke schématu XSL.

XSL je rozsáhlejší, obsahuje i XSL FO (formatting objects)– napr. transformace XML do pdf.

Tvorba informacních systému 35/46

8. XML Technologie

XML Namespace, XSLT

Príklad, XSLT 1/2

<?xml version=" 1.0 " encoding=" ISO−8859−1" ?>< x s l : s t y l e s h e e t version=" 1.0 "xmlns :xs 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>< tab le border= " 1 ">

< t r bgco lor= " #9acd32 ">< th> T i t l e < / th>< th> A r t i s t < / th>

< / t r >

Komentár: Korenový element je nahrazen temito znackami.

Tvorba informacních systému 36/46

8. XML Technologie

XML Namespace, XSLT

Príklad, XSLT 2/2

< x s l : f o r −each s e l e c t = " ca ta log / cd ">< t r >

< td>< xs l : va l ue−of s e l e c t = " t i t l e " / >< / td>< td>< xs l : va l ue−of s e l e c t = " a r t i s t " / >< / td>

< / t r >< / x s l : f o r −each>

< / t ab 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 >

Komentár: Pro každý element catalog/cd vložíme obsahelementu title a artist.

Tvorba informacních systému 37/46

8. XML Technologie

Programovací jazyky a XML

Programovací jazyky a XML 1/2

Parsery:

DOM (Document Object Model) – W3C, XML dokument jenacten do pameti jako struktura instancí.Projekty: Apache Xerces (C, Java)(http://xerces.apache.org/), Microsoft XML Parser.SAX – sekvencne zpracováváme jednotlivé elementy,které parser nacítá.Projekty: Xerces, Microsoft XML Parser.

Tvorba informacních systému 38/46

8. XML Technologie

Programovací jazyky a XML

Programovací jazyky a XML 2/2

Parsery, poznámky:

Soucástí parseru je casto API pro validaci dokumentu vucischématu.SAX, http://sax.sourceforge.net/ – Simple APIfor XML, nejedná se o standard W3C.DOM, http://www.w3.org/TR/DOM-Level-2-Core –je standardem W3C.

Implementace XSLT:

Microsoft XML Parser.Apache Xalan (C++, Java) –http://xalan.apache.org/.

Tvorba informacních systému 39/46

8. XML Technologie

Programovací jazyky a XML

Príklad, DOM, Java 1/2DocumentBui lderFactory db fac to ry =

DocumentBui lderFactory . newInstance ( ) ;DocumentBuilder b u i l d e r =

db fac to ry . newDocumentBuilder ( ) ;Document doc = b u i l d e r . parse (new F i l e ( " f i l e . xml " ) ) ;

Element roo t = doc . getDocumentElement ( ) ;

Komentár:

Vytvoríme instanci parseru a nacteme dokumentfile.xml. Dokument je nacten do pameti jako strukturaobjektu. ⇒ Mužeme tedy získat referenci na objektreprezentující element nebo atribut.Na posledním rádku požadujeme referenci na korenovýelement.

Tvorba informacních systému 40/46

8. XML Technologie

Programovací jazyky a XML

Príklad, DOM, Java 2/2

. . .NodeList l i s t = roo t . getElementsByTagName ( " book " ) ;for ( i n t i = 0 ; i < l i s t . getLength ( ) ; i + + ) {

Element element = ( Element ) l i s t . i tem ( 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 " ) ;. . . .

}

Komentár:

Získáme podelementy korenového uzlu se jménem book.V cyklu získáváme hodnotu atributu id a referenci naelement title aktuálního elementu book.

Tvorba informacních systému 41/46

8. XML Technologie

Programovací jazyky a XML

Príklad, C#, 1/4

.NET zahrnuje trídu XmlReader s podobnou funkcionalitou jakoSAX.

XmlReaderSett ings xrs = new XmlReaderSett ings ( ) ;x rs . IgnoreWhitespace = true ;using ( XmlReader reader=XmlReader . Create ( " d : \ \ book . xml " , x rs ) ){

reader . ReadStartElement ( " books " ) ;. . .

Komentár:

Otevreme soubor (budeme ignorovat ’bílé’ znaky) anacteme korenový uzel books.

Tvorba informacních systému 42/46

8. XML Technologie

Programovací jazyky a XML

Príklad, C#, 2/4

while ( true ) {t ry {

i f ( reader . HasAt t r i bu tes ) {while ( reader . MoveToNextAttr ibute ( ) ) {

Console . Wr i teL ine ( " book {0 }= {1 } " ,reader .Name, reader . Value ) ;

}reader . MoveToElement ( ) ;

}

Komentár:

V cyklu se prochází deti books, tedy elementy book.Nejprve vypíšeme názvy a hodnoty všech atributu. V tomtoprípade obsahuje book pouze atribut id.

Tvorba informacních systému 43/46

8. XML Technologie

Programovací jazyky a XML

Príklad, C#, 3/4reader . ReadStartElement ( " book " ) ;reader . ReadStartElement ( " t i t l e " ) ;Console . Wr i teL ine ( " t i t l e : " + reader . ReadString ( ) ) ;reader . ReadEndElement ( ) ; / / t i t l e

reader . ReadStartElement ( " author " ) ;Console . Wr i teL ine ( " author : " + reader . ReadString ( ) ) ;reader . ReadEndElement ( ) ; / / authorreader . ReadEndElement ( ) ; / / book

Komentár:

Ve stejném cyklu vypíšeme obsah elementu title aauthor.Všimete si ctení koncových znacek pomocíReadEndElement().

Tvorba informacních systému 44/46

8. XML Technologie

Programovací jazyky a XML

Príklad, C#, 4/4

} / / t r ycatch ( XmlException ){

break ;}

} / / wh i lereader . ReadEndElement ( ) ; / / books

Komentár:

Po nactení všech elementu book dojde k výjimce a cyklusje ukoncen.Nacteme koncovou znacku korenového elementu books.

Tvorba informacních systému 45/46

8. XML Technologie

Programovací jazyky a XML

Príklad, C#, dokument a výsledek

Tvorba informacních systému 46/46

8. XML Technologie

Programovací jazyky a XML

Reference

XPath, XQuery – http://www.w3c.org

XML Namespace –http://www.w3.org/TR/REC-xml-names/

XSLT – http://www.w3schools.com/xsl/

Apache Xerces, XalanMicrosoft XML ParserAkmal B. Chaudhri, Awais Rashid, Roberto Zicari: XMLData Management: Native XML and XML-EnabledDatabase Systems. Addison-Wesley Professional, 2003.