Az XML alapjai. hogy egy új fejlesztésben ne kapna valahol szerepet az XML: használhatjuk



Hasonló dokumentumok
Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Az annotáció elvei. Oravecz Csaba MTA Nyelvtudományi Intézet MANYE vitaülés február 20.

Adatbázismodellek. 1. ábra Hierarchikus modell

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

Intelligens közlekedési rendszerek (ITS)

Adatbázis-kezelés az Excel 2013-ban

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

KML Keyhole Markup Language

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Regionális forduló november 19.

A RAKTÁRI JEGYZÉKEK SZÁMÍTÓGÉPES FELDOLGOZÁSA: ADATMODELLEZÉS ÉS SZABVÁNYOK

XML adatkezelés. 5. témakör. Nincs explicit névtér kijelölve. <?xml version="1.0"?> <xs:schema xmlns:xs="

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Adatbázis rendszerek. dr. Siki Zoltán

Nyilvántartási Rendszer

Adatbázis, adatbázis-kezelő

Az ErdaGIS térinformatikai keretrendszer

Az alábbiakban a portál felépítéséről, illetve az egyes lekérdező funkciókról kaphat részletes információkat.

Felhasználói kézikönyv

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Zenetár a webszerverünkön,

XML technikák II Kovács, László

Dr. Pétery Kristóf: Word 2003 magyar nyelvű változat

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

HVK Adminisztrátori használati útmutató

A webprogramozás alapjai. Óbudai Egyetem Neumann János Informatikai Kar 2018/19/1 szemeszter

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

XML avagy az univerzális információelérés álma

XML / CSV specifikáció

Az XML dokumentumok adatmodellje

Metadata specifikáció

Cikktípusok készítése a Xarayában

MŰSZAKI KÖVETELMÉNYEK, A KÖRKERESŐ SZOFTVER SPECIFIKÁCIÓJA, KÖLTSÉGVETÉS. A) Műszaki követelmények

Fülöp Csaba, Kovács László, Micsik András

RADPLAN. A Mentum Planet, Mentum Ellipse az InfoVista bejegyzett védjegye, minden jog fenntartva!

XmlGessünk 13. rész - Az XML Schema II.

Regionális forduló november 19.

34. Elsődleges kulcs megadása XMLSchema-ban Idegen kulcs megadása XMLSchema-ban Típusok kategóriái és saját típus megadásának

XML / CSV specifikáció

BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv?

Adatbázis rendszerek 7. előadás State of the art

ADATBÁZIS-KEZELÉS. Relációs modell

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

Intelligens elektronikus szótár és lexikai adatbázis

Algoritmizálás és adatmodellezés tanítása 1. előadás

13. Fájlformátumok. Schulcz Róbert Madarassy László 13. Fájlformátumok v

Programozási technológia

Verziószám 2.2 Objektum azonosító (OID) Hatálybalépés dátuma szeptember 2.

Adatmodellezés. 1. Fogalmi modell

XML és XSLT (a színfalak mögül)

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

Struktúra nélküli adatszerkezetek

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Általános nyomtatványok xml szerkezete. (v1.3)

7. Gyakorlat A relációs adatmodell műveleti része

Lekérdezések I. Egyszerű választó lekérdezések

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Interfészek. PPT 2007/2008 tavasz.

A normaszöveg Wordben történő szerkesztése során a következőkre figyelemmel lenni:

OOP #14 (referencia-elv)

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

SQLServer. DB Recovery modes

Multimédiás adatbázisok

Czifra Sándor Lőrinczi Konrád. Videó vezérelt kurzusok készítése Moodle keretrendszerben

Egyirányban láncolt lista

S0-02 Típusmodellek (Programozás elmélet)

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

Technikai információk fejlesztőknek

Elektronikus levelek. Az informatikai biztonság alapjai II.

DTD Dokumentumtípus definició

H N S A d a t K a p c s o l a t

Egyes esetekben e fejezet keretében készítjük el a Tartalomjegyzéket is, melynek technikai megvalósításáról majd az fejezetben olvashat.

Térképek jelentése és elemzése

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Java programozási nyelv

ADATBÁZIS-KEZELÉS. Modellek

Ezek után már csak a Mentés és a Lekérdezés Futtatása (az ellenőrzés miatt) van hátra. Ügyeljünk, hogy a mentésnél a megadott (Kezd) nevet adjuk meg.

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:

Alkalmazásokban. Dezsényi Csaba Ovitas Magyarország kft.

StartÜzlet online számlázó modul Használati Útmutató

Java II. I A Java programozási nyelv alapelemei

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

Adat és folyamat modellek

A Clipper evolúciója

Az XML-DTD áttekintése

Access gyakorlati feladatok lépésről lépésre

Debreceni Egyetem Informatikai Kar

Átírás:

