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 <üzenet>
Piroska Nagymama <üzenettörzs>Megyek hozzad ma délután!üzenettörzs>
viszek kalácsot képzeld, állítólag farkasok vannak az erdőben ü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
, , <üzenettörzs> és 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. Piroska 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) <munkatársak> <munkatárs> Szép Hajnalka 220 0373468234 <munkatárs> Varga László 400 0356234567 333-5588 (70)234-1234
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 elem is attribútumokat használ
• Piroskás példánkat írhattuk volna az alábbi alakban is <üzenet kit˝ol="Piroska" kinek="Nagymama"> <üzenettörzs>Megyek hozzad ma délután!üzenettörzs> viszek kalácsot képzeld, állítólag farkasok vannak az erdőben üzenet>
• az attribútumok használata tervezési/modellezési kérdés <movie type="mpeg4">matrix.avi
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 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 ...
• •
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 Megyek hozzad ma délután! viszek kalácsot képzeld, állítólag... <sürgősség>sürgős<sürgősség>
• 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
• 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 <macska> az összes többi címkét. Más Lukrécia 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).
<macska> ...
A nyitó és záró címkéknek minden esetben egyezniük kell.
Helyes: <macska> ... Helytelen: <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.
Vízszintes választóvonal:
Minden attribútumértéket aposztrófok vagy idézőjelek közé kell foglalni.
Helyes: beteg_azon="389467"
Ü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.
Helyes: <macska> Lukrécia
Sortörés
Helytelen: beteg_azon=389467
Helytelen: <macska> Lukrécia
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 <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"/>
•
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> … gyökérelemben.