Upload
trinhhuong
View
214
Download
0
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.