Az XML alapjai dr. Kovács László Az XML kialakulása Napjaink egyik kulcsszava az információ kezelés, az adatkezelés területén az XML. Az XML betűszó az angol extensible Markup Language, azaz kiterjeszthető jelölő nyelv elnevezésből származik. Ma már szinte elképzelhetetlen, hogy egy új fejlesztésben ne kapna valahol szerepet az XML: használhatjuk konfigurációs állomány leírására, alapadatok tárolására, eredmények megjelenítésére vagy éppen adatcsere nyelvként. Az XML forradalmi előretörése ellenére az XML megitélése nem egységes. Vannak akik lényegi és új elemnek tekintik, mások inkább már korábban megjelent adatleíró modellek lebutítását látják benne. Egyesek új lehetőségek megjelenését remélik tőle, míg mások csak űzleti fogásként értékelik. Ami viszont tagadhatatlan, hogy az XML egy sor feldolgozó technológia és szabvány megszületését hozta magával, lehetőséget adva az egységes adattárolás és feldolgozás megteremtésére. Az XML dokumentumról bizonyára mindenki tud már legalább annyit, hogy szöveges formátumban adjuk meg a tartalmat és a szövegben jelölő elemek vannak, melyek a határolt rész valamilyen tulajdonságára utalnak. A jelölő elemeknél található nyitó és záró tag, amelyek a kapcsolódó szövegrész elejét és végét adják meg. A jelölő elemtagokat a < és > reláció jelek határolják. A jelölö elemek egymásba ágyazhatók. Például az alábbi kis minta három elemet mutat be, melyek közül a diák elem magába foglalja a név és osztály elemeket: <diák> <név> Péter </név> <osztály> 4B </osztály> </diák> Az XML legfontosabb célja, hogy egy plattform-független, alkalmazásfüggetlen adatleíró formátmot adjon, mely alkalmas a web-re épülő nagy tömegű adatátvitel megvalósítására és a kapott adatok rugalmas, hatékony feldogozására. Emiatt az XML több mint adattárolási szabvány, hozzá tartoznak a szokásos kezelést megvalósító feldolgozási szabványok is. 1

Az XML megismerése területén előbb röviden áttekintjük a kialakulásának történetét, majd a legfontosabb tulajdonságait vesszük sorra. A XML nyelv első fő hivatalos dokumentuma a 1998-ban megjelent XML 1.0 W3C ajánlás. Ebben az XML-t, mint az SGML nyelv részhalmazát, annak speciális esetét kezelik. Az SGML betűszó a Standard Generalized Markup Language elnevezésből ered. Az SGML is egy jelölő nyelv, melynek ISO szabványa 1986-ban jelent meg. Az SGML egy általánosabb, nagyobb szabadságot adó nyelv, melynek fő háttrányaként bonyolultságát és az implementációs nehézségét szokták felhozni. A jelölő nyelvek igen korán, már az ötvenes-hatvanas években megjelentek. Fő feladatuk a dokumentumok egyes elemeinél a megjelenési vagy kezelési tulajdonságok leírása. Keztedben ezek a jelölő elemek specifikusak jelölő elemek voltak, azaz tartalmuk és formátumuk egy megadott alkalmazáshoz kapcsolódott. Az 1960-as évek végén jelent meg az általános leíró elemek használatának ötlete. Ezen időszakból származik többek között Tunnicliffe tanulmánya (1967) [?], melynek fő mondanivalója, hogy érdemes a dokumentumon belül külön választani a tartalom és formátum leíró elemeket. Az ötletek első jelentős gyakorlati eredménye az 1969-ben megjelentetett GML nyelv (Generalized Markup Language) [?]. A GML nyelv tartalmazott formátum leíró, szerkesztési és szerepleíró elemeket. A modell többek között azt is lehetővé tette, hogy az egyes dokumentumokat könnyen egymásba ágyazhassák. A GML nyelv továbbfejlesztéseként, mely munka már az ANSI kereteiben folyt le, kibővült a funkciók köre, módosúlt a szintatktika. Az eredményül kapott nyelvet SGML-nek nevezték el, melynek első hivatalos szabbványa 1983-ban jelent meg [?]. Az SGML nyelv legfontosabb jellemzői: moduláris dokumentum felépítés, melyben a dokumentumok egymásra hivatkozhatnak a dokumentum szerkezetét, sémáját egy dokumentum típus leírásassal,a DTD (Document Type Definition) résszel kell megadni jelölő elemekkel lehet megadni, kijelölni a dokumentum különböző szerkezeti egységeit Az SGML-ben használt szintaktika köszön vissza az általunk tárgyalandó XML szintaktikában is. Például az alábbi minta egy érvényes SGML dokumentumot ad meg: <chapter> 2

