Az XML alapjai dr. Kov´acs L´aszl´o Az XML kialakul´ asa Napjaink egyik kulcsszava az inform´aci´o kezel´es, az adatkezel´es ter¨ ulet´en az XML. Az XML bet˝ usz´o az angol ’eXtensible Markup Language’, azaz kiterjeszthet˝o jel¨ol˝o nyelv elnevez´esb˝ol sz´armazik. Ma m´ar szinte elk´epzelhetetlen, hogy egy u ´j fejleszt´esben ne kapna valahol szerepet az XML: haszn´alhatjuk konfigur´aci´os ´allom´any le´ır´as´ara, alapadatok t´arol´as´ara, eredm´enyek megjelen´ıt´es´ere vagy ´eppen adatcsere nyelvk´ent. Az XML forradalmi el˝oret¨or´ese ellen´ere az XML megit´el´ese nem egys´eges. Vannak akik l´enyegi ´es u ´j elemnek tekintik, m´asok ink´abb m´ar kor´abban megjelent adatle´ır´o modellek lebut´ıt´as´at l´atj´ak benne. Egyesek u ´j lehet˝os´egek megjelen´es´et rem´elik t˝ole, m´ıg m´asok csak u ˝zleti fog´ask´ent ´ert´ekelik. Ami viszont tagadhatatlan, hogy az XML egy sor feldolgoz´o technol´ogia ´es szabv´any megsz¨ ulet´es´et hozta mag´aval, lehet˝os´eget adva az egys´eges adatt´arol´as ´es feldolgoz´as megteremt´es´ere. Az XML dokumentumr´ol bizony´ara mindenki tud m´ar legal´abb annyit, hogy sz¨oveges form´atumban adjuk meg a tartalmat ´es a sz¨ovegben jel¨ol˝o elemek vannak, melyek a hat´arolt r´esz valamilyen tulajdons´ag´ara utalnak. A jel¨ol˝o elemekn´el tal´alhat´o nyit´o ´es z´ar´o tag, amelyek a kapcsol´od´o sz¨ovegr´esz elej´et ´es v´eg´et adj´ak meg. A jel¨ol˝o elemtagokat a ’<’ ´es ’>’ rel´aci´o jelek hat´arolj´ak. A jel¨ol¨o elemek egym´asba ´agyazhat´ok. P´eld´aul az al´abbi kis minta h´arom elemet mutat be, melyek k¨oz¨ ul a ’di´ak’ elem mag´aba foglalja a ’n´ev’ ´es ’oszt´aly’ elemeket:
P´ eter 4B Az XML legfontosabb c´elja, hogy egy plattform-f¨ uggetlen, alkalmaz´asf¨ uggetlen adatle´ır´o form´atmot adjon, mely alkalmas a web-re ´ep¨ ul˝o nagy t¨omeg˝ u adat´atvitel megval´os´ıt´as´ara ´es a kapott adatok rugalmas, hat´ekony feldogoz´as´ara. Emiatt az XML t¨obb mint adatt´arol´asi szabv´any, hozz´a tartoznak a szok´asos kezel´est megval´os´ıt´o feldolgoz´asi szabv´anyok is. 1
Az XML megismer´ese ter¨ ulet´en el˝obb r¨oviden ´attekintj¨ uk a kialakul´as´anak t¨ort´enet´et, majd a legfontosabb tulajdons´agait vessz¨ uk sorra. A XML nyelv els˝o f˝o hivatalos dokumentuma a 1998-ban megjelent XML 1.0 W3C aj´anl´as. Ebben az XML-t, mint az SGML nyelv r´eszhalmaz´at, annak speci´alis eset´et kezelik. Az SGML bet˝ usz´o a ’Standard Generalized Markup Language’ elnevez´esb˝ol ered. Az SGML is egy jel¨ol˝o nyelv, melynek ISO szabv´anya 1986-ban jelent meg. Az SGML egy ´altal´anosabb, nagyobb szabads´agot ad´o nyelv, melynek f˝o h´attr´anyak´ent bonyolults´ag´at ´es az implement´aci´os neh´ezs´eg´et szokt´ak felhozni. A jel¨ol˝o nyelvek igen kor´an, m´ar az ¨otvenes-hatvanas ´evekben megjelentek. F˝o feladatuk a dokumentumok egyes elemein´el a megjelen´esi vagy kezel´esi tulajdons´agok le´ır´asa. Keztedben ezek a jel¨ol˝o elemek specifikusak jel¨ol˝o elemek voltak, azaz tartalmuk ´es form´atumuk egy megadott alkalmaz´ashoz kapcsol´odott. Az 1960-as ´evek v´eg´en jelent meg az ´altal´anos le´ır´o elemek haszn´alat´anak ¨otlete. Ezen id˝oszakb´ol sz´armazik t¨obbek k¨oz¨ott Tunnicliffe tanulm´anya (1967) [?], melynek f˝o mondanival´oja, hogy ´erdemes a dokumentumon bel¨ ul k¨ ul¨on v´alasztani a tartalom ´es form´atum le´ır´o elemeket. Az ¨otletek els˝o jelent˝os gyakorlati eredm´enye az 1969-ben megjelentetett GML nyelv (Generalized Markup Language) [?]. A GML nyelv tartalmazott form´atum le´ır´o, szerkeszt´esi ´es szereple´ır´o elemeket. A modell t¨obbek k¨oz¨ott azt is lehet˝ov´e tette, hogy az egyes dokumentumokat k¨onnyen egym´asba ´agyazhass´ak. A GML nyelv tov´abbfejleszt´esek´ent, mely munka m´ar az ANSI kereteiben folyt le, kib˝ov¨ ult a funkci´ok k¨ore, m´odos´ ult a szintatktika. Az eredm´eny¨ ul kapott nyelvet SGML-nek nevezt´ek el, melynek els˝o hivatalos szabbv´anya 1983-ban jelent meg [?]. Az SGML nyelv legfontosabb jellemz˝oi: • modul´aris dokumentum fel´ep´ıt´es, melyben a dokumentumok egym´asra hivatkozhatnak • a dokumentum szerkezet´et, s´em´aj´at egy dokumentum t´ıpus le´ır´asassal,a DTD (Document Type Definition) r´esszel kell megadni • jel¨ol˝o elemekkel lehet megadni, kijel¨olni a dokumentum k¨ ul¨onb¨oz˝o szerkezeti egys´egeit Az SGML-ben haszn´alt szintaktika k¨osz¨on vissza az ´altalunk t´argyaland´o XML szintaktik´aban is. P´eld´aul az al´abbi minta egy ´erv´enyes SGML dokumentumot ad meg:
2
SQL SELECT szintaktik´ aja <para>A SELEVT parancs c´ elja a rel´ aci´ okban t´ arolt adatok hat´ ekony lek´ erdez´ ese... <para>A GROUP BY elemmel a csoportk´ epz´ esre utalunk... Az SGML-DTD-ben defini´alt s´ema le´ır´as is nagyban hasonl´ıt a k´es˝obbiekben bemutatand´o XML-DTD-re. Itt is el´eg egy r¨ovid minta a hasonl´os´ag ´erz´ekeltet´es´ere:
chapter
(chptitle, (para | heading)+) >
A nagyfok´ u hasonl´os´ag ellen´ere az SGML ´es a k´es˝obb kialakult XML nyelvek nem teljesen azonosak. Az XML nyelv sz´amos olyan megk¨ot´essel b´ır, amely az SGML-n´el nem jelent korl´atoz´ast [?]. ´Igy p´eld´aul az XML-ben nem szerepelhetnek olyan speci´alis szerekezeti inform´aci´ot megad´o elemek, mint SUBDOC, LINK, RANK. Emelett sz´amos olyan elem van az SGMLben, amit az XML-ben nem vagy csak korl´atozottan lehet haszn´alni: az XML nem engedi meg p´eld´aul a p´ar n´elk¨ uli nyit´o elemtagot, ami viszont az SGML-ben ´erv´enyes elem. Az XML megjelen´es´eben f˝o szerepet j´atszott a hat´ekonys´ag n¨ovel´ese ´es egyesek szeritn az SGML-t˝ol val´o l´atv´anyos elk¨ ul¨on¨ ul´es. Az 1986-os megjelen´ese ´ota az XML folyamatosan fejl˝odik, a jegyzet ´ır´asakor a legut´ols´o aj´anl´as a 2001-ben megjelent v´altozat volt [?]. Az XML legnagyobb el˝onye az egyszer˝ ubb, hat´ekonyabb szerkezet mellett a XML-t kis´er˝o, az XML dokumentumot feldolgoz´o szabv´anyok had´aban rejlik. Az alap XML szabv´any mellett sz´amtalan, az XML valamely szempont szerinti feldolgoz´as´at seg´ıt˝o szabv´any jelent m´ar meg, k¨oz¨ol¨ uk csak
XML szerkezete Az XML nyelv megtervez´esekor a f˝o c´el egy nyelv megalkot´asa volt, amely meg˝orzi az SGML nyelv rugalmass´ag´at, de elegend˝oen egyszer˝ u a hat´ekony implement´aci´o megval´os´ıt´as´ahoz. A nyelvnek plattform-f¨ uggetlennek kell lennie, hogy felhaszn´alhat´o legyen, mint egy ´altal´anos adatcsere form´atum. A W3C tervez˝o bizotts´ag a fejleszt´esi eleveket az al´abbi pontokba foglalta ¨ossze: • hordohat´os´ag ´es plattform-f¨ uggetlens´eg; 3
• hat´ekony alkalmazhat´os´ag az Internet-en; • t´amogassa az alkalmaz´asok mind sz´elesebb k¨or´et; • r´eszleges kompat´ıbilit´as az SGML szabv´annyal; • az XML nyelv legyen egyszer˝ u szerkezet˝ u; • minn´el kevesebb opcion´alis elemet tartalmazzon; • k¨onnyen lehessen programozni XML feldolgoz´o programokat; • XML dokumentum legyen a felhaszn´al´o ´altal is ´erthet˝o, olvashat´o form´atum´ u; • legyenek eszk¨oz¨ok a strukt´ ura gyors megtervez´es´ere; • az XML szabv´any legyen tiszta, a helyess´eg form´alisan is igazolhat´o legyen; • legyenek eszk¨oz¨ok az XML dokumentumok hat´ekony elk´esz´ıt´es´ere; • nem fontos a t¨om¨ors´eg, r¨ovids´eg, fontosabb az olvashat´os´ag biztos´ıt´asa. Az XML form´atum inform´alis megk¨ozel´ıt´es´evel kezdve, els˝ok´ent ´attekintj¨ uk a nyelv szintaktikai elemeit. A le´ır´as sor´an sorba vessz¨ uk az egyes l´enyegi tulajdons´agokat, melyek egy¨ uttesen hat´arozz´ak meg a helyesen form´alt XML dokumentum krit´eriumait. A form´atum krit´erumokr´ol b˝ovebben olvashatunk t¨obbek k¨oz¨ott az al´abbi m˝ uvekben: [?], [?]. Helyesen form´ alt XML dokumentum krit´ eriumai • Az XML dokumentum sz¨oveges ´allom´anyban t´arolt, melynek szok´asos kiterjeszt´ese az ’xml’. • Az XML-ben a jel¨ol˝o elemek haszn´alatosak a le´ır´o inform´aci´ok, metaadatok megad´as´ara. • Az elemek tagjait a ’<’ ´es ’>’ karakterek hat´arolj´ak. Tartalom szerint az al´abbi elemt´ıpusok ´ertelmezettek: – tartalom elem: a felhaszn´al´o ´altal megadott tartalom tulajdons´agait ´ırja le, a feldolgoz´o programnak sz´ol´o inform´aci´okat tartalmaz – deklar´aci´os elem: a feldolgoz´onak sz´ol´o instrukci´okat tartalmaz – megjegyz´es elem: az olvas´onak, a programoz´onak sz´ol´o inform´aci´okat tartamaz 4
A tartalom elemek lehetnek egytag´ uak ´es k´ettag´ uak. A m´asik k´et elemt´ıpus egytag´ u. • A k´ettag´ u tartalom elem szerkezete: <elemn´ ev jellemz¨ ok_list´ aja> tartalom Az elemmel megadott tulajdons´ag a k¨ozrefogott tartalomra vonatkozik. Minden nyit´o elemtaghoz l´eteznie kell egy z´ar´o elemtagnak. • Az egytag´ u tartalom elem szerkezete: <elemn´ ev jellemz¨ ok_list´ aja/> A megadott tulajdons´ag nem k¨othet˝o konkr´et sz¨ovegtartalomhoz. Az elem l´etez´ese utal arra, hogy a megadott helyre valamilyen form´atum vagy tartalom objektumot be kell sz´ urni. P´eld´aul egy soremel´es vagy lapdob´as szimb´olumot is egy egytag´ u elemmel lehet beilleszteni a dokumentumba. Az egytag´ u elemet u ¨res elemnek is nevezik. • A tartalom elemek neve tetsz˝oleges sz´o lehet. Teh´at a n´ev csak egy sz´ob´ol ´allhat, de a sz´oalakok halmaza nem el˝ore defini´alt. Ez a tulajdons´ag l´enyegesen elt´er a m´ar ismert HTML form´atumt´ol, hiszen ott el˝oredefini´alt elemneveket lehet csak haszn´alni. Az XML c´elja, hogy az elem ne csak r¨ogz´ıtett form´atum tulajdons´agok le´ır´as´ara szolg´aljon, hanem tetsz˝oleges tartalom megjel¨ol´est is megval´os´ıthassuk ´altala. Ekkor az elemn´ev a tartalom szemantikai, jelent´es oldal´at adja meg. Ha p´eld´aul a tartalom a 23-as sz´am, akkor az ’´eletkor’ elemn´ev jelzi, hogy a sz´am egy ´eletkor ´ert´eket takar: <´ eletkor> 23 ´ eletkor> Az XML elemnevek kisbet˝ u/nagybet˝ u ´erz´ekenyek, u ˝gyelni kell teh´at arra, hogy pontosan ugyanaza a sz´o szerepeljen a nyit´o ´es z´ar´o tagn´al. • A deklar´aci´os elem szerkezete: Az XML dokumentum elej´an ´all´o ’xml’ elemnev˝ u deklar´aci´o mellett a dokumentum egyedi deklar´aci´os elemeket is tartalmazhat. 5
• A megjegyz´es elem szerkezete: A szabv´any alak, amely biztos´ıtja, hogy az elem nem egy speci´alis feldolgoz´o programnak sz´ol, a k¨ovetkez˝o alak´ u: • A jellemz˝ok az elem valamely tulajdons´ag´at, viselked´esi param´eter´et adj´ak meg. Egy jellemz˝o megad´asa egy p´arossal t¨ort´enik, a p´arosban a jellemz˝o nev´et ´es az ´ert´ek´et t´ars´ıtjuk ¨ossze. A megad´as form´atuma: jellemz¨ o_neve = "´ ert´ ek" A jellemz˝oh¨oz kapcsolt ´ert´eket teh´at mind´ıg id´ez˝ojelek k¨oz¨ott kell szerepeltetni. A lista tetsz˝oleges darabsz´am´ u p´arosokat tartalmaz, azaz lehet u ¨res is. • Az XML dokumentum els˝o sor´anak egy XML deklar´aci´os elemet kell tartalmaznia: ahol xx egy verzi´osz´amot ad meg. Ezzel az elemmel jelezz¨ uk az XML feldolgoz´onak, hogy a forr´asf´ajl szintaktik´aja mely XML szabv´any verzi´onak felel meg. A jelenleg haszn´alatos szabv´any az 1.0: • Az XML dokumentumban a tartalom elemek egym´asba ´agyazhat´ok: egy k´ettag´ u tartalom elem mag´aba foglalhat egy u ´jabb tartalom elemet:
... A tartalmazott elemet gyerek elemnek, a tartalmaz´ot sz¨ ul˝o elemnek nevezz¨ uk. A sz¨ ul˝o ´es annak minden sz¨ ul˝oje az elem ˝oseinek halmaz´at alkotja. 6
• Minden elemnek csak egy sz¨ ul˝oje lehet, nem lehet egy elem k´et k¨ ul¨onb¨oz˝o szl˝oben is gyermek. Ezen megk¨ot´esb˝ol ered˝oen a tartalom elemek egy hierarchi´at alkotnak. • A dokumentum gy¨ok´er eleme az a tartalom elem, amelyhez nem l´etezik sz¨ ul˝o elem. Az XML dokumentum csak egy gy¨ok´er elemet tartalmazhat. Az al´abbi p´elda egy hosszabb XML mint´at ad meg:
XML alapok <ar pnem="Ft"> 5600 Adatkezel´ esi alapok <ev>2003
• A XML dokumentumban bizonyos karakterek szerar´ator szerepet t¨oltenek be, Ilyen karakter p´eld´aul a ’<’ jel. Ez a karakter ebben az alakban teh´at nem fordulhat el˝o az elemnevekben, a norm´al tartalom le´ır´o sz¨ovegben. A foglalt karakterek halmaza az al´abbi karakterekre terjed ki: – < – > – & –
0
– ” • Az XML dokumentumba beilleszthet˝o olyan tetsz˝oleges sz¨ovegr´esz, melyet a XML feldolgoz´o teljes eg´esz´eben tartalom sz¨ovegnek tekint, nem keres benne szepar´ator elemeket. A sz¨ovegr´esz emiatt tartalmazhat foglalt karatereket is. A sz¨ovegr´esz megad´asa a CDATA elemmel t¨ort´enik: 7
A tartalmazott sz¨ovegre vonatoz´o egyed¨ uli megk¨ot´es, hogy ne forduljon el˝o benne a ’]] >’ jelsorozat. • A foglalt karakterek tartalom sz¨ovegbe val´o beillszet´es´ere egyed-szimb´olumokat is lehet haszn´alni. A szimb´olumot egy &kod; form´atumban lehet megadni, ahol a k´od ´ert´eke lehet sz´amk´od vagy sz¨oveg. A foglalt karakterekhez tartoz´o szimb´olumok: – < : < – > : > – & : & –
0
: '
– ” : " A sz´amk´oddal (Unicode) azonos´ıtott karakterek eset´en a szimb´olum megad´asa a k¨ovekez˝o form´atumban t¨ort´enik: nnnn; ahol, ’nnnn’ az ig´enyelt karakterhez tartoz´o Unicode ´ert´ek. Az XML szabv´any lehet˝ov´e teszi, hogy defin´ıci´os ´allom´anyokban egyedi szimb´olum azonos´ıt´okat is defini´alhassunk. A k¨ovetkez˝o p´elda a numerikus ´es sz¨oveges szimb´olumok haszn´alat´at hasonl´ıtja ¨ossze. Mindk´et elemn´el ugyanaz a tartalom szerepel, csak a foglalt karakterek k´odol´as´aban van k¨ ul¨onbs´eg a k´et r´esz k¨oz¨ott.
main() { if (this->setA() < 0 && x < X) { strcpy (valasz,"Alacsony ertek"); } }
main() { if (this->setA() < 0 && x < X) { strcpy (valasz,"Alacsony ertek"); } } ]]> • Az XML szerkezet megengedi a rekurzi´ot, azaz egy adott tartalom elemnek lehetnek vele megegyez˝o nev˝ u gyerek elemei. Egy elemnek ¨onmag´aba val´o be´agyaz´asa tetsz˝oleges m´elys´eg˝ u lehet. • Az XML dokumentumot normaliz´altnak nevezz¨ uk, ha minden sz´ok¨ozekvivalens karaktersorozat csak egy karakter hossz´ u. Az helyesen form´alt XML dokumentumokkal val´o ismerked´eshez vegy¨ unk n´eh´any egyszer˝ u mintap´eld´at. Az al´abbi XML dokumentumban k´et di´ak adata szerepel. A bemutatott XML dokumentum azonban nem helyesen form´at, mivel k´et l´enyeges szintaktikai hib´at is tartalmaznak: • nem lehet k´et gy¨ok´er elem a dokumentunban • az elemjellemz˝o ´ert´ek´et id´ez˝ojelek k¨oz¨ott kell megadni
Peter <jegy targy=angol> 3 Zolir <jegy n´ emet=’angol’> 3 A kijav´ıtott XML dokumentum szerkezete:
Peter 9
<jegy targy="angol"> 3 Zolir <jegy n´ emet=’angol’> 3
Mivel az XML rugalmasan jel¨olhet˝ok ki az elemnevek, tetsz˝oleges t´emak¨or adatai ´ırhat´ok le vele. Az elemn´ev megad´asa tetsz˝oleges, de nem v´eletlenszer˝ u. A programoz´o c´elja., hogy az elemn´even kereszt¨ ul kieg´esz´ıt˝o inform´aci´ot adjon a t´enyleges alapaadat mell´e. Az el˝oz˝o p´eld´ankban p´eld´aul a ’jegy’ nevet adtuk, ezzel utalva arra, hogy a befoglalt 3-as ´ert´ek egy jegyet tartalmaz. Az elemben megadott adatok teh´at a t´arolt alapadatokra vonatkoz´o le´ır´o adatokat, u ´gynevezett metaadatokat tartalmaz. A metaadat kifejez´es ´altal´anos jelent´ese: adat valamely m´as adatokr´ol.
XML n´ evterek Az XML dokuemntumban felhaszn´alt elemnevek az alapadatok jelent´es´ere utalnak. Mivel rendszerint a term´eszetes nyelv szavait haszn´alj´ak fel az elemnevek megad´as´an´al, r¨ogt¨on felmer¨ ul a t¨obb´ertelm˝ us´eg probl´em´aja. Hiszen egy fogalom, mint p´eld´aul a ’jegy’, nagyon sok ´ertelemben haszn´alhat´o: ´erdemjegy, utaz´asi jegy, jellemz˝o. Emiatt egy adott elemn´ev k¨ ul¨onb¨oz˝o alkalmaz´asi k¨ogyezetben, kontexusban, m´as ´es m´as szemantikai jelent´essel b´ırhat. Sajnos ez az egyes alkalmaz´asok ´altal´anos haszn´alat´at jelent˝osen korl´atozza, hiszen ha egy alkalmaz´as megadott elemnevekre t´amaszkodik, megadott elemneveket ig´enyel, akkor a feldolgozott XML dokumentumokban s´er¨ ul a tetsz˝oleges n´evad´as felt´etele. Ez ekkor azzal a probl´em´aval is j´ar, hogy egy adott id˝opontban k´esz¨ ult dokumentumre nem garanat´alt, hogy azt egy k´es˝obb kifejlesztend˝o alkalmaz´as is elfogadja, hiszen el˝ofordulhat, hogy egy olyan elemnevet haszn´al, amit a k´es˝obbi feldolgoz´o is lefoglalt mag´anak. Term´eszetesen ekkor egym´ast´ol elt´er˝o ´ertelmet nyer a k´etf´ele elemn´ev, azaz honon´ıma l´ep fel. A XML dokumentumban el˝ofordul´o nevek egy´ertelm˝ us´ege t¨obb szempontb´ol is fontos lehet. Az egy´ertelm˝ us´eg legfontosabb el˝onyei: • Egy XML feldolgoz´o program ekkor form´alisan is meg tudja megk¨ ul¨onb¨oztetni a neki sz´ol´o elemeket a honon´ıma elemekt˝ol.
10
• A felhaszn´al´o t´ars´ıtani tudja az elemhez a m¨og´e tartoz´o szemantikai ismeretekkel Az ilyen n´ev¨ utk¨oz´esek elker¨ ul´ese ´erdek´eben lehet˝ov´e teszik az XML szabv´any keret´eben, hogy pontos´ıtsuk az elmenevek jelent´es´et. A n´evpontos´ıt´as elve, hogy az elemnevet egy t´emak¨or kijel˝o n´evvel lehet ell´atni. A sz´o jelent´ese teh´at mind´ıg csak t´emak¨or¨on bel¨ ul lesz egy´ertelm˝ u. Az XML n´evt´er egy t´emater¨ uletet azonos´ıt. Az elemeket t´ars´ıtani lehet a n´evterekkel, minden elemhez egy n´evt´er rendelhet˝o. A n´evt´er neve maga is tetsz˝oleges n´ev lehet. L´athat´o azonban, hogy ez esetben a n´ev¨ utk¨oz´esi probl´em´at nem oldottuk meg, csak ´attoltuk egy m´asik szintre. Hogy ne kelljen magasabb szint˝ u n´evterek l´ancolat´at l´etrehozni, a XML gyakorlatban a n´evterek elnevez´es´en´el az egyedis´egere t¨orekednek. Hogy min´el kisebb es´elye legyen az u ¨tk¨oz´esnek, a n´evt´er megad´asakor URL form´atum´ u azonos´ıt´ot szoktak haszn´alni, melyek szerver r´esze megegyezik a fejleszt˝o saj´at szerver´enek el´er´esi nev´evel. A szabv´any ett˝ol t´agabb teret enged, az URI form´atumot ´ırja el˝o. A URL ´allom´any specifikus r´esze rendszerint a feldolgoz´o program t´argyk¨or´ere utal. A n´evt´erhez hozz´arendelt URL ´ert´eknek nem kell l´etez˝o objektumra mutatnia. N´eh´any k¨ozismert n´evt´er azonos´ıt´o: • http://www.w3.org/2000/10/XMLSchema : W3C XMLSchema n´evtere • urn:schemas-microsoft-com:xml-data : az MS XML s´ema n´evtere • http://www.w3.org/1999/XSL/Transform : az XSL feldolgoz´o n´evtere • http://www.w3.org/1999/xlink : az XLink feldolgoz´o n´evtere Mint a p´eld´ab´ol is l´athat´o, hogy az URL form´atum´ u n´evt´er azonos´ıt´ok igen tereb´elyesek az egyedis´eg biztos´ıt´asa v´egett. Ha ezen azonos´ıt´okat adn´ank meg az egyes tartalom elemekn´el, akkor bizony igencsak elnyomn´a a t¨obbi adatot a n´evt´er megad´asa. Hogy ne uralkodjon el ennyire a n´evt´er kijel¨ol´es, az XML szabv´any lehet˝ov´e teszi a n´evterekhez egy lok´alis aliasn´ev, r¨ovid´ıt´es hozz´arendel´es´et. Ezt¨ovet˝oen elegend˝o csak a r¨ovidebb n´evt´eralias haszn´alata. A szabv´any emelett m´eg azt is lehet˝ov´e teszi, hogy alap´ertelmez´esi n´everet hozzunk l´etre, amikor nem kell m´eg a n´evt´eraliast sem megadni. A n´evterek megad´asa elemjellemz˝on kereszt¨ ul t¨ort´enik. A vonatkoz´o elemjellemz˝o azonos´ıt´o neve: ’xmlns’. A n´evt´er megad´as form´atuma: <elemn´ ev ... xmlns:alias = URL ...> ahol a megadott alias haszn´alhat´o a tov´abbiakban a kapcsol´od´o URL helyet. Ha az ’:alias’ r´esz elmarad, akkor a megadott URL lesz az elemek alap´ertelmez´esi n´evtere. Az alap´ertelemz´esi n´evt´er megad´as´anak szintaktik´aja: 11
<elemn´ ev ... xmlns = URL ...> Egy elemn´el t¨obb n´evt´er kijel¨ol´es is ´elhet. A n´evt´er hozz´arendel´ese egy tartalomelemhez a
form´atumban t¨ort´enik. Ha k´ettag´ u az elem, akkor a z´ar´o tagn´al is szerepeltetni kell a nyit´o tagban megadott alias nevet. Az alap´ertelemz´esi n´evt´er l´etez´ese eset´en a norm´al <elemn´ ev ...> elemmegad´as az elemet az alap´ertelmez´esi n´evt´erhez rendeli. Az alap´ertelmez´esi n´evt´er haszn´alat´anak egyik saj´atoss´aga, hogy az alap´ertelemz´esi n´evt´er csak az elemekre vonatkozik, a kapcsol´od´o elemjellem˝okre m´ar nem. Az aliasn´ev elemjellemz˝oh¨oz t¨ort´en˝o rendel´esekor a elemjellemz˝o neve el˝ott kell megadni az alias azonos´ıt´ot: <elemn´ ev alias:jellemzo_nev=’ertek’ ...> Az aliasn´ev ´erv´enyess´egi k¨ore azon elemre ´es annak befoglalt elemeire terjed ki, amelyben defini´alt´ak. Egy bels˝o elemben a k´ıv¨ ul ´ertelmezett aliasn´ev fel¨ ul´ırhat´o egy u ´j ´ertelmez´essel. I11233 UZI234 olg45 OPUZT7 TF7671 JII781 z78hz LOP86J 12
A p´eld´aban n´egy n´evt´er megad´as is szerepel. A n´egy n´evt´erhez viszont csak h´arom alias tartozik, mivel a ’vir’ nev˝ u alias fel¨ ul´ır´asra ker¨ ul az elemen bel¨ ul. A n´egy n´evt´erb˝ol egy, a ’http://uni-miskolc.hu/root’ egy alap´ertelmez´esi n´evt´er. Ehhez egyed¨ ul az ’uid’ elem tartozik. Emellet a ’konyv’ elem ’id’ elemjellemz˝oje is ide tartozik, hiszen egyr´eszt el˝otte nincs alias kijel¨ol´es, m´asr´eszt egy alap´ertelemz´esi n´evt´er hat´ask¨or´eben foglal helyet. A ’http://iit.uni-miskolc.hu/kovacs/konyvtar’ n´evt´erhez a ’ktar’ alias rendel˝odik, s ebbe a n´evt´erbe tartozik a ’konyvek’, ’konyv’, ’ISBN’ elem. A fel¨ uldefini´al´as miatt a ’vir’ alias m´ast jelent az ’olvaso’ ´es az ’nkod’ elemekn´el. A k¨ovetkez˝o p´eld´aban egy gy´ari feldolgoz´o program, az XSLT processzor n´evter´enek haszn´alat´at figyelhetj¨ uk meg. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="/"> <metch> Oman A p´eld´aban az XSLT feldolgoz´ohoz tartoz´o egyedi n´evt´er URI ´ert´ek: http://www.w3.org/1999/XSL/Transform A n´evt´erhez rendelt lok´alis alias ´ert´ek: xsl Ezen n´evt´erhez tartozik a ’template’ elem, m´ıg egy m´asik, default n´evt´er r´esze a ’metch’ eleme.
XML form´ alis szerkezete A XML elemekn´el ismert, hogy minden elemnek csak egyetlen sz¨ ul˝oje lehet ´es egyetlen gy¨ok´er elem l´etezik. Emiatt az XML dokumentum egy gy¨okeres f´aval modellezhet˝o [?], [?]. A k¨ovetkez˝okben a kapcsol´od´o fogalmakat tekintj¨ uk ´at. • F´anak nevezz¨ uk a k¨or´ utmentes gr´afot. Ha az egyik csom´opontot kijel¨olj¨ uk, mint gy¨okeret, akkor gy¨okeres f´ar´ol besz´elhet¨ unk. Ebben az esetben minden gy¨ok´erhez kapcsol´od´o ´elek a gy¨ok´ert˝ol elfele mutatnak, s a c´elcsom´opontokb´ol a tov´abbi ´elek is csak elfele mutathatnak. • A dokumentumban az al´abbi t´ıpus´ u csom´opontok ´elnek: 13
– dokumentum – elem – elemjellemz˝o – adat (sz¨oveg) – n´evt´er – direkt´ıva – megjegyz´es A f´aban bels˝o csom´opont csak elem ´es elemjellemz˝o t´ıpus´ u lehet. A sz¨oveg csom´opont, a n´evt´er, direkt´ıva ´es megjegyz´es csak lev´elk´ent szerepelhetnek. Minden csom´oponthoz egy cimke tartozik, ami bels˝o csom´opontokn´al megadja az azonos´ıt´o nevet, az adat csom´opontn´al pedig a sz¨ovegtartalmat. A fa gy¨ok´er eleme a dokumentum csom´opont. • Az elemjellemz˝o t´ıpus´ u csom´opontokn bel¨ ul megk¨ ul¨onb¨oztet¨ unk egy azonos´ıt´o szerepk¨or˝ u csom´opontot, • Az elemjellemz˝ot le´ır´o csom´oponthoz vagy egy adat t´ıpus´ u vagy egy hivatkoz´as t´ıpus´ u gyerek kapcsol´odhat. A hivatkoz´as t´ıpus a f´anak egy elem csom´opontj´at jel¨oli ki. • A gyermek elemek sorba rendezettek. • Az XML dokumentum az XML fa lineariz´alt alakj´anak tekinthet˝o Mintak´ent vegy¨ uk az al´abbi XML-f´at: Figure 1: Az minta XML dokumentum fa reprezent´aci´oja
Az ´abr´aban a k¨ovetkez˝o jel¨ol´esket haszn´aljuk: • dokumentum: hatsz¨og • elem: norm´al k¨or • elemjellemz˝o: kett˝os t´eglalap • adat (sz¨oveg): t´eglalap • n´evt´er: kett˝os k¨or N jel¨ol´essel 14
• direkt´ıva: kett˝os k¨or PI jel¨ol´essel • megjegyz´es: kett˝os k¨or C jel¨ol´essel A megadott XML-fa lineariz´alt alakja a k¨ovetkez˝o:
xmlns:ktar=’http://iit.uni-miskolc.hu/kovacs/konyvtar’>
Lombhull´ as Magvet} o hmv45 <ar pnem=’Ft’>2600 OPUZT7 Holdudvar Kossuth hku76 <ar pnem=’Ft’>3100 IPI7T5
Az XML, mint r´ eszben strukt´ ur´ alt adatszerkezet A sz´am´ıt´og´epes adatt´arol´asnak a kor´abbi ´evtizetedekben k´etf´ele, egym´ast´ol igen elt´er˝o v´altozata alakult ki. Az egyik ir´any az adatb´azisban t¨ort´en˝o t´arol´ashoz kapcsol´odik, melyekben minden adataelemnek egy el˝ore meghat´arozott helye van a glob´alis s´em´aban. Az adatok t´arol´as´ahoz egy r¨ogz´ıtett s´ema tartozik, melyben minden az elemi adtatok mez˝okben foglalnak helyet, s a mez˝okb˝ol rekordokat ´ep´ıtenek fel. Ekkor a t´arol´asi hely egyben kijel¨oli az adat szemantikai tartalm´at is. Ezen a adatt´arol´asi form´atumot nevezik strukt´ ur´alt adatt´arol´asnak. Tipikus k´epvisel˝oje a rel´aci´os adatmodell, melyben a t´abl´azatneve ´es a mez˝o neve egy¨ utt megadja az adatelem jelent´es´et. Az al´abbi p´elda egy rel´aci´os´em´at ´es rel´aci´o el˝ofordul´ast mutat be.
15
k´od 1 2
Dolgozok n´ev status Peti 1 Anna 3
A p´ed´ab´ol l´athat´o, hogy az 1-es ´ert´ek jelet´ese csak att´ol f¨ ugg, hogy melyik rublik´aban szerepel. A strukt´ ur´alt t´arol´as igen sz´eles k¨orben elterjedt, hiszen sz´amtalan el˝onye van, mint p´eld´aul • T¨om¨ors´eg • Egyszer˝ ubb algoritmussal feldolgozhat´o sz´am´ıt´og´eppel • Egyszer˝ us´eg • Hat´ekony feldolgoz´asi sebess´eg Viszont sz´amtalan h´atr´anyos von´asa is van, ami miatt nem tekinteht˝o ez a form´atum sem egy ´altal´anos inform´aci´o ´atad´asi m´odnak: • korl´atozott kifejez˝oer˝o • el˝ore r¨ogz´ıtett • a s´ema ismerete sz¨ uks´ege az ´ertelmez´eshez, nem ¨onhord´o szerkezet Vannak viszont olyan esetek, amikor nem lehet az ´atatand´o inform´aci´ot a rel´aci´os s´em´ahoz hasonl´oan tagolni. Erre az esetre lehet p´elda a sz¨oveges dokumentumkezel´es, amikor egy levelet vagy egy programk´odot hozunk l´etre. Ekkor minden sz´onak ´es adatelemnek csak a saj´at kontexus´aban van ´ertelme, a sz´o poz´ıci´oja nem egy´ertelm˝ uen adja meg a jelent´est. Ez a form´atum a szabadsz¨oveges t´arol´asi m´od. Ekkor a besz´elt nyelvet t´aroljuk le k¨ozvetlen¨ ul. A szabadsz¨oveges t´arol´as el˝onyei: • rugalmas • nagy kifejez˝oer˝o • ember ´altal ´ertelmezhet˝o A szbadsz¨oveges t´arol´as mellett m´as adatform´atum is l´ezetnek, ahol nem lehet r¨ogz´ıtett strukt´ ur´at felleplni, ilyen lehet a vide´o vagy hang adatok t´arol´asa is. Ezen, r¨ogz´ıtett stukt´ ura n´elk¨ uli form´atumokat szok´es egy¨ uttesen nem-strukt´ ur´alt adatoknak is nevezni.
16
Sajnos a nem-strukt´ ur´alt, els˝odlegesen a szabadsz¨oveges t´arol´as h´atr´anya, hogy nem l´etezik olyan program, amely alkalmas lenne a szabadsz¨oveg feldolgoz´as´ara ´es pontos ´ertelmez´es´ere, hiszen a besz´elt nyelvben nagyon sok a t¨obb´ertelm˝ us´eg, a kiv´etel ´es viszonylag nagy a nyelvtan bonyolults´aga is. A k´et elt´er˝o t´arol´asi m´od egym´ashoz val´o k¨ozel´ıt´es´enek, egys´eges´ıt´es´enek megval´osul´asa az XML form´atum, melyet a r´eszben-rendezett (semi-structured) szerkezetnek is neveznek. A r´eszben-rendezetts´eg elnevez´es arra utal, hogy • nincs r¨ogz´ıtett strukt´ ura • minden elem mellett viszont ott szerepelnek a kapcsol´od´o metaadatok (elemn´ev ´es elemjellemz˝ok) • tetsz˝oleges metaadatok ´ertelemz´es • helyesen form´alts´ag ad keretet a form´atumnak Az ilyen t´arol´ast az´ert szok´as ¨onle´ır´onak is nevezni, mivel a dokumentumban nemcsak az adat´ert´ekek, hanem a kapcsol´od´o metaadatok is benne vannak, egy¨ utt szerepelnek. A r´eszben rendszett strukt´ ur´akat ´altal´anoss´agban nem f´aval, hanem gr´affal lehet le´ırni. Ez azt jelenti, hogy egy elemnek t¨obb tulajdonos vagy sz¨ ul˝o eleme is lehet. Gondoljunk p´eld´aul arra az esetre, amikor egy embernek t¨obb ingatlana is lehet ´es eg yingatlannak is t¨obb tulajdonosa lehet egy ingatlan nyilv´antart´ason bel¨ ul. A t¨obb-t¨obb kapcsolat a tiszta hierarchikus modellekben csak redundanci´aval oldhat´o meg. Ezt azt jelenti, hogy ugyanazt a szem´elyt le´ır´o elemet t¨obb ingatlant le´ır´o elem alatt is megadjuk. A k´es¨obbi le´ır´o modellekben a tiszta be´agyaz´as mellett a hivatkoz´ast hozt´ak be, melyen kereszt¨ ul megsz¨ untethet˝o a redundancia. Ekkor a hivatkozott elem valamely tulajdons´ag´at adjuk meg a tartalmaz´as helyett. A r´eszben-rendezett strukt´ ur´an alapul´o t´arol´as legf˝obb gyakorlati haszna, hogy seg´ıts´eg´evel tetsz˝oleges szerkezetet le lehet ´ırni egy ´altal´anos m´odon. Ez´altal ez a form´atum nagyon alkalmas adat´atviteli szerepre. Mivel csak az internet elterjed´ese ´ota jelentkezik nagy m´eretekben a heterog´en forr´asok k¨oz¨otti adatmozgat´as ig´enye, a XML jelleg˝ u r´eszben rendezett-strukt´ ura is csak a 90-es ´evekt˝ol kezd˝od˝oen terjedt el igaz´an.
XML dokumentumok l´ etrehoz´ asa Az XML dokumentumot tetsz˝oleges sz¨ovegszerkeszt˝ovel elk´esz´ıthetj¨ uk, amely alkalmas sz¨oveg´allom´anyok el˝o´all´ıt´as´ara. Ha p´eld´aul Word szerkeszt˝ot haszn´alunk, akkor a gylj¨ unk, hogy ne ’doc’ t´ıpus´ u ´allom´anyk´ent ments¨ uk le az elk´esz¨ ult 17
Figure 2: Az oXygen XML szerkeszt˝o indul´o fel¨ ulete
forr´ast. A l´etrej¨ott XML dokumentummal kapcsolatban az egyik legels˝o teend˝onk a dokumentum helyesen form´alts´ag´anak ellen˝orz´ese. Mint kor´abban m´ar eml´ıtett¨ uk, a dokumentum helyesen form´alt, ha teljes´ıti a szerkezet le´ır´o alfejezetben felsorolt tulajdons´agokat. Szerencs´ere a legt¨obb XML megjelen´ıt˝o program elv´egzi az ellen˝orz´est. ´Igy p´eld´aul a Microsoft Internet Explorer (IE) is alkalmas az ellen˝orz´ese v´egrehajt´as´ara. Az IE programot haszn´alhatjuk teh´at az XML dokumentumok megtekint´es´ere ´es ellen˝orz´es´ere. A megjelen´ıt´es sor´an az IE t´amogatja a hierarchikus kifejt´est. Ez azt jelenti, hogy egy elemet lehet becsomagolva ´es kifejtve is megjelen´ıteni. A teljes becsomagol´askor az eg´esz f´ab´ol csak a gy¨ok´er elemet l´atjuk. Az elem mellett egy ’+’ vagy ’-’ jel ´allhat. A ’+’ jel mutat arra, hogy a becsomagolt, tartalmaz al-elemeket. A ’-’ jel arra utal, hogy nincs tov´abbi lesz´armazott. Az IE mellett l´eteznek speci´alis XML-szerkeszt˝ok is, melyek nemcsak az egyszer˝ u megtekint´est vagy form´alts´ag ellen˝orz´est t´amogatj´ak. A lehet˝os´egek gazdag t´arh´aza ´all rendelkez´esre a haszn´alatra kiv´alasztott < oXygen/ > elnevez´es˝ u XMl szerkeszt˝oben is. A term´ek honlapja: http://www.oxygenxml.com A honlapr´ol egy ingyenes ideiglenes tesztrendszer is let¨olthet˝o, amelyhez egy 30 napos pr´obaid˝o tartozik. A k¨ovetkez˝o ´abr´an az indul´o panel l´athat´o. Az < oXygen/ > legfontosabb lehet˝os´egei: • helyesen form´alts´ag ellen˝orz´ese • szerkeszt´esi funkci´ok t´amogat´asa • s´ema valid´aci´o biztos´ıt´asa • XSLT transzform´aci´o t´amogat´asa • XQuery lek´erdez´esi szabv´any t´amogat´asa • adatkapcsolat rel´aci´os adatb´azisok fel´e • adatkapcsolat XML adatb´azisok fel´e • XPath, XInclude szabv´anyok t´amogat´asa • nyelvhelyess´eg ellen˝orz´es angol, n´emet ´es rom´an nyelvre 18
• XML Catalog t´amogat´asa • rugalmas feldolgoz´o motor csatlakoz´as • t¨obb t´amogatott OS plattform A k¨ovetkez˝o ´abra az < oXygen/ > indul´o munkafel¨ ulet´et mutatja be. A kezel˝o fel¨ ulet legfontosabb paneljei: • XML forr´as szerkeszt˝o ablaka • XML fa strukt´ ur´at ´abr´azol´o ablak • S´ema le´ır´o ter¨ ulet • XSLT/XQuery parancsbeviteli ablaka • elemjellemz˝oket le´ır´o ablak • stiluslap le´ır´o ablak • XPath kezel˝o ablak • model ´es projekt adminisztr´aci´os ablak Az oXygen szerkeszt˝o bels˝o kezel˝o funkci´onak egy r´eszlett´e szeml´eltei az al´abbi ´abra. Figure 3: Az oXygen XML szerkeszt˝o kezel˝o panelje
A k´es˝obbi fejezetekben ezen szerkeszt˝on fogjuk az XML alapparancsait ´es p´eld´ait bemutatni.
19
Feladatok • K´eszitsen egy n´evjegyk´arty´at le´ır´o XML dokumentumot • Jav´ıtsa ki az al´abbi XML dokumentumokat, hogy helyesen form´altak legyenek. < Abda 124 gz564 <megjegyzes> KL • Hasonl´ıtsa ¨ossze az XML ´es HTML szabv´anyokat • Hasonl´ıtsa ¨ossze az XML ´es SGML szabv´anyokat • Milyen elemt´ıpusok vannak az XML-ben • Sorolja fel a helyesen form´alts´ag k¨ovetelm´enyeit • Adja meg az elemjellemz˝o(attribute) haszn´alat´anak szab´alyait • Ismertesse a n´evterek haszn´alat´at • Adaj meg a n´evt´er alias l´etrehoz´as m´odj´at ´es a hat´ask¨or´et • Ismertesse a n´evt´er aliasok haszn´alat´at • Sorolja fel az XML szabv´any tervez´es´enek szempontjait • Ismertesse a megjegyz´es ´es direkt´ıva elemek haszn´alat´at • Ismertesse a k´ettag´ u tartalom elemeket • Mutassa be az egytag´ u tartalom elemeket ´es a megjegyz´es elemet • Hogyan kezelhet˝ok a foglalt karaketerek • Milyen az UNICODE karakterek megad´asa, tetsz˝oleges sz¨ovegr´esz bevitele • Mutassa be az XML fa fel´ep´es´et 20
• Adja meg az XML fa ´abr´azol´as´at • Mit jelent a helyesen form´alts´ag ´es normaliz´alts´ag • Mutassea be az XML jelent˝os´eg´et ´es szerep´et • Adja meg az al´abbi kapcsol´od´o szabv´anyok szerep´et: XSLT, XPath, DOM, XQuery, XMLSchema • M´odos´ıtsa az al´abbi s´em´at, hogy a bels˝o ’tag’ elem n´evtere ’l1.hh’,illetve ’l3.hh’ legyen. Gabi \end{itemize}
21
References [1] N. Bradley: Az XML k´ezik¨ onyv, SZAK Kiad´o, 2000 [2] H. Deitel, P. Deitel, T. Nieto, T. Lin, P. Sadhu: XML: How to program, Prentice Hall Publisher, 2001 [3] SGML Users’s Group History, http://xml.coverpages.org/sgmlhist0.html [4] C. F. Goldfarb: The SGML Handbook, Oxford University Press (1991), ISBN 0-19-853737-9 [5] Comparison of SGML and XML, http://www.w3.org/TR/NOTEsgml-xml.html#null3 [6] XML Base, W3C Recommendation, http://www.w3.org/TR/xmlbase/ [7] The XML data model, http://www.w3.org/XML/Datamodel [8] The XDM data model, http://www.w3.org/TR/xpath-datamodel
22