Az XML Bevezetés Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 10. 02.
Szüks kségessége 2 Java: plattform független programok XML: plattform független adatok
Az XML kialakulásának törtt rténete SGML 1986 az ISO szabványosítja az SGML-t (Standard Generalized Markup Language) Az SGML egy metanyelv egy adott nyelvvel írunk le egy másikat Az SGML mindent tud, amit egy metanyelvtől elvárunk Hátrány: drága, nehéz kezelhetőség, nagy szakértelem kell egy dokumentum megírásához 3
Az XML kialakulásának törtt rténete (folyt.) HTML I. 1990 - Tim Bernes-Lee kiadja a HTML-t A HTML definícióját SGML-ben adta meg Előny: ingyenes, könnyen kezelhető A ló túlsó oldala: túl egyszerű lett, így összetettebb feladatok elvégzésére nem alkalmas Másik gond: különböző szervezetek, saját kiegészítésekkel látták el 4
Az XML kialakulásának törtt rténete (folyt.) HTML II. Eredmény: Az eredetileg egységes képet felváltotta az "úgy értelmezem a HTML-t, ahogy gondolom" elv A HTML célja a dokumentum megjelenítése (képek, fontok, táblázatok...) Ez a része igen részletes, szinte az összes formázási technikával rendelkezik Lehetőség strukturált dokumentum létrehozására 5
Az XML kialakulásának törtt rténete (folyt.) HTML III. Gond: különböző programok a különböző formázásokat másképpen értelmezhetik (a fent említett elv miatt) A HTML nem rugalmas Nincs lehetőség saját tag-eket megadni 6
Az XML kialakulásának törtt rténete (folyt.) HTML IV. Saját fejlesztés két akadálya: Szinte kizárt, hogy az otthon a sufniban fejlesztett HTML-t a böngészők úgy kezelik, ahogy elterveztük (készíthetünk ugye saját böngészőt, de minek?) A W3C elég kémény megkötéseket tesz a HTML tagekkel szemben 7
Az XML kialakulásának törtt rténete (folyt.) HTML V. Egy dokumentum 2 részre osztható adat központú rész (content style) formázott rész (presentation style) A HTML-ben ez a két rész összemosódik Eredmény: adat változik -> forma is újra generálódik (és fordítva) A HTML képtelen azonos adatokat a felhasználó által megadott formában megjeleníteni 8
Az XML kialakulásának törtt rténete (folyt.) HTML VI. DHTML és javascript volt egy próbálkozás Eredmény: Totális káosz a böngészők és weboldalak terén. 9
Az XML kialakulásának törtt rténete (folyt.) Megjelenítés és s leírás Két szó: megjelenítés és leírás HTML az információt megjeleníti Példa: Az ég kék és a víz nedves. Ezt a HTML gond nélkül képes megjeleníteni Arra nincs utalás, hogy tulajdonképpen egzakt módon mit is jelent, hogy "kék" és hogy "nedves" (Hogy ezek az alany tulajdonságai, az sehol nincs megadva!) 10
Az XML kialakulásának törtt rténete (folyt.) XML Ez a példa gond nélkül megadható SGML-ben, persze komoly nehézségek árán Igény valami újra, megfoghatóbbra, használhatóbbra 1996 - Jon Bosak kéri a W3C-től, hogy SGML-t használhasson WEB-technológiákban Készítettek egy olyan "valami"-t, ami rendelkezik az SGML összes eszközével, de nagyságrendekkel könnyebben kezelhető 11
Az XML kialakulásának törtt rténete (folyt.) XML A "valami" nevet is kapott: XML (extensible Markup Language) 1998. február 10. - A W3C bejelenti az XML 1.0- át 12
XML felépítése Dokumentum központk zpontú XML Az XML fájlokat két csoportba oszthatjuk: dokumentum központú XML adat központú XML 1997-es megjelenése után előszerettel használták dokumentációk leírásánál, hisz "könnyen" olvasható Most a továbbiakban elsősorban az XML adat központú használatával foglalkozunk. 13
XML felépítése (folyt.) Adatközpont zpontú XML Erősen struktúrált adatok tárolására használják (adatbázis szöveges adatai, tranzakciók...) Általában program állítja elő XML platform független Előny: különböző OS-ek közti kommunikációnak nincs akadálya Intranet illetve Internet környezetben 14
Egyszerű XML példa p I. 15 <?xml version="1.0" encoding="utf-8"?> <sending sequence="2"> <sender id="4"> <host name="localhost" /> <senttime timezone="gmt+0"> 1063753377 </senttime> <reponse need="no" /> </sender>
Egyszerű XML példa p II. 16 <messages count="3"> <message type="plain"> Ramrod </message> <message type="plain"> Highway Patrol </message> <message type="command"> bye </message> </messages> </sending> <!-- komment -->
XML dokumentum Bevezető elem I. Minden XML dokumentum egy bevezető elemmel indul Megadja, hogy XML dokumentumról van szó Megadhat kiegészítéseket, metaadatokat a dokumentumra vonatkozóan A feldolgozó programnak szóló utasítások megadási formája: <? művelet?> ahol művelet a feldolgozó program által ismert utasítás 17
XML dokumentum (folyt.) Bevezető elem II. Leggyakoribb eset: megadja az XML verzióját, és a karakter kódolást <?xml version="1.0"?> <?xml version="1.0" encoding="utf-8"?> 18 A bevezető elem elhagyható. Ha nincs akkor a program feltételezi, hogy XML 1.0-ról van szó, UTF-8 karakter kódolással
XML dokumentum (folyt.) Elemek I. Az XML dokumentum egységei az elemek. Minden elemnek van nyitó és záró tag-je, és lehet(nek) attribútumai és tartalma 19 <elemnév attribútumok> tartalom </elemnév>
XML dokumentum (folyt.) Elemek II. Elemek II. Az elemnév [a-z A-Z _ - :] elemekből állhat, kivéve az xml karaktersorozatot bármely betűállásban, mert az fentartott név! Kis és nagy betűk között különbséget tesz! tartalom lehet: további elem szöveg a kettő együtt Tartalom nélküli elem: <elemnév attribútumok /> 20
XML dokumentum (folyt.) Attribútumok tumok Megadásuk az elem nyitó tag-jében Egy attribútumhoz csak egy érték tartozhat A nevekre ugyanazok a megadási szabályok vonatkoznak, mint az elemnevekre Ajánlás: Hasonló nevek kerülése (olvashatóságot rontja) Speciális attribútum család: xml:-tal kezdődik <document type= description xml:lang= en >... </document> 21
XML dokumentum (folyt.) Bevezető Gyökér elem elem Az egyszerű példa értelmezése <?xml version="1.0" encoding="utf-8"?> <sending sequence="2"> <sender id="4"> Elemnév Attributum Attributum név értéke <host name="localhost" /> Tartalmazott <senttime timezone="gmt+0"> elem 1063753377 Tartalom </senttime>... </sender> <reponse need="no" /> Záró tag 22 Üres elem
XML dokumentum (folyt.) Jelentés Egy XML dokumentum tartalma egy hierachikus struktúrát ír le - fával ábrázolható A tartalmazott elem a tartalmazó alatt helyezkedik el Amelyik elemet nem tartalmaz más elem, az a gyökér Egy dokumentumnak csak egy gyökere lehet (egy fával ábrázolható) 23
<sending sequence="2"> <sender id="4"> XML dokumentum (folyt.) <host name="localhost"/> Az egyszerű példa szerkezete <senttime timezone="gmt+0"> </senttime> 1063753377 <reponse need="no" /> </sender> elem atribútum tum 24 sending érték sequence sender 2 id host senttime response 4 name timezone 1063753377 need "localhost" "GMT+0" "no"
<messages count="3"> <message type="plain"> Ramrod </message> <message type="plain"> Highway Patrol </message> <message type="command"> bye </message> </messages> </sending> XML dokumentum (folyt.) Az egyszerű példa szerkezete (folyt.) sending 25 sequence sender messages 2 count message message message 3 type Ramrod type Highway Patrol type bye "plain" "plain" "command"
XML dokumentum (folyt.) Well Formed I. Egy XML dokumentumnak JÓL FORMÁLTNAK KELL LENNIE Egy csakis egy gyökér eleme lehet egy dokumentumnak Minden elemet le kell zárni, nem lehet lezáratlan elem Szigorúbb szabályok, mint a HTML-nél 26
HTML: <table> XML dokumentum (folyt.) Well Formed II. <tr><td>első cella<td>második cella <tr><td>már a második sor </table> XML: <table> <tr><td>első cella</td><td>második cella</td> </tr> <tr><td>már a második sor</td></tr> </table> 27
XML dokumentum (folyt.) Well Formed III. 28 Nincs lehetőség "átlapolásra" (overlapping) HTML: <i>helló <b>világ</i></b> XML: <i>helló <b>világ</b></i>
XML dokumentum (folyt.) Well Formed IV. Az attribútum értékeit kötelezően "" között kell megadni. HTML: <form action=get>... </form> XML: <form action="get">... </form> 29
XML dokumentum (folyt.) Well Formed V. A szöveg mezőben szereplő <, >, " karaktereket minden esetben kvótázni kell <, >, és " formában kell őket szerepeltetni (előre definiált "entitások") Megjegyzés formátuma: <!-- tetszőleges szöveg --!> Jól meghatározott szabályok szerint az XML szöveg tartalmazhat jelentés nélküli ("whitespace") karaktereket. 30
XML dokumentum (folyt.) Well Formed VI. Bizonyos karakterek (mint például a < >) speciális jelentéssel bírnak, így csak arra a célra használhatók. Miért is fontos a jól formáltság? Egyszerű: a feldolgozást (melyet program(ok) végez(nek)) segíti. Egy feldolgozó programnak joga van előfeldogozásként elhagyni a "whitespace" karaktereket. 31
XML dokumentum (folyt.) Well Formed VII. A feldolgozás során érintetlenül hagyandó karaktersorozatot CDATA blokkba zárhatjuk: <!CDATA[ Tetszőleges karaktersorozat ]]> Egy CDATA blokk tehát fenntartott és whitespace karaktereket is tartalmazhat. 32
XML dokumentum (folyt.) Well Formed VIII. Összefoglalva a jól formáltság szabályait: a névalkotás és az elemképzés szabályainak betartása minden elemet le kell zárni minden attribútum értéknek "" karakterek között kell állnia egy elem egy másik elemet csak teljes egészében tartalmazhat pontosan egy gyökér elemnek kell lennie a tartalomban és az attribútum értékben a fenntartott karakterek helyettesítése az előre definiált entitásokkal. 33
XML dokumentum (folyt.) Well Formed IX. Szabályos megjegyzések Szabályos CDATA blokkok Néhány további, itt nem említett alkotórész (pl, dokumentum típus definíció) szabályainak betartása. 34
Névterek 35 XML dokumentumok hivatkozhatnak egymásra Ez névütközésekhez vezethet (elem nevek, attribútum nevek). Megoldás: névterek használata. A nevek előtt (egy kettősponttal elválasztva) egy prefix állhat. Prefix nélküli név az alapértelmezett ("név nélküli") névtérhez tartozik.
Névterek (folyt.) 36 A névteret abban a legkülső elemben kell definiálni, amely használni akarja. A névtér definíció a névtér nevéhez (ami prefixként azonosítja a névterek) egy egyedi azonosítót rendel, így a világ bármely XML dokumentuma használhatja névütközés nélkül. Az egyedi azonosító a szabvány szerint egy URI Egy elemben az alapértelmezett névtér is definiálható.
Névterek (folyt.) 37 Névtér definiálása: <névtérnév: elemnév xmlns:="uri"> elem további tartalma </névtérnév:elemnév> Alapértelmezés szerinti névtér definiálása esetén a "névtérnév" a fenti konstrukcióból elmarad. Egy elemhez több névtér is definiálható. (Ez nem mindig szerencsés!)
Ami még m érezhetően en hiányzik 38 Egy jól formált XML dokumentum még nem feltétlenül tartalmaz "értelmes" adatokat. Pl.: <lakcim> <varos>miskolc</varos> <utca>kossuth Lajos</utca> <utca>arany János</utca> <hazszám>hehehe</hazszám> </lakcim>
Ami még m érezhetően en hiányzik (folyt.) 39 Dokumentum szerkezetének, elemei lehetséges értékeinek definiálása DTD XML sémák Dokumentum értelmezése Adatközpontú XML esetén ez általában program Segítség kell az XML dokumentum feldolgozásához
Linkek 40 XML 1.0 Specifikáció http://www.w3c.org/tr/rec-xml Sun XML oldala http://java.sun.com/xml W3C XML oldala http://www.w3c.org/xml Apache XML projekt oldala Http://xml.apache.org
41