<chptitle>sql SELECT szintaktikája</chptitle> <para>a SELEVT parancs célja a relációkban tárolt adatok hatékony lekérdezése... </para> <para>a GROUP BY elemmel a csoportképzésre utalunk...</para> </chapter> Az SGML-DTD-ben definiált séma leírás is nagyban hasonlít a későbbiekben bemutatandó XML-DTD-re. Itt is elég egy rövid minta a hasonlóság érzékeltetésére: <!ELEMENT chapter (chptitle, (para heading)+) > A nagyfokú hasonlóság ellenére az SGML és a később kialakult XML nyelvek nem teljesen azonosak. Az XML nyelv számos olyan megkötéssel bír, amely az SGML-nél nem jelent korlátozást [?]. Így például az XML-ben nem szerepelhetnek olyan speciális szerekezeti információt megadó elemek, mint SUBDOC, LINK, RANK. Emelett számos olyan elem van az SGMLben, amit az XML-ben nem vagy csak korlátozottan lehet használni: az XML nem engedi meg például a pár nélküli nyitó elemtagot, ami viszont az SGML-ben érvényes elem. Az XML megjelenésében fő szerepet játszott a hatékonyság növelése és egyesek szeritn az SGML-től való látványos elkülönülés. Az 1986-os megjelenése óta az XML folyamatosan fejlődik, a jegyzet írásakor a legutólsó ajánlás a 2001-ben megjelent változat volt [?]. Az XML legnagyobb előnye az egyszerűbb, hatékonyabb szerkezet mellett a XML-t kisérő, az XML dokumentumot feldolgozó szabványok hadában rejlik. Az alap XML szabvány mellett számtalan, az XML valamely szempont szerinti feldolgozását segítő szabvány jelent már meg, közölük csak XML szerkezete Az XML nyelv megtervezésekor a fő cél egy nyelv megalkotása volt, amely megőrzi az SGML nyelv rugalmasságát, de elegendően egyszerű a hatékony implementáció megvalósításához. A nyelvnek plattform-függetlennek kell lennie, hogy felhasználható legyen, mint egy általános adatcsere formátum. A W3C tervező bizottság a fejlesztési eleveket az alábbi pontokba foglalta össze: hordohatóság és plattform-függetlenség; 3

hatékony alkalmazhatóság az Internet-en; támogassa az alkalmazások mind szélesebb körét; részleges kompatíbilitás az SGML szabvánnyal; az XML nyelv legyen egyszerű szerkezetű; minnél kevesebb opcionális elemet tartalmazzon; könnyen lehessen programozni XML feldolgozó programokat; XML dokumentum legyen a felhasználó által is érthető, olvasható formátumú; legyenek eszközök a struktúra gyors megtervezésére; az XML szabvány legyen tiszta, a helyesség formálisan is igazolható legyen; legyenek eszközök az XML dokumentumok hatékony elkészítésére; nem fontos a tömörség, rövidség, fontosabb az olvashatóság biztosítása. Az XML formátum informális megközelítésével kezdve, elsőként áttekintjük a nyelv szintaktikai elemeit. A leírás során sorba vesszük az egyes lényegi tulajdonságokat, melyek együttesen határozzák meg a helyesen formált XML dokumentum kritériumait. A formátum kritérumokról bővebben olvashatunk többek között az alábbi művekben: [?], [?]. Helyesen formált XML dokumentum kritériumai Az XML dokumentum szöveges állományban tárolt, melynek szokásos kiterjesztése az xml. Az XML-ben a jelölő elemek használatosak a leíró információk, metaadatok megadására. Az elemek tagjait a < és > karakterek határolják. Tartalom szerint az alábbi elemtípusok értelmezettek: tartalom elem: a felhasználó által megadott tartalom tulajdonságait írja le, a feldolgozó programnak szóló információkat tartalmaz deklarációs elem: a feldolgozónak szóló instrukciókat tartalmaz megjegyzés elem: az olvasónak, a programozónak szóló információkat tartamaz 4

A tartalom elemek lehetnek egytagúak és kéttagúak. A másik két elemtípus egytagú. A kéttagú tartalom elem szerkezete: <elemnév jellemzök_listája> tartalom </elemnév> Az elemmel megadott tulajdonság a közrefogott tartalomra vonatkozik. Minden nyitó elemtaghoz léteznie kell egy záró elemtagnak. Az egytagú tartalom elem szerkezete: <elemnév jellemzök_listája/> A megadott tulajdonság nem köthető konkrét szövegtartalomhoz. Az elem létezése utal arra, hogy a megadott helyre valamilyen formátum vagy tartalom objektumot be kell szúrni. Például egy soremelés vagy lapdobás szimbólumot is egy egytagú elemmel lehet beilleszteni a dokumentumba. Az egytagú elemet üres elemnek is nevezik. A tartalom elemek neve tetszőleges szó lehet. Tehát a név csak egy szóból állhat, de a szóalakok halmaza nem előre definiált. Ez a tulajdonság lényegesen eltér a már ismert HTML formátumtól, hiszen ott előredefiniált elemneveket lehet csak használni. Az XML célja, hogy az elem ne csak rögzített formátum tulajdonságok leírására szolgáljon, hanem tetszőleges tartalom megjelölést is megvalósíthassuk általa. Ekkor az elemnév a tartalom szemantikai, jelentés oldalát adja meg. Ha például a tartalom a 23-as szám, akkor az életkor elemnév jelzi, hogy a szám egy életkor értéket takar: <életkor> 23 </életkor> Az XML elemnevek kisbetű/nagybetű érzékenyek, űgyelni kell tehát arra, hogy pontosan ugyanaza a szó szerepeljen a nyitó és záró tagnál. A deklarációs elem szerkezete: <?elemnév jellemzök_listája?> Az XML dokumentum eleján álló xml elemnevű deklaráció mellett a dokumentum egyedi deklarációs elemeket is tartalmazhat. 5

