Fejezet 3. SGML alapismeretek

Tartalom
3.1. Áttekintés
3.2. Elemek, címkék és tulajdonságok
3.3. A DOCTYPE deklarációk
3.4. Visszaváltás az SGML használatára
3.5. Megjegyzések
3.6. Egyedek
3.7. Állományok tartalmának elérése egyedeken keresztül
3.8. Jelölt szakaszok
3.9. Befejezés

Az FDP keretében készített dokumentációk többsége az SGML valamilyen alkalmazásában íródik. Ebben a fejezetben részletesebben kifejtjük a mögötte álló fogalmakat, a dokumentumok alapjául szolgáló források megértését és írását, illetve a dokumentáció forrásainak tanulmányozása során előkerülő különféle SGML-trükköket.

A bemutatás alapjául szolgáltak Mark Galassi Get Going With DocBook című írásának egyes részei.

3.1. Áttekintés

A kezdeti időkben még viszonylag könnyen el lehetett boldogulni az elektronikus formában tárolt szövegekkel. Elegendő volt csupán annyit tudni., hogy az adott írást milyen karakterkódolással készítették (ez lehetett ASCII, EBCDIC vagy éppen valami más). A szöveg nem volt több mint egyszerű szöveg, és közvetlenül a végleges formáját adta. Semmi csel, semmi formázás, semmi hozzáadott értelem.

Ezen a fokon aztán elkerülhetetlen módon tovább kellett lépni. Hiszen ha egyszer a szöveges információkat egy számítógép által kezelhető alakban tároljuk, akkor jogosan elvárhatjuk, hogy az képes legyen felhasználni és értelmesen feldolgozni. Szeretnénk a szöveg bizonyos részeit például kiemelni, felvenni egy szójegyzékbe, vagy éppen hivatkozással ellátni. Az állományok neveit a képernyőn “írógépszerű”, a nyomtatásban viszont már “dőltbetűs” stílusban szeretnénk látni, nem is beszélve a szöveg megjelenésének számtalan egyéb módjáról.

Egy időben a Mesterséges Intelligencia (MI) megjelenésétől várták a megváltást ezen a területen. A számítógépünk majd szépen beolvassa az általunk írt dokumentumot és magától felismeri a fontosabb kulcsszavakat, állományneveket, a felhasználó által begépelendő szövegeket, a példákat és így tovább. Sajnálatosan azonban a valóságban ez még egyáltalán nem valósult meg, a számítógépeknek ezért szükségünk van némi segítségre a szöveges adatok értelmes feldolgozásában.

Pontosabban úgy fogalmazhatnánk, hogy segítenünk kell nekik az egyes elemek beazonosításában. Nézzük meg például ezt a szöveget:

Az rm(1) parancs használatával töröljük a /tmp/ize állományt:

% rm /tmp/ize

Emberi szemmel könnyedén fel tudjuk ismerni benne az állományneveket, a parancsokat, a man oldalak hivatkozásait és így tovább, azonban a számítógép erre önállóan nem képes. Ezért lesz szükségünk jelölőkre.

A “jelölő” szó eredetijét (markup) gyakran olyan értelemben használják mint “haszonkulcs” vagy “kockázati pótlék”. Kevés elvonatkoztatással ugyanez lényegében alkalmazható a szövegek esetében is. A jelölők a dokumentumban szereplő kiegészítő, hasznos, az azonosítás kockázatát csökkentő, a szöveg többi részétől egyértelműen megkülönböztethető további szöveges információkat jelentik. Ezek alapján a programok a dokumentumok feldolgozása során képesek önállóan meghozni bizonyos döntéseket. A szövegszerkesztők el tudják rejteni ezeket a többletinformációkat az olvasók elől, így azok egyáltalán nem zavarják őket.

