Bemutatkozik az XML
Mi is az XML? Extensible Markup Language – Bővíthető jelölő nyelv Word Wide Web Consortium (W3C) terméke Az SGMLből (Structured Generalized Markup Language) fejlődött ki
Mire való az XML? az XML a hordozható adat készítésének az eszköze Széles körben elterjedtek az ASCII alapú szövegfájl alkalmazások, pl.: interface-k, konf fájlok. A gond hogy ezek nem tartalmaznak semmilyen leíró adatot, meta adatot. (Még a kódlap tulajdonság sem örzödik meg)
Mire való az XML? Az XML a benne tárolt adatok mellett rendelkeznek plusz információkkal, ugyanakkor a leírásuk továbbra is egyszerű. Pl.: elhelyezhetünk címkéket amik utalnak az adat természetére, a dok. szerkezeti és tartalmi felépítésére valamint érvényesség vizsgálatra is jó
Mire jó az XML? Egy egyszerű példa: <i> dőlt betűt jelöl. Miért? Hangsúlyozás vagy idegen szó? XML-ben deklarálok két kifejezést: <hangsúly> és <idegen szó>. Eredményüknek a dölt betüt állítom be. Amikor megjelenik meg tudom tekinteni hogy a háttérben mi zajlott, miért lett dőlt betű
Mire jó az XML? Az XML elsősorban dokumentumok webes publikálására íródott. Tekinthető egyfajta ősnyelvnek, automatikusan generálható belőle egyéb szabvány: html, pdf
Alkalmazási területei: Szövegfeldolgozás Közös nyelv Protokoll Alkalmazások objektumainak szérializálási formája
Alkalmazási területei: E-business Telefónia Adatbázisok XSL(T)
Célkitűzések könnyű használhatóság a gyors elterjedés érdekében széleskörű felhasználhatóság kompatibilisnek kell lennie az SGML Egyszerű programírás xml dokumentumoknak, így a programozóknál gyorsan terjed
Célkitűzések II XML forrásnak világosnak és olvashatónak kell lenni XML szabványt rövid idő alatt kell kifejleszteni, így elérhető, hogy egyetlen nyelv terjedjen el az XML szabványnak formálisnak és tömörnek kell lenni
Egyszerű példa Az XML az adatokat hierarchikus szerkezetben tárolja Éppen ezért az xml adatok mindig fa struktúra szerkezetűek lesznek Egy vendégkönyvet hozzunk létre: Tároljuk a nevet, email címet, dátumot és megjegyzést
Egyszerű példa <?xml version="1.0" encoding="WINDOWS-1250" ?> <VKONYV> <VENDEG sorszam=”1”> <NEV>Aladár</NEV> <EMAIL>aladar@freemail.hu</EMAIL> <DATUM>2005.01.31</DATUM> <SZOVEG>Hello world!</SZOVEG> </VENDEG> <VENDEG sorszam=”2”> <NEV>Béla</NEV> <EMAIL>jbela@freemail.hu</EMAIL> <DATUM>2001.04.30</DATUM> <SZOVEG>Hello world </SZOVEG> </VKONYV>
Egyszerű példa (elso.xml) <?xml version="1.0" encoding="WINDOWS-1250" ?> <VKONYV> <VENDEG sorszam=”1”> <NEV>Béla</NEV> <EMAIL>bela@freemail.hu</EMAIL> <DATUM>2005.01.31</DATUM> <SZOVEG>Hello world</SZOVEG> </VENDEG> <VENDEG sorszam=”2”> <NEV>Bela</NEV> <EMAIL>jbela@freemail.hu</EMAIL> <DATUM>2005.04.30</DATUM> <SZOVEG>Hello world </SZOVEG> </VKONYV>
Egyszerű példa A példán is látszik, hogy többféleképpen is leírhatjuk az adatainkat. Természetesen ez mindig feladat függő is. A dokumentum kinézetét nem tudjuk befolyásolni.
XML alkalmazások Az XML-lel létrehozott jelölő nyelveket XML alkalmazásoknak nevezzük Pl.: XSQl, XHTML, stb.
Az XML felépítése Jól formázott a szöveg ha megfelel az XML specifikációjában rögzített szabályoknak. Érvényes névnek nevezzük azokat a karaktersorozatokat amik betüvel vagy alulvonással kezdődnek, tetszőleges hosszú. Jelentés nélküli karakter: melyeket az xml értelmező módul félrehagy
Az XML dokumentum felépítése fejrész -XML fejléc -dokumentum típus definíció -XML-séma definíció -megjegyzések -feldolgozási utasítások(stíluslap definíció vagy egyéb) -jelentés néküli karakterek test rész -dokumentum elem további elemek megjegyzések feldolgozási utasítások jelentés nélküli karakterek -jelentés néklüli karakterek -feldolgozási utasítások
Az XML fejléc Megadása nem kötelező, de a specifikáció mégis előírja. Mindig az első sorban szerepel Tartalmazza: XML verziószám Kódolási forma Tartozik e a dokumentumhoz külső jelölésdeklaráció
Elemek létrehozása <ELEMNEV [tulajdonság="ertek"] > tartalom </ELEMNEV> Kis és nagybetű meg van különböztetve (vmelyik bőngésző nem foglalkozik vele!) Az elemnévnek érvényesnek kell lenni Minden elem rendelkezhet szöveges tartalommal, elem tartalommal és vegyes tartalommal. Ha az elem elemet tartalmaz, akkor azt gyermekelemnek nevezzük.
Elemek <F1VILAGBAJNOK csapat="ferrari"> <EV>2002</EV> <NEV>Michael Schumacher</NEV> <NEMZETISEG>Nemet</NEMZETISEG> </F1VILAGBAJNOK> jellemzőnévnek érvényesnek kell lenni, és a hozzá tartozó értéket dupla (") vagy szimpla (') idézőjelben kell megadni. Egy elemen és egy névtéren belül nem lehet két azonos nevű tulajdonság, vagy ha mégis, akkor az első lesz az érvényes a többit figyelmen kívül hagyja az értelmező! Létezik üres tartalom is. Lásd html <Br>
Dokumentumelem Dokumentum elemnek nevezzük az XML dokumentum adattartalmának legfelső szintű elemét. jólformázott XML dokumentum mindig egyetlenegy legfelső szintű elemet tartalmaz <?xml version="1.0" encoding="ISO-8859-2"?> <DOKUMENTUMELEM> valami szoveg <VALAMIELEM>valami szoveg</VALAMIELEM> </DOKUMENTUMELEM> <!-- jólformázott dokumentum -->
Névterek A névterek az egyes elemek, illetve azok tulajdonságainak csoportosítását teszik lehetővé. <?xml version="1.0" encoding="ISO-8859-2"?> <F1VILAGBAJNOKSAG> <IDENY> <EV>1999</EV> <NEV>Mika Hakkinen</NEV> <NEMZETISEG>Finn</NEMZETISEG> </IDENY> <IDENY> <EV>1999</EV> <NEV>McLaren-Mercedes</NEV> <NEMZETISEG>Brit</NEMZETISEG> </IDENY> </F1VILAGBAJNOKSAG>
Névterek <?xml version="1.0" encoding="ISO-8859-2"?> <F1VILAGBAJNOKSAG xmlns:pilota="http://www.akarmi.hu/pilotak" xmlns:auto="http://www.akarmi.hu/autok"> <pilota:IDENY> <pilota:EV>1999</pilota:EV> <pilota:NEV>Mika Hakkinen</pilota:NEV> <pilota:NEMZETISEG>Finn</pilota:NEMZETISEG> </pilota:IDENY> <auto:IDENY> <auto:EV>1999</auto:EV> <auto:NEV>McLaren-Mercedes</auto:NEV> <auto:NEMZETISEG>Brit</auto:NEMZETISEG> </auto:IDENY> </F1VILAGBAJNOKSAG>
Névterek Az xmlns kulcsszó után adjuk meg a névtér nevét (névtér előtag) valamint a névteret, amely valójában azonosítja a névteret. Névtérnek bármilyen url-t megadhatunk. Nem feltétlenül nyitja meg. Meg lehet adni alapértelmezett névteret is, amely az összes felül nem bírált gyermekelemre érvényes, vagyis azon elemekre, amelyeknél nem definiáltunk újabb névtereket.
CDATA részek A CDATA rész szöveges tartalmát az XML értelmező puszta szövegként értelmezi, így azon belül sem megjegyzés sem más utasítás nem kerül értelmezésre. A CDATA rész a "<![CDATA[" karaktersorozattal kezdődik, amelyet bármilyen karaktersorozat követhet kivéve a zárókaraktersorozatot, amely a "]]>" karakterek sorozata. Példa: <deklaralas> <![CDATA[ valtozo deklaralas& inicializalas: <tipus> <valtozo>(=<kifejezes>)(, <valtozo>=<kifejezes2>...); ]]> </deklaralas>
Dokumentum típusú definíció Érvényes XML dokumentumnak nevezzük azon jólformázott XML dokumentumokat, melyek logikai felépítése és tartalma teljes mértékben megegyezik az XML dokumentumban meghatározott szabályoknak Ezen szabályok megfogalmazhatóak (megírhatóak) Dokumentum Típus Definíció vagy xml séma segítségével. Miért fontos ez? Mert ha ismert a dtd, akkor bárki képes olyan dokumentumot írni, ami tud az én xml dokumentumommal kommunikálni. Tehát ez egy tervrajz szerűség
A DTD és az elemek létrehozása <!ELEMENT elemneve tartalomleírás> <?xml version="1.0" encoding="ISO-8859-2"> <!DOCTYPE F1VILAGBAJNOKOK [ <!ELEMENT F1VILAGBAJNOKOK (F1VILAGBAJNOK)*> <!ELEMENT F1VILAGBAJNOK (EV, NEV, NEMZETISEG)> <!ELEMENT EV (#PCDATA)> <!ELEMENT NEV (#PCDATA)> <!ELEMENT NEMZETISEG (#PCDATA)> <!-- egyetlen eleme deklarácioja --> ] > Ezútán pedig má jön a rendes eddigi megszokott leírás.
A DTD és az elemek létrehozása <?xml version="1.0" encoding="ISO-8859-2"?> <!DOCTYPE EMBEREK [ <!ELEMENT EMBEREK (EMBER)*> <!ELEMENT EMBER (NEV, SZULEV, VEGZETTSEG, (MUNKAHELY | ISKOLA), GYERMEK*)> <!ELEMENT NEV (#PCDATA | KOZEPSONEV)*> <!ELEMENT KOZEPSONEV (#PCDATA)> <!ELEMENT SZULEV (#PCDATA)> <!ELEMENT VEGZETTSEG (#PCDATA)> <!-- egyetlen eleme deklarácioja --> <!ELEMENT MUNKAHELY (#PCDATA)> <!ELEMENT ISKOLA (#PCDATA)> <!ELEMENT GYERMEK (#PCDATA)> ] >
Jellemzők deklarálása <!DOCTYPE EMBEREK [ <!ELEMENT EMBEREK (EMBER+)> <!ELEMENT EMBER EMPTY> <!ATTLIST EMBER csaladi_allapot CDATA "igen" szul_ev CDATA #REQUIRED> <!-- csaladi_allapot megadasa nem kotelezo, ha nem adjuk meg, akkor az alapertek "igen" rendelodik hozza szul_ev megadasa kotelezo, hianya eseten hibat kapunk. --> ] > <EMBEREK> <EMBER szul_ev="1970" /> <EMBER csaladi_allapot="nem" szul_ev="1999" /> <EMBER csaladi_allapot="igen" szul_ev="1977" /> </EMBEREK>
Névterek és egyedek Az eddigi leírtakhoz nagyon hasonló módon lehet névtereket és egyedeket is deklarálni. Ismertetését itt most túl hosszú lenne. A cál az volt hogy lehessen látn hogy épül fel egy ilyen xml nyelv.
Az XML gyakorlati haszna Adatbázis kezelő rendszerek dtd-vel szokták definiálni a típusokat. Így elérték hogy báki tudjon az adatbázishoz XML dokumentumot gyártani, úgy hogy nem kell ismerni az adatbázis felépítését. A dtd értelmezéséhez rengeteg segéd progi van. A legismertebb a dom
XML DOM XML DOM célja, hogy egy XML dokumentumot beolvasson, értelmezzen, és lehetvé tegye a dokumentumban (XML fában) való mozgást és módosítást programozható felületeken keresztül. Azaz miután beolvasta a XML csodánkat, képesek leszünk programból új tagokat beleilleszteni, attribútumokat módosítani stb.
XML DOM és XSL A Dom-nak rengeteg hibája akad. A legsúlyosabb az, hogy mindig az egész xml fájlt be akarja olvasni. Ettől lassú lesz, de ez főleg hálózaton jön elő. Ezért fejlesztették kis az XSL-t. Ez képes soronként feldolgozni az XML fájlt.
Még néhány szó Az XML megteremtette azt a lehetőséget, hogy az adatok hordozhatósága egyszerű legyen. Ennek elvi következmény hogy a programok jobban fognak tudni egymással kommunikálni Az XML-nek egyik következménye, hogy a lehető legtávolabbi platformon levő gépek rendszerei között is ki tud alakulni egy kommunikáció. Az adatbányászat be fog élénkülni, főleg az interneten lehet ezt érezni.
Még néhány szó… Ennek az adatbányászat fellendülésnek csak egy tipikus példája: Mpeg 7 szabvány, ami gyakorlatilag arra képes, hogy rá keres egy film tetszőleges jelenetére és adataira.