A megjegyzés elem szerkezete: <! megjegyzés > A szabvány alak, amely biztosítja, hogy az elem nem egy speciális feldolgozó programnak szól, a következő alakú: <!-- megjegyzés --> A jellemzők az elem valamely tulajdonságát, viselkedési paraméterét adják meg. Egy jellemző megadása egy párossal történik, a párosban a jellemző nevét és az értékét társítjuk össze. A megadás formátuma: jellemzö_neve = "érték" A jellemzőhöz kapcsolt értéket tehát mindíg idézőjelek között kell szerepeltetni. A lista tetszőleges darabszámú párosokat tartalmaz, azaz lehet üres is. Az XML dokumentum első sorának egy XML deklarációs elemet kell tartalmaznia: <?xml version="vv"?> ahol xx egy verziószámot ad meg. Ezzel az elemmel jelezzük az XML feldolgozónak, hogy a forrásfájl szintaktikája mely XML szabvány verziónak felel meg. A jelenleg használatos szabvány az 1.0: <?xml version="1.0"?> Az XML dokumentumban a tartalom elemek egymásba ágyazhatók: egy kéttagú tartalom elem magába foglalhat egy újabb tartalom elemet: <fo_elem> <al_elem_1>... </al_elem_1> <al_elem_2/> </fo_elem> A tartalmazott elemet gyerek elemnek, a tartalmazót szülő elemnek nevezzük. A szülő és annak minden szülője az elem őseinek halmazát alkotja. 6

Minden elemnek csak egy szülője lehet, nem lehet egy elem két különböző szlőben is gyermek. Ezen megkötésből eredően a tartalom elemek egy hierarchiát alkotnak. A dokumentum gyökér eleme az a tartalom elem, amelyhez nem létezik szülő elem. Az XML dokumentum csak egy gyökér elemet tartalmazhat. Az alábbi példa egy hosszabb XML mintát ad meg: <?xml version="vv"?> <!-- ez egy minta KL:2007.07.01 --> <könyvek> <könyv ikod="1"> <cim> XML alapok </cim> <ar pnem="ft"> 5600 </ar> </könyv> <könyv ikod="2"> <cim> Adatkezelési alapok </cim> <ev>2003</ev> <olvasoterem/> </könyv> </könyvek> A XML dokumentumban bizonyos karakterek szerarátor szerepet töltenek be, Ilyen karakter például a < jel. Ez a karakter ebben az alakban tehát nem fordulhat elő az elemnevekben, a normál tartalom leíró szövegben. A foglalt karakterek halmaza az alábbi karakterekre terjed ki: < > & Az XML dokumentumba beilleszthető olyan tetszőleges szövegrész, melyet a XML feldolgozó teljes egészében tartalom szövegnek tekint, nem keres benne szeparátor elemeket. A szövegrész emiatt tartalmazhat foglalt karatereket is. A szövegrész megadása a CDATA elemmel történik: 7

<![CDATA[ szöveg ]]> A tartalmazott szövegre vonatozó egyedüli megkötés, hogy ne forduljon elő benne a ]] > jelsorozat. A foglalt karakterek tartalom szövegbe való beillszetésére egyed-szimbólumokat is lehet használni. A szimbólumot egy &kod; formátumban lehet megadni, ahol a kód értéke lehet számkód vagy szöveg. A foglalt karakterekhez tartozó szimbólumok: < : < > : > & : & : &apos; : " A számkóddal (Unicode) azonosított karakterek esetén a szimbólum megadása a kövekező formátumban történik: &#nnnn; ahol, nnnn az igényelt karakterhez tartozó Unicode érték. Az XML szabvány lehetővé teszi, hogy definíciós állományokban egyedi szimbólum azonosítókat is definiálhassunk. A következő példa a numerikus és szöveges szimbólumok használatát hasonlítja össze. Mindkét elemnél ugyanaz a tartalom szerepel, csak a foglalt karakterek kódolásában van különbség a két rész között. <?xml version="1.0"?> <forrasok> <rutin nev="fv1"> main() { if (this->seta() < 0 && x < X) { strcpy (valasz,"alacsony ertek"); } } </rutin> <rutin nev="fv2"> <![CDATA[ 8

main() { if (this->seta() < 0 && x < X) { strcpy (valasz,"alacsony ertek"); } } ]]> </rutin> </forrasok> Az XML szerkezet megengedi a rekurziót, azaz egy adott tartalom elemnek lehetnek vele megegyező nevű gyerek elemei. Egy elemnek önmagába való beágyazása tetszőleges mélységű lehet. Az XML dokumentumot normalizáltnak nevezzük, ha minden szóközekvivalens karaktersorozat csak egy karakter hosszú. Az helyesen formált XML dokumentumokkal való ismerkedéshez vegyünk néhány egyszerű mintapéldát. Az alábbi XML dokumentumban két diák adata szerepel. A bemutatott XML dokumentum azonban nem helyesen formát, mivel két lényeges szintaktikai hibát is tartalmaznak: nem lehet két gyökér elem a dokumentunban az elemjellemző értékét idézőjelek között kell megadni <?xml version="1.0" encoding="utf-8"?> <diák> <nev> Peter </nev> <jegy targy=angol> 3 </jegy> </diák> <diák> <nev> Zolir </nev> <jegy német= angol > 3 </jegy> </diák> A kijavított XML dokumentum szerkezete: <?xml version="1.0" encoding="utf-8"?> <diakok> <diák> <nev> Peter </nev> 9

