XML alapok
Az XML (Extensible Markup Language) nyelv az XML egy leírónyelv, másnéven meta-nyelv, mely segítségével új nyelveket írhatunk le egy XML dokumentum egy ilyen nyelvnek a példánya, a formális nyelvek terminológiáját használva: a nyelv egy mondata amikor az XML segítségével megalkotunk egy új nyelvet, akkor ezt az XML alkalmazásának nevezzük az XML dokumentumokat formai szempontok szerint is elemezhetjük megvizsgáljuk hogyan épülnek fel, milyen szintaktikai elemeket használhatunk bennük ebből a szempontból nagyon hasonlít a HTML nyelvhez, de valójában különböző meta szinten helyezkednek el egy XML dokumentum szöveges állomány, mely strukturált formában képes adatokat tárolni fontos látni, hogy egy XML dokumentum nem csinál semmit a feldolgozó alkalmazásnak kell eldöntenie, hogy mit kezd vele
XML dokumentumok mit kezdhetünk az XML-lel? leírhatjuk XML formában a régi Word dokumentumainkat tárolhatjuk így a leveleinket, feljegyzéseinket azaz tekinthetjük az XML-t pusztán egy új tárolási formának az eddigiekkel ellentétben azonban az XML alkalmas arra, hogy egymással együttműködni szándékozó rendszerek adatcsereformátuma legyen, megteremtve így a gép-gép kommunikáció alapjait példa XML forrás <?xml version="1.0" encoding="iso-8859-2"?> <üzenet> <kitől>piroska</kitől> <kinek>nagymama</kinek> <üzenettörzs>megyek hozzad ma délután!</üzenettörzs> <utóirat>viszek kalácsot</utóirat> <utóirat>képzeld, állítólag farkasok vannak az erdőben</utóirat> </üzenet>
XML dokumentumok - folytatás egy XML dokumentum legfontosabb részei az elemek és az attribútumok egy XML elem három részből áll: egy nyitó címkéből, magából az adatból és egy zárócímkéből; sokszor egy elemre a nyitó címkéjével hivatkozunk az XML nem definiál a HTML-hez hasonló elemeket kialakításuk tervezési/modellezési megfontolásokon alapul az XML-ben nincsenek fenntartott szavak térjünk vissza az előző példánkhoz a dokumentum gyökéreleme az <üzenet>, ilyenből mindig pontosan egy van a <kitől>, <kinek>, <üzenettörzs> és <utóirat> elemek a gyökérelem gyermekei, illetve egymás testvérei tartalma alapján egy XML elem lehet összetett: vannak gyermekei, ilyen a példában az <üzenet> elem egyszerű: literál, numerikus érték stb., pl. <kitől>piroska</kitől> vegyes: literált és más elemeket is tartalmaz üres: csak nyitó- és zárócímkéből áll
XML dokumentumok - fastruktúra egy XML dokumentum egy fát határoz meg, ezért egy XML dokumentumban nemcsak az elemek neve és tartalma, hanem az elemek egymáshoz való hierarchikus viszonya is rögzített
XML dokumentumok - újabb példa egy vállalatnak a dolgozóiról fenntartott nyilvántartását írjuk le XML formában a munkatársaknak van nevük, fizetésük és TAJ számuk egyeseknek van telefonja (akár több is) <?xml version="1.0" encoding="iso-8859-2"?> <munkatársak> <munkatárs> <név>szép Hajnalka</név> <fizetés>220</fizetés> <TAJ>0373468234</TAJ> </munkatárs> <munkatárs> <név>varga László</név> <fizetés>400</fizetés> <TAJ>0356234567</TAJ> <telefon>333-5588</telefon> <telefon>(70)234-1234</telefon> </munkatárs> </munkatársak>
XML dokumentumok - szerkesztés, tulajdonságok látható, hogy az előző XML dokumentum könnyen tartható karban új munkatárs esetén felveszünk egy új munkatárs elemet távozás esetén a megfelelőt töröljük sérülés esetén van esély a javításra! Mivel egy XML dokumentum szöveges formátumú, valamint elemeket (kötelező zárócímkékkel) használ az adatok keretbefoglalásához, szükségszerűen nagyobb lesz, mint egy hasonló adatokat tartalmazó bináris állomány van ellenpélda :) valójában az XML megalkotása során nem is volt szempont a tömörség ez tudatos döntés, a szöveges formátumnak vannak előnyei ember számára is olvasható, nem szükséges hozzá alkalmazás hibák kezelése sokkal jobb a tárolókapacitás amúgy sem probléma, az igazi gond a sávszélesség tudunk azonban (HTTP/1.1) valós időben tömöríteni
XML dokumentumok - attribútumok az XML elemek tetszőleges számú attribútummal rendelkezhetnek egy attribútummal rendelkező XML elem mindig összetettnek számít. az attribútumok értékei csak egyszerű típusok lehetnek (literál, numerikus érték). A HTML-ből jól ismert <img> elem is attribútumokat használ <img src="dolphin.gif" alt="ez egy aranyos delfin"> Piroskás példánkat írhattuk volna az alábbi alakban is <?xml version="1.0" encoding="iso-8859-2"?> <üzenet kit ol="piroska" kinek="nagymama"> <üzenettörzs>megyek hozzad ma délután!</üzenettörzs> <utóirat>viszek kalácsot</utóirat> <utóirat>képzeld, állítólag farkasok vannak az erdőben</utóirat> </üzenet> az attribútumok használata tervezési/modellezési kérdés <movie type="mpeg4">matrix.avi</movie>
XML dokumentumok - névterek egy XML dokumentumokban használt elem- és attribútumnevek egyediek az adott dokumentumra nézve (lokális nevek) ha több XML dokumentumból készítünk egyet ütközhetnek a nevek tipikus példa, hogy egy HTML oldalba ágyazott XML dokumentum is lehet, hogy használja a <body> stb. elemnevet ennek elkerülésére szolgálnak az XML névterek az alapötlet, hogy az elem- és attribútumneveket prefixes alakban adjuk meg <n:body>...</n:body> egy prefixxel kiegészített lokális nevet univerzális- vagy minősített névnek hívunk feltételezzük, hogy az univerzális név már egyedi, így nem lesz névütközés amennyiben egy prefix egyszerű (nem egyedi), akkor persze nem sokat nyerünk ezért egy prefix (névtér) egy ún. URI, amely egyedinek tekinthető az URI-k kötött formával rendelkező literálok általában egy bizonyos szervezethez vagy személyhez tartozik
XML névterek - folytatás egy URI azonban túl hosszú, bonyolult, rontja az XML olvashatóságát ezért a szabvány egy kettős megnevezést használ adott egy rövidebb és beszédesebb név, amit prefixként használunk adott továbbá maga a névtér, melyet összekötünk a prefixxel egy új névteret speciális XML attribútumokkal(*) vehetünk fel xmlns:prefix xmlns előbbi szolgál egy prefix rövid azonosítójú névtér definiálására utóbbi az alapértelmezett névtér megadását teszi lehetővé (a prefixxel nem rendelkező nevek automatikusan ebbe a névtérbe tartoznak) a névtereknek hatáskörük van, egy XML névtér az őt definiáló elemen belül látható sokszor érdemes ezért a gyökérelemben definiálni
XML névterek - példa az alábbi példa két névteret definiál, a <sürgősség> elem az alapértelmezett névtérben van a többi elem az n névvel hivatkozottban <?xml version="1.0" encoding="iso-8859-2"?> <n:üzenet xmlns:n="http://www.valami.hu/" xmlns="uuid:bdc6e3f0-6da3-11d1-a2a3-00aa00c14882" n:kitől="piroska" n:kinek="nagymama"> <n:üzenettörzs>megyek hozzad ma délután!</n:üzenettörzs> <n:utóirat>viszek kalácsot</n:utóirat> <n:utóirat>képzeld, állítólag...</n:utóirat> <sürgősség>sürgős<sürgősség> </n:üzenet> fontos, hogy az URI-knak semmi más szerepük nincsen, minthogy egyedi névként funkcionáljanak bizonyos esetben (ilyen az XSLT, az XSQL, de az RDF is) előfordul, hogy a feldolgozó alkalmazás a névtérdefinícióban megadott URI alapján dönti el, hogy miként kezelje az adott XML dokumentumot
XML entitások a névterekhez kapcsolódó dolgok az ún. entitások egy entitás deklaráció segítségével arra utasíthatjuk az XML feldolgozót, hogy bármikor, amikor az entitásra hivatkozunk, cserélje azt le az entitás értékére az érték néhány speciális karakter kivételével tetszőleges karaktersorozat lehet. Az alábbiakban megadunk az s entitást <!ENTITY s "http://www.valami.hu/"> ezekután az XML állományon belül &s;farkas hivatkozás egyenértékű azzal, mintha az adott helyre a http://www.valami.hu/farkas-t írtuk volna.
XML sémák - alapok jól formázott egy XML dokumentum, ha betartja a formai követelményeket minden nyitó címkének van záró párja az attribútumok ténylegesen kulcs-érték alakúak további kérdés, hogy teljesít-e egy esetleges mögöttes szintaxist implicit módon feltételeztük, hogy az emberek neve literál feltettük, hogy a fizetésük negatív és biztosan van TAJ számuk ugyanakkor, nem kell, hogy legyen telefonjuk az XML egyik ereje, hogy ellenőrizhető az is, hogy egy dokumentum példánya-e egy adott nyelvnek önmagában egy XML dokumentum számos nyelvnek lehet példánya ahhoz, hogy ellen orizni tudjuk, hogy a kapott dokumentum valóban egy adott nyelvtan példánya-e, szükséges magának a nyelvtannak a szabványos leírása erre szolgálnak az ún. XML sémák
Szabály Példa Egyetlen címkének kell tartalmazni az összes többi címkét. Más szavakkal fogalmazva minden adatfájlnak rendelkeznie kell egy gyökérelemmel. A gyökérelemekkel foglalkozott az elozo rész. Minden nyitó címkéhez társulni kell egy záró címkének (az alább ismertetett üres címkék kivételével). A nyitó és záró címkéknek minden esetben egyezniük kell. <macska> <nev>lukrécia</nev> </macska> <macska>... </macska> Helyes: <macska>... </macska> Helytelen: <macska>... </Macska>
Egyes címkék, az úgynevezett üres címkék esetén nincs szükség záró címkére, mivel a záró perjel a címke része. A példában látható címkék vízszintes választóvonal és sortörés beszúrására szolgáló címkéket szemléltetnek. Minden attribútumértéket aposztrófok vagy idézőjelek közé kell foglalni. Ügyelni kell a helyes beágyazásra. A záró címkék sorrendjének pontosan tükröznie kell a nyitó címkék sorrendjét. Vízszintes választóvonal: <hr/> Sortörés <br/> Helyes: beteg_azon="389467" Helytelen: beteg_azon=389467 Helyes: <macska> <nev>lukrécia</nev> </macska> Helytelen: <macska> <nev>lukrécia</macska> </nev>
Minden egyedet deklarálni kell. Az egyedek virtuális tárolóterületek, melyek képeket, szöveget és karaktereket (például a copyrightjelet) tartalmazhatnak. Az példák között a copyright-jel, valamint a csúcsos zárójelek egyedeit láthatja. < < > >
XML sémák - folytatás az XML sémák leírják (XML alakban) egy XML dokumentumban felhasználható elemeket és attribútumokat, azok tartalmát az elemek egymáshoz való viszonyát meghatározhatjuk, hogy az általunk leírni szándékozott világban egy üzenetnek pontosan egy feladója, egy címzettje és egy törzse lehet, valamint opcionálisan tartozhat hozzá egy vagy több utóirat definiálhatjuk azt is, hogy először a címzettet kell megadni, ezután jöhet a feladó, majd az üzenettörzs és végül az utóiratok amennyiben adott egy XML séma és egy XML dokumentum képesek vagyunk eldönteni, hogy a dokumentum megfelel-e az sémának a séma alapján elutasíthatunk üzeneteket (például nincsen megadva a címzett) az XML egyik felhasználási területe az, hogy segítségével az adatokat feldolgozó alkalmazások sokkal egyszerűbbek lehetnek, mint eddig
XML sémák - befejezés az elmondottaknak megfelelő séma <?xml version="1.0" encoding="iso-8859-2"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="üzenet"> <xs:complextype> <xs:sequence> <xs:element name="kitől" type="xs:string"/> <xs:element name="kinek" type="xs:string""/> <xs:element name="üzenettörzs" type="xs:string"/> <xs:element name="utóirat" type="xs:string" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> az XML sémák az itt bemutatottnál sokkal több lehetőséggel rendelkeznek; megadható az elemek értékkészlete (az érték egy intervallumba essen, egy előre definiált halmazból kerüljön ki stb.) és számos egyéb megkötés is.
Miért érdemes az XML-t használni? Miért van szükség az XML használatára? Az élet minden területén egyre több adat készül, az adatok különféle forrásokból származhatnak, és különböző formátumúak lehetnek (adatbázisok, weblapok, számolótáblák, e-mail üzenetek). Az XML segítségével a különböző forrásokból származó adatokat egy helyen használhatja, és hatékonyabban dolgozhatja fel azokat.
Több adat feldolgozása többféleképp Az XML az angol Extensible Markup Language kifejezés rövidítése, melyben az Extensible (bővíthető) szó nem véletlenül szerepel bővítéssel gyakorlatilag az üzleti, kiadói, kormányzati, tudományos és oktatási szféra minden igényéhez idomítható használható bárhol, ahol az információkat több lépésben vagy többféleképp dolgozzák fel.
Az XML eredetileg webes adatcserére lett tervezve. Jelenleg nyilvános és széles körben elfogadott szabványa a legkülönbözőbb rendszerek közötti adatcserének. Az XML-re gyakran mondják, hogy platformfüggetlen ez azt jelenti, hogy az XML használatát támogató bármely program képes olvasni és feldolgozni az XML-adatokat, függetlenül a számítógépek operációs rendszerétől és hardvereitől. Ez a képesség lehetővé teszi, hogy az asztali alkalmazásokkal, például a Microsoft Word vagy a Microsoft Excel alkalmazással közvetlenül a nagyszámítógépek által generált adatokon dolgozzon. Egyre több számítógépprogram támogatja az XML használatát. Egy olyan technológiáról van szó, melyre a jövőben egyre több cég, kormányzati szerv, kutató, iskola és egyéb szervezet fog építkezni.
Az XML alapú rendszerek alapvető összetevői Egy tipikus XML alapú rendszerben található fájlok három típusba sorolhatók. XML-adatok maguk az adatok, kiegészítve a jelentésüket és szerkezetüket meghatározó XML-címkékkel. XML-sémák tartalmazzák azon szabályok definícióit, melyek megadják, mi engedélyezett és mi nem az adatfájlokban. Egy sémával biztosítható például, hogy a felhasználók ne írhassanak szavakat egy dátum típusú mezőbe. XML-átalakítók teszik lehetővé az adatok feldolgozását a különböző programokban és fájlokban. Egy átalakító például értékesítési adatokkal egészíthet ki egy munkafüzetet, míg egy másik pedig ugyanezeket az adatokat beillesztheti egy dokumentumba.
Egy XML-adatfájl anatómiája Az adatok és a címkék mellett az XML-adatfájlok deklarációkat, gyökérelemeket és attribútumokat tartalmaznak. XML-deklarációk Az adatfájl olyan utasításai, melyek azonosítják az adatfájlt és a használatához szükséges további fájlokat. Az ábrán az első deklaráció határozza meg, hogy a fájl egy XML-fájl. (Ha ez a deklaráció hiányozna, a programok nem tudnák, hogyan dolgozzák fel a fájlt.) A második deklaráció a példabeli fájl és az ezzel azonos típusú fájlok adatszerkezetét meghatározó fájlt nevezi meg. A harmadik deklaráció szintén egy fájlt nevez meg e fájl szabályozza az adatok megjelenését, és ez teszi lehetővé egy XML alapú rendszer számára az adatok újraszervezését. Gyökérelem A gyökérelem az az egyetlen címkéje a fájlnak, mely az összes többi címkét, és így az egyes rekordok összes adatát tartalmazza. Minden XML-fájlnak rendelkeznie kell gyökércímkével. Az állatokkal kapcsolatos adatfájlban a gyökércímke az adott állati paciens. Attribútumok Az attribútumok a címkékkel és az azokban elhelyezett adatokkal kapcsolatos információk tárolására szolgálnak. Az XML minden egyes címketípus esetén külön definiálja az attribútumokban tárolt információk típusát. A példában minden állatnak rendelkeznie kell egy betegazonosító számmal, melyet a gyökérelem egy attribútumaként kell megadni. Címkék és adatok Ezek természetesen alapvető összetevői egy fájlnak. Úgy is elképzelhetők a címkék és az adatok, mint gyermekelemek a <MACSKA> </MACSKA> gyökérelemben.