Ugrás a tartalomhoz

Szövegfeldolgozás XML alapokon

Bíró Szabolcs

Neumann Kht.

3. fejezet - Az SGML/XML jelölésrendszer – kódolás

3. fejezet - Az SGML/XML jelölésrendszer – kódolás

Mielőtt az XML ismertetésébe kezdenénk, tisztáznunk kell, hogy a nyelv nem programozási nyelv – sokan tévesen ezt feltételezik, emiatt gyakran hallani az XML-programok kifejezést a helyes XML-struktúrák helyett – tehát jelölésrendszerének elsajátítása senki számára nem okozhat különösebb nehézséget –, bár a HTML nyelvet ismerőknek egy merőben új szemléletet kell megtanulniuk.

Az XML jelölésrendszer egyes részeinek bemutatásakor igyekszünk kitérni azokra a különbségekre is, melyek az SGML-lel szemben tapasztalhatók. Ugyanakkor már most felhívjuk a figyelmet arra, hogy a kötet keretei nem engedik meg az említett különbségek teljes körű ismertetését és részletes taglalását, így kénytelenek vagyunk a lényegesebb összetevőkre szorítkozni.

Leíró kontra műveleti jelölés

Akik szövegjelöléssel foglalkoznak, tudják, hogy alapvetően két nagy jelölésrendszert különböztethetünk meg. Az egyik a leíró, a másik pedig a műveleti jelölés. A következőkben az e kettő közti különbségekre igyekszünk rávilágítani, hiszen leginkább így válhat egyértelművé, miben rejlik az SGML, s még inkább az XML ereje.

Leíró jelölés

Az SGML és az XML leíró jelölést alkalmazó jelölőrendszer, vagyis olyan jelölőkódokat használ, amelyek nevekkel azonosítják (kategorizálják) a dokumentumok bizonyos részeit. Az olyan jelölőkódok, mint például <cim> vagy <bekezdes> csupán a dokumentum bizonyos részeinek azonosítására szolgálnak, és mindössze annyit jelentenek, hogy „a következő elem egy cím”, vagy „most egy bekezdés következik”. Az SGML/XML nyelvben a dokumentumok bizonyos célú feldolgozásához – pl. formázott megjelenítéséhez – szükséges utasítások élesen elválnak a dokumentumban található leíró jelölésektől, rendszerint a dokumentumon kívül, külön eljárásokban vagy programokban találhatók – lásd.: A megjelenítésről általában c. fejezet.

Ez azt jelenti, hogy ha például az SGML/XML állományainkat a weben HTML formátumban szeretnénk megjeleníteni, akkor készítenünk/írnunk kell egy feldolgozó programot, amely értelmezi a fájlokban használt jelölőelemeket, majd azokat a meghatározott formázási utasításokkal látja el. Ebből viszont az is következik, hogy a leíró jelölés használatával ugyanazt a dokumentumot többféle programmal is feldolgoztathatjuk, amelyek mindegyike akár más és más utasítást hajthat végre a dokumentum megfelelő részein. Például egy tartalmi elemző program teljes mértékben figyelmen kívül hagyhatja a szövegbe ágyazott lábjegyzeteket, viszont egy tördelőprogram összegyűjtheti őket és együtt, a fejezet végén jelenítheti meg azokat. Az is elképzelhető, hogy ugyanazt a szövegrészt különböző programok másként dolgozzák fel. Például az egyik kigyűjti a személy- és helységneveket és létrehoz egy bibliográfiát vagy helységnévmutatót, a másik pedig – ugyanabban a szövegben – a személy- és helységneveket vastag dőlt betűkkel látja el.

Mindez nagyon jól hangzik, ám nem hagyhatjuk figyelmen kívül, hogy feldolgozó programjaink csak akkor képesek végrehajtani a fentebb említett utasításokat, ha a leíró jelölést tartalmazó SGML/XML dokumentumainkban a megfelelő jelölőelemeket használtuk. Nem várhatjuk el, hogy programunk kigyűjtse a személyneveket, vagy a dokumentum végén jelenítse meg a lábjegyzeteket, ha nem úgy kódoltuk őket, hogy pl. a személyneveket <szemelynev>...</szemelynev>, a lábjegyzeteket pedig <labjegyzet>...</labjegyzet> jelölőelemek közé tettük.

Műveleti jelölés

A műveleti jelölést alkalmazó jelölőrendszer azt határozza meg, hogy milyen utasításokat kell végrehajtani a dokumentum meghatározott pontján: „a dokumentum címe legyen 14 pixel nagyságú, félkövér és Verdana betűtípusú”, vagy „a bekezdés első sorát 12 mm-rel kezdjük beljebb, majd a szövegben szereplő idézeteket szedjük dőlttel, a bekezdés vége után pedig álljunk az új bekezdés elejéhez”.

Vegyük észre, tulajdonképpen ez a jelölésmód bújik meg a HTML dokumentumok forráskódjában is, hiszen a HTML nyelvnél a jelölőelemekben adjuk meg, hogy a bennük/közöttük lévő tartalom milyen formát öltsön, ha egy böngészőprogramban megnyitjuk. A módszer nagy hátránya, hogy használatakor – a tartalom és a forma keveredése miatt – részben vagy teljes egészében elveszítjük dokumentumunknak azt a hasznos tulajdonságát, hogy abból egy hozzá írt feldolgozó segítségével szinte bármilyen információ kinyerhető.

[Megj.: Logikusan szerkesztett HTML állományokhoz lehet olyan feldolgozót írni, amely XML-lé alakít vissza és az egyes szövegegységeket értelmes jelölőelemekkel látja el. Persze ez korántsem egyszerű, és eltérő forráskódú HTML állományok esetében teljesen nem is automatizálható.]