<jegy targy="angol"> 3 </jegy> </diák> <diák> <nev> Zolir </nev> <jegy német= angol > 3 </jegy> </diák> </diakok> Mivel az XML rugalmasan jelölhetők ki az elemnevek, tetszőleges témakör adatai írhatók le vele. Az elemnév megadása tetszőleges, de nem véletlenszerű. A programozó célja., hogy az elemnéven keresztül kiegészítő információt adjon a tényleges alapaadat mellé. Az előző példánkban például a jegy nevet adtuk, ezzel utalva arra, hogy a befoglalt 3-as érték egy jegyet tartalmaz. Az elemben megadott adatok tehát a tárolt alapadatokra vonatkozó leíró adatokat, úgynevezett metaadatokat tartalmaz. A metaadat kifejezés általános jelentése: adat valamely más adatokról. XML névterek Az XML dokuemntumban felhasznált elemnevek az alapadatok jelentésére utalnak. Mivel rendszerint a természetes nyelv szavait használják fel az elemnevek megadásánál, rögtön felmerül a többértelműség problémája. Hiszen egy fogalom, mint például a jegy, nagyon sok értelemben használható: érdemjegy, utazási jegy, jellemző. Emiatt egy adott elemnév különböző alkalmazási kögyezetben, kontexusban, más és más szemantikai jelentéssel bírhat. Sajnos ez az egyes alkalmazások általános használatát jelentősen korlátozza, hiszen ha egy alkalmazás megadott elemnevekre támaszkodik, megadott elemneveket igényel, akkor a feldolgozott XML dokumentumokban sérül a tetszőleges névadás feltétele. Ez ekkor azzal a problémával is jár, hogy egy adott időpontban készült dokumentumre nem garanatált, hogy azt egy később kifejlesztendő alkalmazás is elfogadja, hiszen előfordulhat, hogy egy olyan elemnevet használ, amit a későbbi feldolgozó is lefoglalt magának. Természetesen ekkor egymástól eltérő értelmet nyer a kétféle elemnév, azaz hononíma lép fel. A XML dokumentumban előforduló nevek egyértelműsége több szempontból is fontos lehet. Az egyértelműség legfontosabb előnyei: Egy XML feldolgozó program ekkor formálisan is meg tudja megkülönböztetni a neki szóló elemeket a hononíma elemektől. 10

A felhasználó társítani tudja az elemhez a mögé tartozó szemantikai ismeretekkel Az ilyen névütközések elkerülése érdekében lehetővé teszik az XML szabvány keretében, hogy pontosítsuk az elmenevek jelentését. A névpontosítás elve, hogy az elemnevet egy témakör kijelő névvel lehet ellátni. A szó jelentése tehát mindíg csak témakörön belül lesz egyértelmű. Az XML névtér egy tématerületet azonosít. Az elemeket társítani lehet a névterekkel, minden elemhez egy névtér rendelhető. A névtér neve maga is tetszőleges név lehet. Látható azonban, hogy ez esetben a névütközési problémát nem oldottuk meg, csak áttoltuk egy másik szintre. Hogy ne kelljen magasabb szintű névterek láncolatát létrehozni, a XML gyakorlatban a névterek elnevezésénél az egyediségere törekednek. Hogy minél kisebb esélye legyen az ütközésnek, a névtér megadásakor URL formátumú azonosítót szoktak használni, melyek szerver része megegyezik a fejlesztő saját szerverének elérési nevével. A szabvány ettől tágabb teret enged, az URI formátumot írja elő. A URL állomány specifikus része rendszerint a feldolgozó program tárgykörére utal. A névtérhez hozzárendelt URL értéknek nem kell létező objektumra mutatnia. Néhány közismert névtér azonosító: http://www.w3.org/2000/10/xmlschema : W3C XMLSchema névtere urn:schemas-microsoft-com:xml-data : az MS XML séma névtere http://www.w3.org/1999/xsl/transform : az XSL feldolgozó névtere http://www.w3.org/1999/xlink : az XLink feldolgozó névtere Mint a példából is látható, hogy az URL formátumú névtér azonosítók igen terebélyesek az egyediség biztosítása végett. Ha ezen azonosítókat adnánk meg az egyes tartalom elemeknél, akkor bizony igencsak elnyomná a többi adatot a névtér megadása. Hogy ne uralkodjon el ennyire a névtér kijelölés, az XML szabvány lehetővé teszi a névterekhez egy lokális aliasnév, rövidítés hozzárendelését. Eztövetően elegendő csak a rövidebb névtéralias használata. A szabvány emelett még azt is lehetővé teszi, hogy alapértelmezési néveret hozzunk létre, amikor nem kell még a névtéraliast sem megadni. A névterek megadása elemjellemzőn keresztül történik. A vonatkozó elemjellemző azonosító neve: xmlns. A névtér megadás formátuma: <elemnév... xmlns:alias = URL...> ahol a megadott alias használható a továbbiakban a kapcsolódó URL helyet. Ha az :alias rész elmarad, akkor a megadott URL lesz az elemek alapértelmezési névtere. Az alapértelemzési névtér megadásának szintaktikája: 11

