C# - XML felhasználása C#-ban

XML 1. rész

Most induló cikksorozatunkban az XML leíró nyelv ismertetését tűztük ki célul. A cikksorozat keretein belül megismerkedhet az XML történetével, lehetséges felhasználási területeiről, valamint a C#-ból történő felhasználásáról.
Egy kis történelem:
A különböző programok és számítógépes rendszerek közötti információcsere az új hálózatalapú alkalmazások fejlődésével egyre bonyolultabbá válik. Éppen ezért az ilyen információknál alapvető követelmény, hogy önleíróak legyenek, annak érdekében, hogy a kliens program önállóan fel tudja dolgozni azokat.
Az XML (Extensible Markup Language) az SGML-en (Standard Generalized Markup Language) alapuló általános jelölőnyelv, melyre a HTML is nagy hatással volt. Hatékony információtárolási, feldolgozási és megjelenítési rendszer, amely az SGML-ből és a HTML-ből átvett jellemzőkön kívül további lehetőségekkel van kiegészítve, melyek az Interneten történő felhasználását teszik lehetővé. Az SGML egy 1986-ban kiadott szabvány, amely megkönnyíti a szöveg alapú dokumentumok kiadását és cseréjét, olyan nyelv, amely a dokumentum felépítésének szabályait a DTD-ben tárolja. A DTD (Document Type Definition) egy elemdeklarációkból és jellemződeklarációkból felépített szerkezet, amely egy dokumentum értelmezési szabályait tartalmazza, és az értelmező használja fel annak megállapítására, hogy a dokumentum megfelel-e a szabályoknak. Az SGML nagy előnye egyben a hátránya is, mivel nagyon komplex, így egy olyan szoftver kifejlesztése is nagy feladat, amely a nyelv csak egy kisebb részét támogatja. Ennek következtében az SGML-t feldolgozó programok nem teljesek, sokat hibáztak, és nagyon költségesek voltak. Célszerűvé vált tehát az általánosított jelölő nyelv egyszerűsítése, hogy minél szélesebb körben legyen használható.
Az Internet fejlődésével létrejött a HTML, amely megvalósította a felmerült igények nagy részét: hypertext kapcsolódás, szövegformázási lehetőségek. Bár a HTML is az SGML-ből jött létre, kezdetben nem volt teljesen kompatibilis vele. Csak később vált lehetővé SGML alkalmazásokban a HTML feldolgozása, a megfelelő DTD elkészítésével. Bár a HTML egy szabvány, mégis a legnépszerűbb böngészők gyártói gazdasági előnyszerzés érdekében olyan elemeket is beépítettek a programjaikba, melyek nem kompatibilisek más programokkal.
Az SGML túl bonyolult, a HTML pedig kiegészítésre váró nyelv volt, ezért létrejött az új leíró nyelv, az XML. A nyelvet az alábbi tíz célnak megfelelően fejlesztették ki:
1. Legyen könnyen használható az Interneten. Az XML számos olyan HTML megoldást használ, amely nagymértékben megkönnyíti az átállást.
2. Az XML-nek az alkalmazások széles körét kell támogatnia. Az XML rengetegféle nagyon, vagy kevésbé bonyolult struktúrájú adatszerkezet leírására alkalmazható.
3. Kompatibilisnek kell lennie az SGML-lel. Ez azt jelenti, hogy az SGML alkalmazásoknak is képesnek kell lenniük az XML feldolgozására.
4. Könnyű legyen XML-t feldolgozó programot készíteni. Mivel az XML formátum sokkal kötöttebb, mint az SGML, így könnyebb az azt feldolgozó szoftvereket elkészíteni.
5. Az opcionális lehetőségek számát a minimumon kell tartani. Az ideális eset 0. Ez tulajdonképpen azt jelenti, hogy a kívánt cél elérésének lehetőleg csak egyféle megoldása legyen. Ez összhangban van a 4. pontban meghatározott céllal.
6. Az XML dokumentumok könnyen értelmezhetőek legyenek megfelelő feldolgozóprogram használata nélkül is. Mivel az XML dokumentum ASCII formátumú, ezért egy egyszerű szövegszerkesztőbe is betölthető, és a tartalma kiolvasható, vagy akár módosítható.
7. Az XML nyelvet gyorsan kell kidolgozni. A fejlesztés közel két évig tartott, ezért nehéz megítélni, hogy ez a cél teljesült-e.
8. Az XML specifikáció legyen formális és tömör.
9. Legyen egyszerű az XML dokumentumok készítése. Mivel az XML dokumentum ASCII alapú, ezért egy egyszerű szövegszerkesztővel is létrehozható, de a hibák elkerülése végett ajánlott külön erre a célra kifejlesztett szerkesztőprogram használata.
10. A tömörség minimális fontosságú az XML dokumentumokban. Az XML-ben nem használhatók olyan kódrövidítő megoldások, mint például az egyes záró elemek elhagyása. Minden jelölőelemet szerepeltetni kell, és azoknak teljesnek kell lenniük.
Az XML-t elsősorban a médiákon terjesztett strukturált, formázott szövegek leírására használják. Az XML dokumentum speciális utasításokat és jelölő elemeket tartalmaz, melyek mindegyike a dokumentum egy jól meghatározható részét határolják. Míg az SGML-ben egyes záró elemek elhagyása nem okozott gondot (például a HTML-ben a „</p>”), addig az XML-ben kötelező ezek használata. Ennek következtében az egyes jelölőelemek mindig párosával fordulnak elő, de a szabályok betartásával egymásba is ágyazhatók.
Bár az XML elsősorban szövegformázásra kialakított formátum, felépítése miatt alkalmas összetett adatszerkezetek egyértelmű leírására is. Az SMIL (Syncronized Multimedia Integration Language) is egy olyan szabvány, mely az XML jelölések segítségével képes különböző adatok (kép, hang, mozgókép, szöveg) kezelésére.
Az XML dokumentum esetében kétféle szerkezetet különböztetünk meg. A logikai szerkezet különböző egységekből, alegységekből áll, melyeknek egyedi megnevezésük lehet. Ezeket az egységeket nevezzük elemnek. A fizikai felépítés vizsgálata során megfigyelhetjük, hogy a dokumentum általában több, külön fájlban tárolt részekből áll össze. Ezeket a részeket nevezzük egyednek. Az egyedek a dokumentum részeit képező adatállományok (pl. kép), melyekre a dokumentumban hivatkozunk. Ha például egy könyv felépítését vesszük alapul, akkor a könyv fejezetei leírhatók egy-egy elemmel, amik további elemeket tartalmaznak a bekezdések, táblázatok, stb. leírására. Az olyan részeket, melyeket esetlegesen egy másik könyvben is szeretnénk használni, külön fájlegyedekben tárolhatjuk (képek, bekezdések, stb.).
Az XML-ben nincsenek előre definiált elemek, a felhasználó saját elnevezésű elemeket használhat. Ez így alapjában sok hibát rejtene magában, ezért a DTD-ben meg kell határozni a használható elemek definíciót. Az értelmező a DTD-ben rögzített szabályok szerint értelmezi a dokumentumot, és az elemek érvényességét ennek megfelelően állapítja meg. A legbiztonságosabb módszer egy már létező specifikációt használnunk. Létezik ilyen, például a fent említett SMIL formátumhoz is. Az elemeknek érdemes olyan nevet választani, ami az adott objektum viselkedését mondja meg, és nem olyat, hogy hogyan kell azt a képernyőn megjeleníteni. Ebben az esetben viszont az elemhez létre kell hozni egy ún. stíluslapot is. Ennek a módszernek további előnye, hogy a stíluslapot bármikor lehet módosítani, és ez hatással lesz a dokumentum megjelenítési formájára.
Talán a fentiekből már nyilvánvalóvá vált, hogy az XML a HTML-nél több, nincsenek fix tag-ek, és ezek száma nem meghatározott. Az új technológiák megjelenésével szükségesség vált a HTML továbbfejlesztése, de a kompatibilitás megtartása, valamint az egyes vezető böngészők fejlesztői nagyban befolyásolták ezt a folyamatot. A legtöbb új, hasznos funkciót csak a Microsoft Internet Explorer és Netscape böngészők támogatták, ráadásul ezek sem egyformán.
Az XML-ben sem a tag-ek halmaza, sem pedig a szemantika nem meghatározott, csak egy lehetőséget ad arra, hogy saját tag-eket definiáljunk, és megadjuk ezek strukturális összefüggéseit.
Az XML egy része SGML profilként van definiálva, ami azt jelenti, hogy teljesen kiépített SGML rendszer alkalmas XML dokumentumok feldolgozására.
Egy XML dokumentum jelölésekből és tartalomból áll. Összesen hatféle jelölés fordulhat elő:
  • DTD (dokumentum típus deklaráció);
  • element (jelölőelem definíció);
  • entity reference (egyed definíció);
  • comment (megjegyzés);
  • processing instruction (feldolgozási utasítások);
  • marked section (megjelölt szakasz);
A cikksorozat következő részében ezekkel foglalkozunk részletesen.

XML felhasználása C#-ban cikksorozat