A jelölőkben tárolt adatok tehát növelik a dokumentumok hasznát. A jelölők hozzáadását, a szöveg bejelölését értelemszerűen emberek végzik, hiszen ha erre a számítógépek is képesek lennének, akkor nem is lenne rájuk egyáltalán szükség. Ezzel azonban pótlékot kell nyújtanunk (vagyis további költségeket ráfordítanunk) a dokumentumok megírásához.

Az előző példában szereplő szöveget ennek megfelelően a következő módon írjuk meg:

<para>Az &man.rm.1; parancs használatával
  töröljük a <filename>/tmp/ize</filename>
  állományt:</para>

<screen>&prompt.user; <userinput>rm /tmp/ize</userinput></screen>

Láthatjuk, hogy a jelölők nagyon jól elkülöníthetőek a szöveg tartalmától.

A jelölők használatához nyilvánvalóan valamilyen módon meg kell határoznunk, hogy az adott jelölők mit jelentenek és hogyan kell azokat értelmezni. A jelölők összefogásához tehát szükségünk van egy ún. jelölőnyelvre, amely alapján aztán jelölni fogjuk a dokumentumainkat.

Ehhez természetesen egyetlen jelölőnyelv önmagában még nem feltétlenül lesz elég. A szaknyelven íródott dokumentációkhoz igazított jelölőnyelvvel szemben teljesen másak az elvárásaink, mint például a receptek leírásához használt nyelv esetében, ez pedig megint más, mint amivel verseket tudunk jelölni. Először tehát egy olyan nyelvet kell megfogalmaznunk, amely ilyen jelölőnyelvek előírására használható. Ezt nevezzük a jelölőnyelvek jelölőnyelvének, vagyis a meta-jelölőnyelvnek.

Az SGML, avagy Standard Generalized Markup Language (Szabványos Általánosított Jelölőnyelv) pontosan egy ilyen nyelv. Számos jelölőnyelv készült az SGML segítségével, többek közt az FDP által leginkább használt HTML és DocBook.

Az egyes nyelvek részletes leírását hivatalosan dokumetumtípus-definíciónak (Documentum Type Definition, DTD) nevezik. A DTD felhasználásával adhatjuk meg a szövegben jelölőként alkalmazható elemeket, azok sorrendjét (vagy éppen egymásba ágyazhatóságának mikéntjét) és a hozzájuk kapcsolódó egyéb információkat. A DTD-ket gyakran csak úgy említik mint az SGML alkalmazásait.

A DTD tartalmazza az összes felhasználható elem leírását, azok használatának sorrendjét, megadja, hogy ezek közül melyeknek kell szerepelniük, illetve melyek hagyhatóak el és így tovább. Ennek köszönhetően készíthető egy olyan SGML alapján működő elemző, amely a DTD és egy dokumentum birtokában képes megállapítani, hogy az adott dokumentum megfelel-e a DTD által meghatározott szabályoknak: a benne szereplő elemek a megfelelő sorrendben vannak, esetleg tartalmaznak hibákat. Ezt a lépést nevezik általában a “dokumentum érvényesítésének”.

Megjegyzés: Az ellenőrzés folyamán egyszerűen annyi történik, hogy az elemző a megadott DTD alapján jóváhagyja a dokumentumban feltüntetett elemeket, azok rendezettségét és a többit. A jelölők helyes használatát azonban nem vizsgálja. Ha éppen függvénynévként jelöljük be a szövegben megjelenő állományok neveit, akkor az elemező ezt nem fogja hibának tekinteni (ekkor természetesen feltételezzük, hogy a DTD definiálja az állomány- és függvénynevek jelölésére alkalmas elemeket, illetve ezek ugyanazokon a helyeken szerepelhetnek).

A Dokumentációs Projekt számára beküldött munkáinkban jó eséllyel a HTML vagy a DocBook nyelvek valamelyike szerint kell dokumentumokat megjelölnünk, és nem kell a DTD módosításával foglalkoznunk. Ennélfogva ez a leírás sem tér ki a DTD írásának részleteire.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.