<elemnév... xmlns = URL...> Egy elemnél több névtér kijelölés is élhet. A névtér hozzárendelése egy tartalomelemhez a <alias:elemnév...> formátumban történik. Ha kéttagú az elem, akkor a záró tagnál is szerepeltetni kell a nyitó tagban megadott alias nevet. Az alapértelemzési névtér létezése esetén a normál <elemnév...> elemmegadás az elemet az alapértelmezési névtérhez rendeli. Az alapértelmezési névtér használatának egyik sajátossága, hogy az alapértelemzési névtér csak az elemekre vonatkozik, a kapcsolódó elemjellemőkre már nem. Az aliasnév elemjellemzőhöz történő rendelésekor a elemjellemző neve előtt kell megadni az alias azonosítót: <elemnév alias:jellemzo_nev= ertek...> Az aliasnév érvényességi köre azon elemre és annak befoglalt elemeire terjed ki, amelyben definiálták. Egy belső elemben a kívül értelmezett aliasnév felülírható egy új értelmezéssel. <ktar:konyvek xmlns:kt= http://iit.uni-miskolc.hu/kovacs/konyvtar xmlns:vir= http://uni-miskolc.hu/nyilvanartas xmlns= http://iit.uni-miskolc.hu/root > <ktar:konyv id= 1 > <ktar:isbn> I11233 </ktar:isbn> <vir:olvaso> UZI234 <uid> olg45 </uid> </vir:olvaso> <vir:nkod xmlns:vir= http://uni-miskolc.hu/neptun > OPUZT7 </vir:nkod> </ktar:konyv> <ktar:konyv id= 3 > <ktar:isbn> TF7671 </ktar:isbn> <vir:olvaso> JII781 <uid> z78hz </uid> </vir:olvaso> <vir:nkod xmlns:vir= http://uni-miskolc.hu/neptun > LOP86J </vir:nkod> </ktar:konyv> </ktar:konyvek> 12

A példában négy névtér megadás is szerepel. A négy névtérhez viszont csak három alias tartozik, mivel a vir nevű alias felülírásra kerül az elemen belül. A négy névtérből egy, a http://uni-miskolc.hu/root egy alapértelmezési névtér. Ehhez egyedül az uid elem tartozik. Emellet a konyv elem id elemjellemzője is ide tartozik, hiszen egyrészt előtte nincs alias kijelölés, másrészt egy alapértelemzési névtér hatáskörében foglal helyet. A http://iit.uni-miskolc.hu/kovacs/konyvtar névtérhez a ktar alias rendelődik, s ebbe a névtérbe tartozik a konyvek, konyv, ISBN elem. A felüldefiniálás miatt a vir alias mást jelent az olvaso és az nkod elemeknél. A következő példában egy gyári feldolgozó program, az XSLT processzor névterének használatát figyelhetjük meg. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="2.0"> <xsl:template match="/"> <metch> Oman </metch> </xsl:template> </xsl:stylesheet> A példában az XSLT feldolgozóhoz tartozó egyedi névtér URI érték: http://www.w3.org/1999/xsl/transform A névtérhez rendelt lokális alias érték: xsl Ezen névtérhez tartozik a template elem, míg egy másik, default névtér része a metch eleme. XML formális szerkezete A XML elemeknél ismert, hogy minden elemnek csak egyetlen szülője lehet és egyetlen gyökér elem létezik. Emiatt az XML dokumentum egy gyökeres fával modellezhető [?], [?]. A következőkben a kapcsolódó fogalmakat tekintjük át. Fának nevezzük a körútmentes gráfot. Ha az egyik csomópontot kijelöljük, mint gyökeret, akkor gyökeres fáról beszélhetünk. Ebben az esetben minden gyökérhez kapcsolódó élek a gyökértől elfele mutatnak, s a célcsomópontokból a további élek is csak elfele mutathatnak. A dokumentumban az alábbi típusú csomópontok élnek: 13

dokumentum elem elemjellemző adat (szöveg) névtér direktíva megjegyzés A fában belső csomópont csak elem és elemjellemző típusú lehet. A szöveg csomópont, a névtér, direktíva és megjegyzés csak levélként szerepelhetnek. Minden csomóponthoz egy cimke tartozik, ami belső csomópontoknál megadja az azonosító nevet, az adat csomópontnál pedig a szövegtartalmat. A fa gyökér eleme a dokumentum csomópont. Az elemjellemző típusú csomópontokn belül megkülönböztetünk egy azonosító szerepkörű csomópontot, Az elemjellemzőt leíró csomóponthoz vagy egy adat típusú vagy egy hivatkozás típusú gyerek kapcsolódhat. A hivatkozás típus a fának egy elem csomópontját jelöli ki. A gyermek elemek sorba rendezettek. Az XML dokumentum az XML fa linearizált alakjának tekinthető Mintaként vegyük az alábbi XML-fát: Figure 1: Az minta XML dokumentum fa reprezentációja Az ábrában a következő jelölésket használjuk: dokumentum: hatszög elem: normál kör elemjellemző: kettős téglalap adat (szöveg): téglalap névtér: kettős kör N jelöléssel 14

