��������������������������������������������� ���������������������������������������������
����������������������������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ������������������������������������������������������������������������������������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ������� ��� ���������� ��� ��������� ���������� ��������� ��������� �������� ���������� ������������������� ����� ����������� ������ ������������ ����� ������������� ���������������������������������������������������������������������������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������������� ���������������������������������������������������������������������������� �������������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ���������������������������������������������������������������������������� ������������������������������������������������������������������������������������ ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ����������������������������������������������������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
��������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
i
i
i
i
Edice Management v informa£ní spole£nosti Edi£ní rada: Prof. Ing. Josef Basl, CSc. Vysoká ²kola ekonomická v Praze p°edseda Ing. Kate°ina Drongová Grada Publishing, a.s. místop°edseda Prof. Ing. Jan Ehleman, CSc. Technická univerzita Liberec Doc. RNDr. Josef Hynek, MBA, Ph.D. Univerzita Hradec Králové JUDr. Martin Maisner kancelá° ROWAN LEGAL Doc. Ing. Karol Matia²ko, CSc. ilinská univerzita v ilin¥ Prof. RNDr. Jaroslav Pokorný, CSc. MFF UK v Praze Doc. Ing. Jan Pour, CSc. VE v Praze Doc. Ing. Karel Richta, CSc. FEL VUT v Praze Doc. Ing. Petr Sodomka, Ph.D. UTB ve Zlín¥ Doc. Ing. Milena Tvrdíková, CSc. VB-TU Ostrava Prof. Ing. Ivan Vrana, DrSc. eská zem¥d¥lská univerzita v Praze SEPARATOR
Prof. RNDr. Jaroslav Pokorný, CSc. a kolektiv
XML technologie
Principy a aplikace v praxi Auto°i: RNDr. Irena Mlýnková, Ph.D. kap. 2, 4, 7.2 Mgr. Martin Ne£aský kap. 9, 10 Prof. RNDr. Jaroslav Pokorný, CSc. úvod, kap. 1.5.2, 1.5.3, 3, 7.4 Doc. Ing. Karel Richta, CSc. kap. 1, 5 Mgr. Kamil Toman kap. 6, 7.1, 7.3 Mgr. Vojt¥ch Toman kap. 8 Vydala Grada Publishing, a.s. U Pr·honu 22, 170 00 Praha 7 tel.: +420 220 386 401, fax: +420 220 386 400 www.grada.cz jako svou 3420. publikaci Recenzenti Ing. Ji°í Kosek a RNDr. Tomá² Pitner, Ph.D. Odpov¥dný redaktor Mgr. Petr Mu²álek Sazba RNDr. Irena Mlýnková, Ph.D. a Mgr. Martin Ne£aský Po£et stran 272 První vydání, Praha 2008 Vytiskly Tiskárny Havlí£k·v Brod, a.s. Husova 1881, Havlí£k·v Brod c °
Grada Publishing, a.s., 2008
c fotobanka allphoto images Cover Photo ° ISBN 978-80-247-2725-7
ISBN 978-80-247-6688-1
(tištěná verze) (elektronická verze ve formátu PDF)
© Grada Publishing, a.s. 2011
i
i i
i
i
i
i
i
Obsah
O autorech
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
P°edmluva .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Úvod 1
Principy formátu XML .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.1
Formát XML
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.2
XML dokument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.3
Denice struktury dokumentu pomocí DTD . . . . . . . . . . . . . . . . . . . . .
20
1.4
Jmenné prostory XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
1.5
Aplika£ní rozhraní
36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
XML schémata a jazyk XML Schema
. . . . . . . . . . . . . . . . . . . . .
47
2.1
Motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
2.2
Základy jazyka XML Schema
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
2.3
Jednoduché datové typy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
2.4
Atributy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
2.5
Elementy
59
2.6
Sloºené datové typy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
2.7
Skupiny atribut· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
2.8
Dal²í jazyky pro denici XML schématu . . . . . . . . . . . . . . . . . . . . . . .
67
2.9
Shrnutí
70
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Jazyky XPath, XPointer a XLink
. . . . . . . . . . . . . . . . . . . . . . . .
71
3.1
XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
3.2
XPointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
3.3
XLink
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
3.4
Shrnutí
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
4
Pokro£ilé techniky jazyka XML Schema
. . . . . . . . . . . . . . . . . . . .
89
4.1
Omezení identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
4.2
Substituovatelnost a substitu£ní skupiny . . . . . . . . . . . . . . . . . . . . . . .
93
4.3
Zástupci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
4.4
Externí schémata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
4.5
Notace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
4.6
Anotace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
4.7
Ko°enový element schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
4.8
Vztah jazyka XML Schema k XML dokument·m
. . . . . . . . . . . . . . . . . .
99
4.9
Vztah jazyka XML Schema k DTD . . . . . . . . . . . . . . . . . . . . . . . . . .
99
4.10 Shrnutí
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5
i
i i
i
i
i
i
i
5
Transformace XML dokument· pomocí XSLT
5.1
Struktura XSL dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.2
Prvky jazyka XSL
5.3
Aplikace pravidel XSLT
5.4
Zpracování XML dokumentu pomocí XSLT
5.5
P°íklad p°evodu XML do HTML
5.6
P°íklad jednoduché databáze v XML . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.7
Shrnutí
. . . . . . . . . . . . . . . .
103
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 . . . . . . . . . . . . . . . . . . . . . 117
. . . . . . . . . . . . . . . . . . . . . . . . . . . 119
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6
Jazyk XQuery
6.1
Datové modely XML a dotazovacích jazyk·
6.2
Cesty
6.3
Konstruktory
6.4
Výrazy FLWOR
6.5
Kvantikátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.6
Datový model XQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.7
Vstupní funkce
6.8
Funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.9
Datové typy a schémata
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
127
. . . . . . . . . . . . . . . . . . . . . 127
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.10 Formální sémantika XQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.11 Shrnutí
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7
XML databáze
7.1
Uloºení XML dat v systému soubor· . . . . . . . . . . . . . . . . . . . . . . . . . 147
7.2
Uloºení XML dat v rela£ní databázi
7.3
Nativní XML úloºi²t¥
7.4
SQL/XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
147
. . . . . . . . . . . . . . . . . . . . . . . . . 148
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
8
Komprese XML dat
8.1
Komprese dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.2
Komprese XML dat
8.3
Shrnutí
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
9
Modelování XML dat
9.1
Návody pro návrh XML schémat
. . . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.2
Abstrakce návrhu XML schémat
. . . . . . . . . . . . . . . . . . . . . . . . . . . 225
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 Praktické vyuºití XML
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1 Vybrané standardní XML formáty 10.2 Webové sluºby
217
241
. . . . . . . . . . . . . . . . . . . . . . . . . . 241
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
10.3 Podpora XML v existujících RSBD . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.4 Shrnutí
Literatura Rejst°ík
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
257
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
263
XML technologie
i
i i
i
i
i
i
i
O autorech
RNDr. Irena Mlýnková, Ph.D. absolvovala magisterské i postgraduální studium na Matematicko-fyzikální fakult¥ UK, kde v sou£asné dob¥ p·sobí jako odborná asistentka na kated°e softwarového inºenýrství. Ve své v¥decké £innosti se v¥nuje problematice správy XML dat v (objektov¥) rela£ních databázích, podobnosti XML dat a jejího vyuºití, analýzy reálných XML dat, automatického generování XML dat a XML benchmarkingu. Výsledky své práce publikuje na mezinárodních konferencích (DocEng, DASFAA, DEXA, IDC, ISD, ...) i v odborných knihách a £asopisech. N¥které z nich získaly významná ocen¥ní. V rámci svého pedagogického p·sobení spoluvytvá°ela na MFF UK p°edná²ku Technologie XML a Pokro£ilé technologie XML a na tuto oblast zam¥°uje i vedené bakalá°ské a diplomové práce a studentské projekty.
Mgr. Martin Ne£aský
vystudoval Matematicko-fyzikální fakultu UK,
obor Datové inºenýrství. V sou£asnosti p·sobí jako postgraduální student na kated°e softwarového inºenýrství MFF UK. Tématy jeho výzkumu jsou návrh, integrace a správa XML dat a dále pak webové sluºby a sémantický web. Výsledky své práce publikuje na mezinárodních konferencích (SAC, EJC, ICDIM, APCCM, ...). Na uvedené oblasti zam¥°uje i témata vedených bakalá°ských a diplomových prací. Na MFF UK vyu£uje úvodní kurzy do databázových systém· a programování a p°edm¥ty Technologie XML a Pokro£ilé technologie XML. Na FEL VUT vyu£uje p°edm¥t Technologie XML.
Prof. RNDr. Jaroslav Pokorný, CSc.
byl jmenován profesorem infor-
matiky v roce 1999. Je autorem více neº 250 p·vodních publikací, v¥deckých monograí a vysoko²kolských u£ebnic z oblasti zpracování dat. Jako £len organiza£ního výboru se podílel na uskute£n¥ní osmi mezinárodních konferencí. Je £lenem v¥deckých rad FAV ZÚ v Plzni, FIS VE v Praze, rady ÚI AV R a MFF UK. Pracuje v komisi pro státní zkou²ky na MFF UK a FEL VUT, je £lenem oborové rady pro doktorské studium na MFF UK a dal²ích ²kolách. P·sobí jako expert v European Commision, je reprezentantem R v organizaci IFIP, stálým recenzentem Computing Reviews a Zentralblatt für Mathematik. Na MFF UK pracuje od roku 1982, v letech 19952006 zde zastával funkci vedoucího katedry softwarového inºenýrství. Od roku 2008 je prod¥kanem MFF UK pro v¥du a zahrani£ní styky.
O autorech
7
i
i i
i
i
i
i
i
Doc. Ing. Karel Richta, CSc.
vystudoval obor Technická kybernetika
na FEL VUT v Praze, habilitoval se v roce 1992 v oboru Výpo£etní technika. V sou£asnosti pracuje na kated°e softwarového inºenýrství MFF UK v Praze. Zabývá se formálními specikacemi, softwarovým inºenýrstvím, databázovými systémy a programováním. U£í a u£il také n¥které p°edm¥ty na jiných ²kolách, nap°. na kated°e po£íta£· FEL VUT, kated°e informa£ních technologií VE, kated°e informa£ních technologií PEF ZU, kated°e informatiky a matematiky VFS a kated°e informa£ních technologií BIV. Je autorem £i spoluautorem n¥kolika knih, publikoval více neº 100 p°ísp¥vk· na r·zných konferencích. Je £lenem ACM a SSI.
Mgr. Kamil Toman vystudoval Matematicko-fyzikální fakultu UK, obor Po£íta£ové systémy. V sou£asné dob¥ p·sobí jako postgraduální student na kated°e softwarového inºenýrství. Tématy jeho výzkumné práce jsou zejména problematika adaptivního ukládání XML a vyhledávání v XML datech, analýza reálných XML dat a vyuºití t¥chto postup· v nativních XML databázích. Výsledky práce publikuje na mezinárodních konferencích. V rámci svého p·sobení na fakult¥ spoluvytvá°el p°edná²ku Technologie XML. Mimo akademickou sféru p·sobí jako softwarový architekt, p°i£emº se v¥nuje mimo jiné problematice datových integrací a webových sluºeb.
Mgr. Vojt¥ch Toman vystudoval Matematicko-fyzikální fakultu UK, obor Informatika. Po ukon£ení studií pracoval jako softwarový inºenýr ve spole£nosti Gitus, a.s. Od roku 2006 p·sobí v nizozemské spole£nosti X-Hive Corporation B.V., která se zabývá vývojem technologií pro nativní správu XML dat a °ízení a publikování komplexního XML obsahu. Je aktivním £lenem pracovní skupiny XML Processing Model konsorcia W3C. Na MFF UK extern¥ p°edná²í o problematice komprese XML dat.
8
XML technologie
i
i i
i
i
i
i
i
P°edmluva
Jazyk XML standardizovaný konsorciem W3C p°isp¥l k vývoji souvisejících metod, které se dnes souhrnn¥ nazývají XML technologií nebo XML technologiemi. Technologie, jak je známo, je soubor postup·, nástroj· a proces· slouºících n¥jaké £innosti. V p°ípad¥ XML m·ºe jít nejen o transfer dokument· nebo jejich transformace apod., ale i o jejich ukládání v databázi a zpracování databázovým zp·sobem. Zna£kovací jazyk XML slouºí jako vým¥nný formát dat, tvo°í syntaktickou základnu sémantického webu, je na n¥m zaloºena servisn¥ orientovaná integrace, lze ho dokonce povaºovat za nový databázový model. Existence XML vedla k rozvoji °ady dal²ích jazyk· a podp·rných nástroj· pro pouºití XML v softwarových systémech. Konsorcium W3C koordinuje rozvoj XML technologie a snaºí se dokonce o vytvo°ení jejího formálního základu. etba dokument· vytvo°ených W3C je ov²em, podobn¥ jako i jiných standard·, obtíºná, díky v²em nutným technickým detail·m, které takové standardy musí mít. Jedním z cíl· knihy je p°iblíºit technologii informatikovi tak, aby se mohl v p°ípad¥ pot°eby orientovat v konkrétních prost°edcích souvisejících s XML, které sou£asná praxe nabízí, £i dokonce, aby byl schopen takové prost°edky vyvíjet. P°iznejme, ºe zvlá²t¥ u managementu XML dat, kam pat°í i sou£asné XML databáze, to není nijak snadný úkol. Seznámit £eské £tená°e detailn¥ji s databázovým zpracováním XML dat je proto dal²ím cílem knihy. P°estoºe je kniha zacílena na profesionály vyuºívající technologii XML v rámci aplikací, díky jejímu rozd¥lení do jednotlivých kapitol v ní m·ºe i za£áte£ník nalézt pot°ebný úvodní materiál a vynechat p°ípadn¥ detaily speciálních £ásti XML technologie. Nezadatelnou motivací k vydání titulu byl téº rychlý vývoj dané problematiky v posledních letech. P°ipome¬me také v této souvislosti, ºe od vydání p·vodní £eské práce o XML [91] Ji°ího Koska uplynulo jiº osm let. Knihu m·ºeme neformáln¥ rozd¥lit do dvou £ástí. První, tj. kapitoly 16, vychází ze standard·. Druhá £ást, kapitoly 710, je zam¥°ena na problematiku, která se neustále vyvíjí a která spí²e mapuje stav v dané oblasti. Díky rozsahu a orientaci knihy se domníváme, ºe u nás existuje relativn¥ ²iroká základna potenciálních £tená°·, od student· informatiky p°es vývojá°e software aº po manaºery podnikové informatiky. V textu je pouºita °ada p°íklad·, které nazna£ují, jak XML technologii vyuºít a zárove¬ kudy se ubírá její dal²í vývoj. Na obsahu knihy se auto°i podíleli následujícím zp·sobem: Jaroslav Pokorný Úvod, kapitoly 1.5.2, 1.5.3, 3 a 7.4, Karel Richta kapitoly 1 a 5, Irena Mlýnková kapitoly 2, 4 a 7.2, Kamil Toman kapitola 6, úvodní £ást kapitoly 7 a kapitola 7.3, Vojt¥ch Toman kapitola 8, Martin Ne£aský kapitoly 9 a 10. Kniha p°edstavuje vyúst¥ní aktivit autor· v oblasti XML technologie v posledních sedmi letech. Látka byla nejprve zpracována na úrovni zvaného tutoriálu konference EurOpen v roce 2000, dále pak byla zpracována pro semestrový kurz v informatické sekci MFF UK, který je dnes sou£ástí magisterské výuky. Publika£n¥ byla £ást materiálu také zpracována ve form¥ skript. Od roku 2007 je kurz v modikované form¥ realizován i na FEL VUT. Auto°i se v dané oblasti v¥nují rovn¥º výzkumu. Jejich výsledky byly prezentovány jak na £etných mezinárodních konferencích, tak ve sv¥tových £asopisech.
P°edmluva
9
i
i i
i
i
i
i
i Auto°i d¥kují Mgr. Janu Ulrychovi za pe£livé p°e£tení rukopisu textu, kontrolu p°íklad· v odpovídajícím SW a za °adu p°ipomínek, které p°isp¥ly ke zkvalitn¥ní výsledku. Dále d¥kují RNDr. Davidu Bednárkovi a Mgr. Ji°ímu Dokulilovi za p°e£tení vybraných £ástí textu a konzultace k nim. V neposlední °ad¥ pak pat°í velký dík recenzent·m, Ing. Ji°ímu Koskovi a RNDr. Tomá²i Pitnerovi, Ph.D., za cenné rady, p°ipomínky a post°ehy a také sponzor·m za významnou pomoc p°i pokrytí náklad· na vydání knihy. Kniha obsahuje pom¥rn¥ velké mnoºství p°íklad·. V²echny p°íklady je moºné nalézt na webové stránce
http://kocour.ms.mff.cuni.cz/necasky/bk/technologiexml.
Budou zde také
umís´ovány opravy p°ípadných chyb a dal²í související informace. P°ipomínky ke knize jsou vítány na e-mailové adrese
[email protected].
V Praze dne 8. 8. 2008 auto°i
10
XML technologie
i
i i
i
i
i
i
i
Úvod
O XML se m·ºeme do£íst, ºe je to zna£kovací jazyk ur£ený pro zna£kování text·. Co a k £emu v²ak je to zna£kování? Sta£í si uv¥domit, ºe s n¥jakým zna£kováním se setkáváme b¥ºn¥ v ºivot¥. K zapsanému textu zapí²eme nap°. po stranách jednotlivých stránek r·zná znaménka, jejichº význam známe jen my sami, pouºijeme podtrhávání, r·zné barvy pro orámování £ástí textu apod. Zna£ky tedy slouºí k vyzna£ení jistých £ástí nebo obecn¥ji jednotek v textu. Z°ejm¥ je moºné pomocí zna£ek vtisknout p·vodn¥ i zcela nestrukturovanému textu n¥jakou strukturu. V XML se taková sada zna£ek nejprve denuje, aby ji mohla vyuºívat n¥jaká zájmová skupina, a pak se aplikuje na zvolené texty. Zna£ky jsou vlastn¥ jakési závorky vyjád°ené op¥t jako text, který smyslupln¥ vyjad°uje, co obsah textu mezi závorkami znamená. Nap°. text Technologie
XML
Technologie XML m·ºeme vnímat znamená název. O jaký název jde, m·ºe být
ozna£kovaný jako
závorkami
a
tak, ºe text mezi patrné z kontextu
výskytu textu. To, ºe jsou zna£ky volitelné, nazna£uje, ºe XML je vlastn¥ metajazyk. K dispozici jsou pevn¥ daná (jen syntaktická) pravidla, jak zna£ky pouºívat. Je celkem z°ejmé, jak zna£kovat ru£n¥, lze si v²ak p°edstavit i zp·sob, kdy ozna£kovaný text je podle n¥jakého p°edpisu generován z po£íta£ových aplikací. A k £emu je to dobré? Na základ¥ dohodnutých zna£ek pak jedna aplikace m·ºe porozum¥t údaj·m z jiné aplikace. Prvotním ú£elem jazyka XML bylo skute£n¥ podpo°it vým¥nu dat. O jaká data vlastn¥ jde? XML, jako zcela univerzální prost°edek, samoz°ejm¥ m·ºe být pouºit pro jakákoliv data. Typicky m·ºe jít o data z rela£ní databáze, která jsou transportována v business-to-business (B2B) úlohách. Dále lze uvést poloºky z telefonního seznamu, rozvrh odlet· letadel nebo data zákaznických smluv. Jejich hlavním rysem je, ºe jsou pravideln¥
strukturovaná
a v dob¥ návrhu
jejich po£íta£ového zpracování jsou známy jejich typy (v °e£i databází schéma databáze). Na druhé stran¥ spektra stojí data zcela
nestrukturovaná,
anebo strukturovaná jen velmi
málo. Jde obvykle o texty, u kterých sice známe autora a datum vydání apod., ne v²ak jiº vnit°ní strukturu samotného textu. Ta m·ºe sice existovat (kapitoly, odstavce), ale nejsou prost°edky, jak ji p°esn¥ popsat. Obvyklým nástrojem pro manipulaci s t¥lem takového dokumentu jsou fulltextové systémy. Praxe proto rozli²ila XML data na -oriented nebo document-centric) a
datov¥ orientovaná
dokumentov¥ orientovaná
(document-
(data-oriented nebo data-centric). Mezi
datov¥ orientovanými a dokumentov¥ orientovanými XML daty je v²ak n¥kdy hranice nez°etelná, n¥které dokumenty mají rysy obou kategorií. Nap°. objednávka m·ºe obsahovat nestrukturovaná data jako nap°. poznámky nebo komentá°e, zatímco £lánek v £asopise obsahuje i strukturovaná data jako nap°. jméno autora, datum vydání apod. Na tuto kategorii XML dat se hodí termín
hybridní. Dále existují data, jako jsou záznamy o vy²et°eních pacienta, soubor kucha°ských recept·, webová místa, nap°. stránka Amazon.com, ale i data ve formátu XHTML (XML následník formátu HTML). Tato data mohou být velmi nepravidelná. Nap°. záznamy pacient· mohou obsahovat vºdy odli²né druhy vy²et°ení a odpovídající nasazení lék·. To znamená, ºe typy v²ech poloºek nejsou známy v dob¥ návrhu po£íta£ového uloºení (depozitá°e, databáze) t¥chto dat. Jinými slovy °e£eno, je obtíºné, ne-li nemoºné, zkonstruovat jejich schéma. Roli hraje i uspo°ádání £ástí dat. Ve známé databázi XML dat obsahující Shakespearovy hry jsou data reprezentována
Úvod
11
i
i i
i
i
i
i
i tak, ºe lze rozli²it nap°. v²echny repliky Desdemondy, je ov²em vyºadováno, aby po°adí replik v dialozích z·stalo uspo°ádáno stejn¥ jako v p·vodním textu. Hovo°í se pak o
vaných datech,
semistrukturo-
tj. datech, která nemají schéma, mají nepravidelnou nebo implicitní strukturu,
jsou hnízd¥ná a heterogenní. O takových datech se p°edpokládá, ºe budou spí²e zpracovávána strojov¥ neº dotazována £lov¥kem. XML text je dobrým p°íkladem semistrukturovaných dat. Ozna£kovaná data se tedy vym¥¬ují mezi aplikacemi a dokonce existují poºadavky, aby byla vhodným zp·sobem transformovatelná. Moºná do jiných XML dat a nebo k prezentaci v uºivatelských výstupech nebo na webových stránkách. V obou p°ípadech je ob£as nutné XML data ukládat do n¥jakého repozitá°e nebo dokonce databáze. To umoº¬uje jejich sostikovan¥j²í management, a to nejen pro dotazování, ale i pro aktualizaci. Jako databáze m·ºe být pouºit n¥jaký dostupný systém °ízení bází dat (SBD) (pro datov¥ orientovaná XML data), ale i speciální databáze, kterým se °íká
nativní. Tyto databáze jsou zaloºeny na implementaci ²ité na míru
XML
dat·m a jejich zpracování. Nep°íli² zajímavá je moºnost chápat XML data pouze jako text. Pak lze pouºít pouze prost°edky pro práci s textovými daty umoº¬ující indexaci, vyhledávání podle klí£ových slov apod. Podívejme se nyní na XML z hlediska nového databázového modelu. P°i bliº²ím zkoumání zna£kování v XML uvidíme, ºe správn¥ se zna£ky do sebe zahniz¤ují hierarchickým zp·sobem. Tedy XML lze dob°e pouºít pro reprezentaci dat, která jsou p°irozen¥ hierarchická a vyºadují navíc jisté uspo°ádání. To napl¬uje ideu roz²í°it stávající moºnosti databázového zpracování i tam, kde byly rela£ní databáze nepouºitelné nebo byly pouºitelné jen velmi obtíºn¥. P°ipome¬me v této souvislosti obtíºn¥ vyjád°itelné dotazy nad stromovými strukturami v SQL, nap°. sou£ástek a jejich díl·. Jakmile XML proniklo do sv¥ta databází, bylo nutné vytvo°it jazyky pro vyjád°ení schématu XML databáze (i kdyº XML databáze m·ºe existovat bez takového schématu). Objevily se dotazovací jazyky a dal²í jazyky pro práci s XML daty. Lze jiº tedy hovo°it o
technologii XML.
Kniha by m¥la £tená°·m p°iblíºit základy technologie XML. Jejím cílem není podat podrobný popis formátu XML. V textu jsou zd·razn¥ny zejména základní my²lenky související s XML, je nastín¥n datový model XML a moºnosti denice struktury XML dokument· jazyky DTD a XML Schema. Kniha se dále zabývá nástroji, jako jsou jazyk XPath, dotazovací jazyk XQuery a transforma£ní nástroj XSLT. Zvlá²tní d·raz je kladen na základy databází orientovaných na XML, smyslem je ukázat, jak ukládat XML data do databáze, jak je zpracovávat databázovým zp·sobem a jak se k novému trendu staví sou£asné standardy. Ze standard· jme-
1
nujme zejména d·leºitá doporu£ení konsorcia W3C , zvlá²t¥ pak jeho pracovní skupiny XML Query WG, ale také aktivity tým· rozvíjejících pod ISO a ANSI rela£ní jazyk SQL. Dal²í vý-
2
znamnou pr·myslovou iniciativou je XML:DB , která se zabývá hlavn¥ návrhem API k XML databázím. Principy jazyka XML jsou uvedeny v kapitole 1. Zahrnují syntaxi jazyka a jeden z moºných model· XML dat Infoset, dále pak aplika£ní rozhraní SAX, StAX a DOM umoº¬ující snaz²í práci s XML daty. V kapitole je také popsán prost°edek pro denici struktury XML dokument· jazyk DTD. Kapitola 2 je v¥nována podstatn¥ sloºit¥j²ímu prost°edku, neº je DTD, jazyku XML Schema (v aktuální verzi 1.0), který slouºí podobnému ú£elu, ov²em na mnohem vy²²í úrovni a s podstatn¥ v¥t²ími moºnostmi. V kapitole 3 vysv¥tlujeme základy t°í d·leºitých jazyk· XML technologie. První z nich XPath (ve verzi 1.0) je p°íkladem jednoduchého dotazovacího jazyka nad XML daty, XPointer umoº¬uje odkazování mezi XML dokumenty a XLink zobec¬uje vazby mezi webovými místy do prost°edí, kde jsou místo HTML stránek XML dokumenty. Výklad pokro£ilých rys· jazyka XML Schema je obsaºen kapitole 4. Jazyk transformací XSLT, dal²í z rodiny XML jazyk·, je popsán v kapitole 5. Vyvrcholení výkladu o XML p°edstavuje z°ejm¥ kapitola 6, v¥novaná jazyku XQuery. Tento jazyk, jehoº sou£ástí je mimo jiné jazyk XPath 2.0, p°edstavuje zatím nejv¥t²í o°í²ek v technologii XML, nejv¥t²í výzkumné úsilí dosaºené v jejím vývoji, zvlá²t¥ pak z hlediska efektivní implementace jazyka. Následující rozsáhlá kapitola 7
1 http://www.w3.org/ 2 http://www.xmldb.org/ 12
XML technologie
i
i i
i
i
i
i
i se v¥nuje XML databázím. Rozebírají se v ní tzv. nativní XML databáze a ukládání XML dat v rela£ní databázi. Aktuální je také integrace XML dat a rela£ních dat podle standardu SQL/XML. Dal²í kapitoly se zabývají tématy, která v dostupné literatu°e zatím nebývají p°íli² prezentována. Kapitola 8 pojednává o kompresi XML dat. Je z°ejmé, ºe jde o d·leºitou oblast technologie XML, která p°ispívá k efektivnosti provozu XML dat, jak p°i p°enosech, tak p°i dotazování. Konceptuální modelování XML dat je p°edm¥tem kapitoly 9. Toto téma je dnes zvlá²´ aktuální v souvislosti s aplikacemi orientovanými na webové sluºby. Poslední kapitola 10 je zam¥°ena na praktické vyuºití XML a jeho podporu v existujících rela£ních SBD. Následuje rejst°ík umoº¬ující rychlej²í orientaci v textu a seznam obsahující uºite£né odkazy na dal²í relevantní literaturu.
Úvod
13
i
i i
i
i
i
i
i
i
i i
i
i
i
i
i
Kapitola 1 Principy formátu XML
Formát XML denovalo konsorcium W3C jako formát pro p°enos obecných dokument· a dat.
XML
je zkratka pro eXtensible Markup Language, tj. roz²i°itelný zna£kovací jazyk [47]. Návrh
XML vychází ze star²ího a obecn¥j²ího standardu
SGML
(Standard Generalized Markup Lan-
guage ISO 8879:1986 [2]). Poznamenejme, ºe ze standardu SGML vycházel i formát dokument·
HTML
(Hyper-Text Markup Language [116]). Sada zna£ek formátu HTML je pevná a slouºí
k vyjád°ení prezenta£ní podoby dokumentu. Naproti tomu v XML sada zna£ek pevná není, ale m·ºe být denována pro r·zné sady dokument· r·zn¥. Denice sady zna£ek m·ºe být sou£ástí denice XML dokumentu, m·ºe být specikována odkazem, nebo m·ºe být dohodnuta p°edem. Zna£ky mají tvar obecných závorek, nap°.:
<podpis>Josef otevírací zá. Pokud je text nahradit prázdným elementem
Zna£ky slouºí k ozna£ení ur£itých prvk· (£ástí) dokumentu. Zna£ky mají
vorku
(start-tag), nap°.
<podpis>, a zavírací závorku
(end-tag), nap°.
mezi závorkami prázdný, lze dvojici otevírací a zavírací závorky (empty-element), v na²em p°ípad¥ nap°.
Obr. 1.1
<podpis/>.
P°íklad neozna£kované a ozna£kované zprávy
Uvaºme nap°. hypotetickou zprávu na obrázku 1.1. Vyzna£íme-li v této zpráv¥ závorkami podpis odesílatele, bude takový dokument lépe uchopitelný a bude jej moºno zpracovat i programem. V XML m·ºeme navíc stanovit, ºe dokument typu zpráva musí obsahovat adresu, oslovení, text, podpis a dodatek. Tento poºadavek zapí²eme nap°. pomocí nástroje
DTD
(Do-
cument Type Denition) následovn¥:
Principy formátu XML
15
i
i i
i
i
i
i
i
Vlastní obsah kaºdé zprávy pak musí mít odpovídající tvar, nap°.:
Jan Ámos Ahoj! Pozdrav z °í²e div·! <podpis>Alenka <dodatek>Napi²te mi! Pomocí zna£ek XML vyzna£íme syntaktickou strukturu dokumentu. Sémantika zna£ek ani význam jejich obsahu nejsou pomocí XML denovány. Nap°. pro vý²e zmín¥nou zprávu nevíme, co obsah zprávy znamená, nevíme, jak zprávu zpracovat to je v¥cí aplikací, které s dokumentem manipulují. Význam XML spo£ívá v tom, ºe struktura dokumentu je známa, lze ji kontrolovat a zpracovat obecnými nástroji. Libovolná aplikace si m·ºe strukturu dokumentu zjistit a dle této struktury jej zpracovat nap°. zjistit, kdo zprávu podepsal. Pot°eba nezávislého formátu pro reprezentaci a p°enos obecných dokument· je nesporná. Tato kapitola p°edstavuje úvod, ve kterém bude popsán podrobn¥ji formát XML. V následujících kapitolách se budeme zabývat nástroji, které tvo°í
technologie XML.
rodinu XML formát·
a p°edstavují základ
1.1 Formát XML XML je formát pro reprezentaci a p°enos obecných dokument·. P°i návrhu XML se auto°i [47] z konsorcia W3C °ídili následujícími principy:
•
formát XML musí být pouºitelný v rámci internetu,
•
formát XML by m¥l podporovat ²irokou ²kálu aplikací,
•
formát XML musí být kompatibilní s formátem SGML,
•
musí být snadné vytvá°et programy, které manipulují s dokumenty v XML,
•
mnoºství variant XML by m¥lo být minimální nejlépe ºádné a
•
XML dokumenty by m¥ly být £itelné a pochopitelné i pro £lov¥ka.
Na základ¥ t¥chto princip· navrhli denici XML, která zahrnuje dv¥ £ásti:
•
denici, co to je XML dokument,
•
denici program·, které zpracovávají XML dokumenty XML procesor·.
1.2 XML dokument XML dokument se p°edpokládá
je ur£itým zp·sobem uspo°ádaná posloupnost znak· jisté abecedy. Implicitn¥
Unicode
kód ISO/IEC 10646 [3]. Na rozdíl od formátu HTML rozli²uje XML
d·sledn¥ malá a velká písmena. Následující konstrukce proto není dob°e vytvo°ený XML dokument, nebo´ otevírací a zavírací závorka se li²í:
16
XML technologie
i
i i
i
i
i
i
i
... P°ipome¬me, ºe procesory HTML p°ipou²t¥jí obvykle voln¥j²í syntaxi. Koncové závorky lze £asto vynechat, ve zna£kách se nerozli²ují malá a velká písmena, prohlíºe£ obvykle zobrazí i ne zcela korektní dokument, nap°.:
Pozdrav z °í²e div·! Zna£ky XML mohou vyuºívat i národní abecedu, obecn¥ v²ak tento zp·sob zna£ení nelze doporu£it, nebo´ ur£ité problémy m·ºe zp·sobit nap°. r·zné kódování £e²tiny apod. Následující ukázka ilustruje pouºití lokální abecedy ve zna£kách: podle denice je to správn¥ vytvo°ený dokument, nemusí v²ak být vºdy dob°e zpracován.
<podpis>Alenka Fyzicky se XML dokument skládá z posloupnosti prvk· nazývaných
entity.
Fyzická entita
je²t¥ není logický element dokumentu. Z hlediska procesoru XML m·ºe kaºdá fyzická entita obsahovat bu¤ rozpoznatelná data, nebo nerozpoznatelná data. Nerozpoznatelná data mohou být textová nebo binární, která se bu¤ procesoru nepoda°í interpretovat jako znaky, nebo se jedná o data pro jinou aplikaci. Rozpoznatelná data jsou sestavena ze znak· zvolené abecedy a p°edstavují bu¤
znaková data nebo zna£ky (markups). Zna£ky vyzna£ují logickou strukturu rozloºení (layout). Dokument za£íná entitou nazývanou ko°en (root
dokumentu a tím i jeho entity).
Logicky se XML dokument skládá z prologu, deklarací, element·, komentá°· a instrukcí pro zpracování jinými aplikacemi. Logické elementy jsou v dokumentu vyzna£eny zna£kami. Sada zna£ek je obecn¥ libovolná, m·ºe být ale p°edepsána deklaracemi. Deklarace nejsou povinné, pokud ale chceme strukturu dokumentu kontrolovat, musíme ji deklaracemi p°edepsat. XML dokument je
dob°e vytvo°en,
pokud v²echny rozpoznatelné entity v dokumentu jsou správn¥
vytvo°eny a navíc, v²echny rozpoznatelné entity, na které existují v dokumentu odkazy, jsou rovn¥º dob°e vytvo°eny. Kaºdá dvojice závorek musí být korektn¥ spárována v rámci elementu a tyto dvojice musí být dob°e vno°eny do sebe závorky se nesmí k°íºit. Z toho plyne, ºe dob°e vytvo°ený XML dokument má stromovou strukturu. Uvaºme jako p°íklad jednoduchou faxovou zprávu:
<jméno>Jan Ámos <£íslo>333 333 333 <jméno>Karel Hynek <£íslo>666 666 666 Principy formátu XML
17
i
i i
i
i
i
i
i * ... XML poskytuje moºnost denice pouºitelné sady zna£ek, denici logické struktury a rozloºení dokumentu
XML schéma
dokumentu.
Jednoduchým nástrojem na denici je denice
typu dokumentu DTD (Document Type Denition). Nov¥j²ím a mocn¥j²ím prost°edkem je jazyk XML Schema [122, 38], který bude probrán v kapitolách 2 a 4, kde budou zmín¥ny i jiné jazyky pro denici XML schématu. Kaºdý dob°e vytvo°ený XML dokument pak m·ºe být navíc
validní, pokud spl¬uje omezení správnosti (validity constraints) daná specikací XML schématu. Validita dokumentu proto vyºaduje ov¥°ení proti denované specikaci obsahu. Rozpoznatelné entity XML dokumentu jsou sestaveny ze znak·. Implicitní znakovou sadou je Unicode, kaºdý XML procesor proto musí být schopen akceptovat na vstupu Unicode zakódovaný pomocí kódování UTF-8, UTF-16, p°íp. UTF-16LE, £i UTF-16BE. Rozli²ení mezi t¥mito dv¥ma kódy by m¥lo být moºné tak, ºe dokument v UTF-16 musí za£ínat hexadecimální hodnotou
Q
budeme zna£it
#xQ).
#xFEFF
(znak kódovaný
Speciálním zp·sobem jsou zpracovány znaky
mezera (#x20), tabulátor (#x9), nový °ádek (#xA LINE FEED) a p°echod na za£átek °ádku (#xD CARRIAGE RETURN), tj.
bílé znaky
(white spaces).
V na²í lokalit¥ se pro komunikaci se sv¥tem £asto pouºívá UTF-8, který je kompatibilní s kódem ASCII v tom smyslu, ºe obsahuje v²echny znaky ASCII a dal²í znaky jsou kódovány pomocí 24 byt·. Unicode obsahuje v²echny znaky v²ech abeced. Pro £e²tinu lze také pouºít kódování ISO-8859-2 nebo Windows-1250, není v²ak jisté, zda toto kódování bude um¥t kaºdý XML procesor zpracovat.
XML procesor
je modul, který umí £íst XML dokumenty a zp°ístup¬uje jejich prvky aplika-
cím. XML procesor kontroluje, zda je dokument
dob°e vytvo°en
(well-formed). Poru²ení t¥chto
pravidel p°edstavuje fatální chybu, kterou musí XML procesor detekovat a hlásit aplikaci. Po detekci fatální chyby m·ºe XML procesor poskytovat dal²í data aplikaci, ale nesmí pokra£ovat v normálním zpracování. XML procesor m·ºe být vstupní XML dokument
validní
validující
pak umí kontrolovat, zda je
(valid) vzhledem k zadané specikaci struktury. Validující XML
procesor musí navíc hlásit neshodu s deklarovanou strukturou XML dokumentu.
1.2.1 Elementy a atributy XML dokument obsahuje jeden nebo více element·, vymezených závorkami. Kaºdý identikován
jménem,
element je osoba.
které je uvedeno v závorkách omezujících element, nap°. element
Pokud element není prázdný, tvo°í jeho
obsah
entity uzav°ené mezi otevírací a uzavírací závor-
kou.
Text tvo°ící obsah elementu typu osoba. Obsahem elementu m·ºe být libovolná posloupnost znakových dat, jiných vno°ených element·, referencí (odkaz·) na jiné entity, sekcí CDATA, instrukcí pro zpracování jinou aplikací nebo komentá°·. Jednotlivé sloºky jsou popsány dále. Elementy mohou mít
atributy,
kterými jsou blíºe charakterizovány. Atributy se vkládají
do otevírací závorky elementu ve form¥ parametr· zadaných pomocí klí£ových slov. Kaºdá specikace atributu má jméno a hodnotu zapisuje se jako dvojice
jméno="hodnota".
Hodnota
atributu musí být vºdy uvedena v uvozovkách nebo apostrofech. Formáln¥ vzato se vºdy jedná o °et¥zec znak·, by´ je moºné ji interpretovat nap°. jako celé £íslo. Jiº zmín¥nou faxovou zprávu m·ºeme pomocí atribut· vyjád°it nap°. následovn¥:
18
XML technologie
i
i i
i
i
i
i
i
... ... ...
1.2.2 Prázdný element Prázdné elementy nemají ºádný obsah. Slouºí pro vyzna£ení místa v dokumentu, nap°. vyzna£ení místa, kam se pozd¥ji doplní n¥jaký prvek. Prázdný element m·ºe mít atributy, které popisují jeho vlastnosti nap°. to m·ºe být odkaz na objekt, který se má do daného místa vloºit. R·zné formy zápisu prázdného elementu ukazují následující p°íklady, kde první element ozna£uje vloºený obrázek, zatímco druhý a t°etí jsou alternativní zápisy prázdného elementu vyzna£ujícího místo, kam se má vloºit odd¥lovací £ára (break).
1.2.3 Komentá°e Komentá°e se v XML dokumentu mohou vyskytovat kdekoliv, ale nemohou být umíst¥ny ve zna£kách. Mají své speciální závorky , aby se daly odli²it od vlastního obsahu dokumentu. Komentá°e se nemohou vno°ovat. V komentá°i se nesmí vyskytovat °et¥zec -
(double-hyphen), nebo´ ten se pouºívá v komentá°ových závorkách podle syntaxe:
XML procesor m·ºe umoºnit aplikaci £íst text komentá°· (obsah komentá°·). Zna£ky uvedené v t¥le komentá°e se ov²em interpretují jako komentá°, nikoliv jako ozna£ení elementu. Ve následujícím komentá°i se proto text
p°íklad,
neinterpretuje jako otevírací závorka elementu
ale jako sou£ást textu komentá°e.
->
1.2.4 Instrukce pro zpracování Denice XML dokumentu umoº¬uje, aby dokument obsahoval instrukce, které mají být zpracovány jistou aplikací. Myslí se tím instrukce pro zpracování jinou aplikací, neº je XML procesor. Takové £ásti se °íká
sekce instrukcí
(Processing Instructions PI) a pouºívají se pro ni speciální
závorky se znakem `?'. Instrukce obsahuje náv¥²tí (PITarget), kterým je identikována aplikace,
pro niº je ur£ena. Z pochopitelných d·vod· to nesmí být jakákoliv varianta °et¥zce XML (ºádná
kombinace malých a velkých písmen). Za náv¥²tím m·ºe být bílý znak a poté následuje text, který p°edstavuje data pro danou aplikaci. Následující instrukce je nap°. ur£ena pro aplikaci
xql:
Principy formátu XML
19
i
i i
i
i
i
i
i
Obsah sekce instrukcí není chápán jako sou£ást XML dokumentu, je pouze p°edán ke zpracování dané aplikaci. Nap°. p°ipojení stylu k dokumentu dosáhneme instrukcí:
1.2.5 Sekce CDATA N¥kdy pot°ebujeme do dokumentu vloºit blok textu, který by mohl být povaºován za zna£ku. Pokud tomu chceme zamezit, pouºijeme speciální
sekci typu znaková data
CDATA (Character
DATA), která slouºí k ozna£ení takových míst. Uvedeme-li v dokumentu text:
<pozdrav>Ahoj! bude chápán jako element pozdrav s obsahem Ahoj!. Chceme-li, aby pozdrav v závorkách nebyl chápán jako zna£ka, ale aby byl jako text sou£ástí obsahu elementu, musíme pouºít konstrukci:
<pozdrav>Ahoj! Pomocí sekce CDATA to zapí²eme snadn¥ji jako:
Ahoj! ]]> Obecn¥ má sekce CDATA tvar:
et¥zec ]]> se v t¥le sekce CDATA pochopiteln¥ nesmí vyskytovat.
1.3 Denice struktury dokumentu pomocí DTD Kaºdý dob°e vytvo°ený XML dokument musí za£ínat
element
prologem,
za kterým následuje
ko°enový
dokumentu. Prologem se stanoví verze XML, kódování dokumentu a p°ípadn¥ poºa-
davky na strukturu dokumentu. V sou£asnosti jsou p°ípustné verze 1.0 a 1.1,
které se li²í
zejména tím, ºe verze 1.1 respektuje zm¥ny v kódování Unicode a umoº¬uje voln¥j²í interpretaci jmen. Kaºdý XML dokument obsahuje jeden £i více element·. Vºdy ov²em obsahuje práv¥ jeden ko°enový element, jehoº ºádná £ást není obsaºena v ºádném jiném elementu. Sou£ástí dokumentu m·ºe být i d°íve zmín¥ná sada komentá°· a instrukcí pro jiné aplikace. Prolog XML dokumentu za£íná deklarací verze XML. Deklarace verze dokumentu má tvar, který p°ipomíná instrukci pro aplikaci xml:
20
XML technologie
i
i i
i