direktíva: kettős kör PI jelöléssel megjegyzés: kettős kör C jelöléssel A megadott XML-fa linearizált alakja a következő: <ktar:konyvek xmlns:ktar= http://iit.uni-miskolc.hu/kovacs/konyvtar > <ktar:konyv id= 1123 > <ktar:cim> Lombhullás </ktar:cim> <kiado> Magvet}o <kid> hmv45 </kid> </kiado> <ar pnem= Ft >2600 </ar> <hasznalt/> <vir:isbn xmlns:vir= http://www.nbooks.org/isbn > OPUZT7 </vir:isbn> </ktar:konyv> <ktar:konyv id= 4234 > <ktar:cim> Holdudvar </ktar:cim> <kiado> Kossuth <kid> hku76 </kid> </kiado> <ar pnem= Ft >3100 </ar> <vir:isbn xmlns:vir= http://www.nbooks.org/isbn > IPI7T5 </vir:isbn> </ktar:konyv> </ktar:konyvek> Az XML, mint részben struktúrált adatszerkezet A számítógépes adattárolásnak a korábbi évtizetedekben kétféle, egymástól igen eltérő változata alakult ki. Az egyik irány az adatbázisban történő tároláshoz kapcsolódik, melyekben minden adataelemnek egy előre meghatározott helye van a globális sémában. Az adatok tárolásához egy rögzített séma tartozik, melyben minden az elemi adtatok mezőkben foglalnak helyet, s a mezőkből rekordokat építenek fel. Ekkor a tárolási hely egyben kijelöli az adat szemantikai tartalmát is. Ezen a adattárolási formátumot nevezik struktúrált adattárolásnak. Tipikus képviselője a relációs adatmodell, melyben a táblázatneve és a mező neve együtt megadja az adatelem jelentését. Az alábbi példa egy relációsémát és reláció előfordulást mutat be. 15

Dolgozok kód név status 1 Peti 1 2 Anna 3 A pédából látható, hogy az 1-es érték jeletése csak attól függ, hogy melyik rublikában szerepel. A struktúrált tárolás igen széles körben elterjedt, hiszen számtalan előnye van, mint például Tömörség Egyszerűbb algoritmussal feldolgozható számítógéppel Egyszerűség Hatékony feldolgozási sebesség Viszont számtalan hátrányos vonása is van, ami miatt nem tekintehtő ez a formátum sem egy általános információ átadási módnak: korlátozott kifejezőerő előre rögzített a séma ismerete szüksége az értelmezéshez, nem önhordó szerkezet Vannak viszont olyan esetek, amikor nem lehet az átatandó információt a relációs sémához hasonlóan tagolni. Erre az esetre lehet példa a szöveges dokumentumkezelés, amikor egy levelet vagy egy programkódot hozunk létre. Ekkor minden szónak és adatelemnek csak a saját kontexusában van értelme, a szó pozíciója nem egyértelműen adja meg a jelentést. Ez a formátum a szabadszöveges tárolási mód. Ekkor a beszélt nyelvet tároljuk le közvetlenül. A szabadszöveges tárolás előnyei: rugalmas nagy kifejezőerő ember által értelmezhető A szbadszöveges tárolás mellett más adatformátum is lézetnek, ahol nem lehet rögzített struktúrát felleplni, ilyen lehet a videó vagy hang adatok tárolása is. Ezen, rögzített stuktúra nélküli formátumokat szokés együttesen nem-struktúrált adatoknak is nevezni. 16

Sajnos a nem-struktúrált, elsődlegesen a szabadszöveges tárolás hátránya, hogy nem létezik olyan program, amely alkalmas lenne a szabadszöveg feldolgozására és pontos értelmezésére, hiszen a beszélt nyelvben nagyon sok a többértelműség, a kivétel és viszonylag nagy a nyelvtan bonyolultsága is. A két eltérő tárolási mód egymáshoz való közelítésének, egységesítésének megvalósulása az XML formátum, melyet a részben-rendezett (semi-structured) szerkezetnek is neveznek. A részben-rendezettség elnevezés arra utal, hogy nincs rögzített struktúra minden elem mellett viszont ott szerepelnek a kapcsolódó metaadatok (elemnév és elemjellemzők) tetszőleges metaadatok értelemzés helyesen formáltság ad keretet a formátumnak Az ilyen tárolást azért szokás önleírónak is nevezni, mivel a dokumentumban nemcsak az adatértékek, hanem a kapcsolódó metaadatok is benne vannak, együtt szerepelnek. A részben rendszett struktúrákat általánosságban nem fával, hanem gráffal lehet leírni. Ez azt jelenti, hogy egy elemnek több tulajdonos vagy szülő eleme is lehet. Gondoljunk például arra az esetre, amikor egy embernek több ingatlana is lehet és eg yingatlannak is több tulajdonosa lehet egy ingatlan nyilvántartáson belül. A több-több kapcsolat a tiszta hierarchikus modellekben csak redundanciával oldható meg. Ezt azt jelenti, hogy ugyanazt a személyt leíró elemet több ingatlant leíró elem alatt is megadjuk. A késöbbi leíró modellekben a tiszta beágyazás mellett a hivatkozást hozták be, melyen keresztül megszüntethető a redundancia. Ekkor a hivatkozott elem valamely tulajdonságát adjuk meg a tartalmazás helyett. A részben-rendezett struktúrán alapuló tárolás legfőbb gyakorlati haszna, hogy segítségével tetszőleges szerkezetet le lehet írni egy általános módon. Ezáltal ez a formátum nagyon alkalmas adatátviteli szerepre. Mivel csak az internet elterjedése óta jelentkezik nagy méretekben a heterogén források közötti adatmozgatás igénye, a XML jellegű részben rendezett-struktúra is csak a 90-es évektől kezdődően terjedt el igazán. XML dokumentumok létrehozása Az XML dokumentumot tetszőleges szövegszerkesztővel elkészíthetjük, amely alkalmas szövegállományok előállítására. Ha például Word szerkesztőt használunk, akkor a gyljünk, hogy ne doc típusú állományként mentsük le az elkészült 17

Figure 2: Az oxygen XML szerkesztő induló felülete forrást. A létrejött XML dokumentummal kapcsolatban az egyik legelső teendőnk a dokumentum helyesen formáltságának ellenőrzése. Mint korábban már említettük, a dokumentum helyesen formált, ha teljesíti a szerkezet leíró alfejezetben felsorolt tulajdonságokat. Szerencsére a legtöbb XML megjelenítő program elvégzi az ellenőrzést. Így például a Microsoft Internet Explorer (IE) is alkalmas az ellenőrzése végrehajtására. Az IE programot használhatjuk tehát az XML dokumentumok megtekintésére és ellenőrzésére. A megjelenítés során az IE támogatja a hierarchikus kifejtést. Ez azt jelenti, hogy egy elemet lehet becsomagolva és kifejtve is megjeleníteni. A teljes becsomagoláskor az egész fából csak a gyökér elemet látjuk. Az elem mellett egy + vagy - jel állhat. A + jel mutat arra, hogy a becsomagolt, tartalmaz al-elemeket. A - jel arra utal, hogy nincs további leszármazott. Az IE mellett léteznek speciális XML-szerkesztők is, melyek nemcsak az egyszerű megtekintést vagy formáltság ellenőrzést támogatják. A lehetőségek gazdag tárháza áll rendelkezésre a használatra kiválasztott < oxygen/ > elnevezésű XMl szerkesztőben is. A termék honlapja: http://www.oxygenxml.com A honlapról egy ingyenes ideiglenes tesztrendszer is letölthető, amelyhez egy 30 napos próbaidő tartozik. A következő ábrán az induló panel látható. Az < oxygen/ > legfontosabb lehetőségei: helyesen formáltság ellenőrzése szerkesztési funkciók támogatása séma validáció biztosítása XSLT transzformáció támogatása XQuery lekérdezési szabvány támogatása adatkapcsolat relációs adatbázisok felé adatkapcsolat XML adatbázisok felé XPath, XInclude szabványok támogatása nyelvhelyesség ellenőrzés angol, német és román nyelvre 18

XML Catalog támogatása rugalmas feldolgozó motor csatlakozás több támogatott OS plattform A következő ábra az < oxygen/ > induló munkafelületét mutatja be. A kezelő felület legfontosabb paneljei: XML forrás szerkesztő ablaka XML fa struktúrát ábrázoló ablak Séma leíró terület XSLT/XQuery parancsbeviteli ablaka elemjellemzőket leíró ablak stiluslap leíró ablak XPath kezelő ablak model és projekt adminisztrációs ablak Az oxygen szerkesztő belső kezelő funkciónak egy részletté szemléltei az alábbi ábra. Figure 3: Az oxygen XML szerkesztő kezelő panelje A későbbi fejezetekben ezen szerkesztőn fogjuk az XML alapparancsait és példáit bemutatni. 19

Feladatok Készitsen egy névjegykártyát leíró XML dokumentumot Javítsa ki az alábbi XML dokumentumokat, hogy helyesen formáltak legyenek. <?xml version="1.0" encoding="utf-8"?> <gyumolcsok xmlns:ku = "a.a"> <<alma> <helye> Abda </alma> </helye> 124 <kz:korte> gz564 </korte/> </gyumolcsok> <megjegyzes> KL </megjegyzes> Hasonlítsa össze az XML és HTML szabványokat Hasonlítsa össze az XML és SGML szabványokat Milyen elemtípusok vannak az XML-ben Sorolja fel a helyesen formáltság követelményeit Adja meg az elemjellemző(attribute) használatának szabályait Ismertesse a névterek használatát Adaj meg a névtér alias létrehozás módját és a hatáskörét Ismertesse a névtér aliasok használatát Sorolja fel az XML szabvány tervezésének szempontjait Ismertesse a megjegyzés és direktíva elemek használatát Ismertesse a kéttagú tartalom elemeket Mutassa be az egytagú tartalom elemeket és a megjegyzés elemet Hogyan kezelhetők a foglalt karaketerek Milyen az UNICODE karakterek megadása, tetszőleges szövegrész bevitele Mutassa be az XML fa felépését 20

Adja meg az XML fa ábrázolását Mit jelent a helyesen formáltság és normalizáltság Mutassea be az XML jelentőségét és szerepét Adja meg az alábbi kapcsolódó szabványok szerepét: XSLT, XPath, DOM, XQuery, XMLSchema Módosítsa az alábbi sémát, hogy a belső tag elem névtere l1.hh,illetve l3.hh legyen. <?xml version="1.0" encoding="utf-8"?> <fo:adatok xmlns:fo="l1.hh"> <al:tetel xmlns:al="l2.hh"> <tag> Gabi</tag> </al:tetel> </fo:adatok> \end{itemize} 21

References [1] N. Bradley: Az XML kézikönyv, SZAK Kiadó, 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