diff --git a/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml b/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
index 2cf9931db9..dc11edc3c1 100644
--- a/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
@@ -1,2127 +1,2127 @@
SGML alapismeretekAz 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.ÁttekintésA 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 &man.rm.1; parancs használatával
töröljük a /tmp/ize
állományt:&prompt.user; 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:Az &man.rm.1; parancs használatával
töröljük a /tmp/ize
állományt:
&prompt.user; rm /tmp/ize]]>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.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.Elemek, címkék és
tulajdonságokAz SGML használatával készített
dokumentumtípus-definíciók mindegyikének
vannak közös jellemzõi. Ez viszont aligha lesz
számunkra meglepõ, ahogy majd fokozatosan
megismerkedünk az SGML kialakítása
mögött álló alapvetõ gondolatokkal.
Ezek közül a legkézenfekvõbbek a
tartalom és az
elem.A dokumentáció minden esetben (legyen az most
egy normál honlap vagy éppen egy vaskos könyv)
rendelkezik valamilyen tartalommal, amelyet aztán
tovább (esetleg még tovább) osztunk elemekre.
A jelölõk elhelyezésének ezen elemek
határainak kijelölésében és
elnevezésében van szerepe a feldolgozás
késõbbi szakaszaiban.Ehhez példaként tekintsünk egy
hagyományos könyvet. A legfelsõ szinten ez a
könyv önmagában egy elemet képvisel. Ez a
könyv elem aztán magától
értetõdõ módon tartalmaz fejezeteket,
amelyek szintén önálló elemeknek
tekinthetõek. Minden ilyen fejezet további elemeket
foglal magában, például bekezdéseket,
idézeteket és lábjegyzeteket. Minden egyes
bekezdésben találhatunk újabb elemeket,
amelyek elárulják nekünk, hogy a bennük
szereplõ szövegben melyik részében
beszélnek egymással a szereplõk, vagy
éppen hogy hívják az egyes
karaktereket.Az egészet úgy képzelhetjük el mint
a tartalom feldarabolását. A
legfelsõ szinten adott egy darab, maga a könyv. Ahogy
haladunk kicsivel lentebb, újabb darabokat találunk,
a fejezeteket. Ezeket aztán tovább bomlanak
bekezdésekre, lábjegyzetekre, a karakterek neveire
és a többi.Meglepõ, hogy az SGML lehetõségeinek
igénybevétele nélkül milyen könnyen
különbséget tudunk tenni az egyes elemek
közt. Ehhez valójában elegendõ a
könyv nyomtatott változata, néhány
különbözõ színû kiemelõ,
amelyekkel aztán bejelöljük a tartalom egyes
részeit.Sajnos a kiemelõknek nem létezik elektronikus
változata, ezért találnunk kell valamilyen
egyéb módot a tartalom egyes részeinek
megjelölésére. Az SGML-ben megfogalmazott
nyelvek (HTML, DocBook és társaik) ezt
címkékkel oldják
meg.A címkékkel mondhatjuk meg hol kezdõdnek
és hol fejezõdnek be az egyes elemek. A
címke nem az elem része. Mivel a DTD
általában azért készül, hogy a
szövegben adott típusú
információkat tudjunk jelölni, adott
típusú elemeket fog elfogadni, ezért ezeknek
megfelelõen kell címkéket
létrehoznunk.Egy elem elemhez tartozó
kezdõcímke általános alakja az
elem. Az
hozzátartozó zárócímke pedig az
/elem.Elem (kezdõ- és
zárócímkék) használataA HTML-ben a bekezdéseket a p
(mint paragrafus) elemmel jelölhetjük. Ehhez az elemhez
tartozik kezdõ- és
zárócímke.]]>Ez egy bekezdés. A 'p' elem kezdõcímkéjétõl indul és a 'p'
zárócímkéjénél fejezdõdik be.
]]>Ez meg egy másik bekezdés. Ez viszont már rövidebb.]]>
Nem mindegyik elemnél kell
zárócímkét használnunk, egyes
elemekhez ugyanis nem járul semmilyen tartalom.
Például egy HTML állományban
jelölhetjük, hogy legyen a dokumentumban egy
vízszintes elválasztó. Ehhez a vonalhoz
értelemszerûen nem kapcsolódik tartalom,
ezért elég egy kezdõcímkét
beszúrni.Elem (csak kezdõcímke)
használataA HTML-ben van egy hr nevû elem,
amellyel vízszintes elválasztókat (horizontal
rule) jelölhetünk. Ennek az elemnek nincs tartalma,
ezért csak kezdõcímkével
rendelkezik.]]>Ez itt egy bekezdés.
]]>Ez pedig egy másik bekezdés. Az elõzõ bekezdéstõl egy vízszintes
vonal választja el.]]>
Ha eddig még nem sejtettük volna,
megemlítjük, hogy az elemek természetesen
elemeket is tartalmazhatnak. A korábbi könyves
példánkban a könyv elem magában foglalta
az összes fejezet elemet, amelyek pedig a bekezdés
elemeket és így tovább.Elemek elemekben, az em elem]]>Ez egy egyszerû ]]>bekezdés]]>, amelyben néhány ]]>szót]]>
szépen ]]>kiemeltünk.
]]>
A DTD pontosan tartalmazza mely elemek tartalmazhatnak
további elemeket, valamint az elemek egymásba
ágyazhatóságának
szabályait.Az emberek gyakran összetévesztik a
címkéket az általuk jelölt elemekkel,
és egymás szinonímájaként
használják ezeket a kifejezéseket. Ez
viszont helytelen.A dokumentumokat elemekbõl építjük
fel. Minden elem elõre meghatározott módon
kezdõdik és fejezõdik be. Az elemek
kezdetét és végét
címkék jelölik.Amikor ez a dokumentum (vagy bárki, az SGML
használatában járatos személy)
a p címkére
hivatkozik, akkor ez alatt a <,
p, > karakterekbõl
álló sorozatot érti. Ezzel szemben viszont
a p a teljes elemre
vonatkozik.Ez egy nagyon kicsi
eltérés, de mindig tartsuk észben!Az elemeknek lehetnek tulajdonságaik. A
tulajdonságokat nevek és értékek
párosai alkotják, segítségükkel
az elemhez fejthetünk ki további
információkat. Ez lehet az adott elem által
jelölt tartalom megjelenítésére
vonatkozó utasítás, esetleg az elem
valamilyen azonosítója vagy valami
más.Az elemek tulajdonságait mindig az adott elem
kezdõcímkéjén
belül soroljuk fel,
tulajdonság="érték"
alakban.A HTML újabb változataiban például
a p elemnek van egy align
tulajdonsága, amely a HTML megjelenítése
során javasolja, hogy az általa jelölt
bekezdést merre igazítsuk.Ez az align tulajdonság négy
elõre meghatározott érték
valamelyikét kaphatja meg: left (balra
zárt), center (középre
zárt), right (jobbra zárt)
és justify (sorkizárt). Ha nem
adjuk meg a tulajdonság értékét a
kezdõcímkében, akkor
alapértelmezés szerint left
lesz.Tulajdonság használata elemben]]>Az 'align' tulajdonság ebben a bekezdésben igazából
teljesen felesleges, hiszen alapértelmezés szerint is balra zárt
lenne.]]>
]]>Ennek viszont már középre kellene kerülnie.]]>Egyes tulajdonságok csak adott értékeket
vehetnek fel, mint például left
vagy justify, másoknál viszont
lényegében bármit megadhatunk. Ha a
tulajdonság értékének
megfogalmazása során idézõjeleket
(") is használni akarunk, akkor az
egész kifejezést tegyük egyszeres
idézõjelbe.A tulajdonságok értékének
megadása egyszeres idézõjellel]]>Jobbra zárt!]]>Elõfordulhat, hogy az érték
megadásakor egyáltalán nem kell semmilyen
idézõjelet használni. Ennek szabályai
viszont nagyon halványak, ezért sokkal
egyszerûbb mindig idézõjelbe
tenni a tulajdonságok értékeit.Az elemekhez, címkékhez és
tulajdonságokhoz tartozó információk
SGML katalógusokban kerülnek tárolásra.
A Dokumentációs Projektben használt
eszközök ilyen katalógusok mentén
nézik át a munkánkat. A textproc/docproj csomagban a
segédprogramok mellett rengeteg ilyen
SGML-katalógust találhatunk. A &os;
Dokumentációs Projektnek is vannak saját
katalógusai. Az alkalmazott eszközöknek mind a
két fajta katalógusokat ismerniük kell.Egy kis gyakorlás…A szakaszban szereplõ példák
kipróbálásához
telepítenünk kell bizonyos szoftvereket, illetve
beállítani egy környezeti
változó értékét.Töltsük le és telepítsük a
textproc/docproj portot a
&os; Portgyûjteményébõl. Ez
portoknak a portja, tehát egy
metaport, így a
Dokumentációs Projektben használt
összes eszköz rajta keresztül
letöltõdik és
telepítõdik.A parancssorunk konfigurációs
állományában állítsuk be az
SGML_CATALOG_FILES környezeti
változó értékét.
(Amennyiben nem az angol nyelvû
dokumentációval dolgozunk, itt érdemes
a nyelvünknek megfelelõ könyvtárakat
megadni.)Minta .profile
állomány &man.sh.1; és &man.bash.1;
parancssorokhozSGML_ROOT=/usr/local/share/sgml
SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog
SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILESMinta .cshrc
állomány &man.csh.1; és &man.tcsh.1;
parancssorokhozsetenv SGML_ROOT /usr/local/share/sgml
setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog
setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILESA módosítások
elvégzése után vagy jelentkezzük ki
majd be, vagy pedig adjuk ki a közvetlenül
parancssorban az adott parancsokat.Hozzunk létre egy
próba.sgml nevû
állományt, és írjuk bele az
alábbi szöveget:]]>Próba HTML állomány
]]>Ebben a bekezdésben legyen valamennyi szöveg.
]]>Az utána következõ bekezdésbe is rakjunk még valamennyi szöveget.
]]>Ennek a bekezdésnek jobbra zártnak kellene lennie.
]]>
Próbáljuk meg az állományt
érvényesíteni valamelyik SGML
elemezõvel.A textproc/docproj
csomagnak része az nsgmls
nevû érvényesítést végzõ elemezõ.
Az nsgmls beolvas egy tetszõleges
SGML DTD szerint definiált elemekkel jelölt
dokumentumot és ebbõl elkészíti a
hozzátartozó
elemstruktúra-információs halmazt
(Element Structure Information Set, ESIS, de ezzel itt most
nem foglalkozunk).Ha viszont az nsgmls parancsnak
megadjuk a paramétert, akkor nem
generál tényleges eredményt,
csupán a hibaüzenetek jeleníti meg.
Ennek köszönhetõen könnyen
ellenõrizni tudjuk, hogy az általunk
készített dokumentum érvényes
vagy sem.Az nsgmls parancs
használatával tehát
ellenõrizzük az imént létrehozott
dokumentumunk
érvényességét:&prompt.user; nsgmls -s próba.sgmlLáthatjuk, hogy az nsgmls nem
jelez semmiféle hibát, ami azt jelenti, hogy a
dokumentumunk valóban érvényes.Nézzük meg mi történik akkor, ha
kihagyjuk a kötelezõ elemeket.
Töröljük például a
title és /title
címkéket, majd próbáljuk meg
újra az
érvényesítést.&prompt.user; nsgmls -s próba.sgml
nsgmls:próba.sgml:5:4:E: character data is not allowed here
nsgmls:próba.sgml:6:8:E: end tag for "HEAD" which is not finishedAz nsgmls által
generált hibaüzenetek kettõspontokkal
tagolt csoportokba vagy oszlopokba
sorolhatóak.OszlopJelentés1A hibát jelzõ program neve. Ez
minden esetben az nsgmls.2A hibát tartalmazó
állomány neve.3A hibát tartalmazó sor
száma.4A hibát tartalmazó oszlop
száma.5A generált üzenet jellegét
megadó egybetûs kód. Az
I információt, a
W figyelmeztetést, az
E hibát
Ez nem minden esetben az ötödik
oszlopban szerepel. Az nsgmls
-sv például az
nsgmls:I: SP version "1.3"
üzenetet adja vissza (a tényleges
verziójától
függõen). Ez például
egy információs
üzenet., végül pedig az
X a kereszthivatkozást
jelez. Ebbõl
megállapítható, hogy az
iménti üzenetek hibákra
vonatkoznak.6Az üzenet szövege.Egyedül a title címke
elhagyásával két
különbözõ hibát kaptunk.Ezek közül az elsõ jelzi, hogy az SGML
elemzõ olyan helyen találkozott tartalommal (amely
ebben esetben konkrétan karaktereket jelent és
nem az elemet bevezetõ kezdõcímkét),
ahol valami másra számított. Az
elemzõ itt ugyanis valamelyik, a
head elemen belül szabályosan
elhelyezhetõ elem
kezdõcímkéjét várja
(amilyen például a
title).A második hibát pedig azért kaptuk,
mert a head elemeknek tartalmazniuk
kelltitle elemet.
Az nsgmls ezt azonban nem ebben a
formában közli: mivel az elemet még a
befejezõdése (tehát a
title megemlítése)
elõtt lezártuk, szerinte egyszerûen csak
nem ért véget rendesen.Tegyük vissza a title
elemet.A DOCTYPE deklarációkA dokumentumok elején mindig meg kell adni annak a
dokumentípus-deklarációnak a nevét,
amely alapján készítjük. Ennek
köszönhetõen az SGML elemzõk elõ
tudják keresni a dokumentum
érvényesítéséhez kellõ
DTD-t.Ezt az információt általában
egyetlen sorban, a DOCTYPE deklarációban adjuk
meg.A HTML DTD 4.0 változatának megfelelõ
dokumentumokat tehát például így
vezetjük be:]]>Ebben a sorban több különbözõ
típusú alkotórészt fedezhetünk
fel.<!Ez egy jelzés, amellyel
jelezzük egy SGML-beli deklaráció
kezdetét. Ez a sor a dokumentum
típusát határozza meg.DOCTYPEA dokumentumtípus SGML-beli
deklarációját vezeti be.htmlA dokumentumban elsõként megjelenõ
elemet
nevezi meg.PUBLIC "-//W3C//DTD HTML 4.0//EN"formális publikus
azonosítóMegadja a dokumentum DTD-jéhez tartozó
formális publikus azonosítót
(Formal Public Identifier,
FPI). Az SGML elemzõ ennek
alapján találja meg a dokumentum
feldolgozása során szükséges
DTD-t.A PUBLIC nem része az
azonosítónak, azonban segít az SGML
elemzõnek megtalálni a benne megfogalmazott
DTD-t. Késõbb
további módszereket is láthatunk majd
erre.>A deklaráció
lezárása.Formális publikus azonosítókformális publikus
azonosítóEbben a szakaszban csupán
kiegészítõ ismeretek szerepelnek. Ezek
viszont hasznos hátteret adhatnak például
olyan esetekben, amikor ki akarjuk deríteni, hogy az
SGML feldolgozó miért nem éri el a
megadott DTD állományokat.A formális publikus azonosítók (FPI)
egy speciális felírással rendelkeznek, amely
a következõ:"Tulajdonos//KulcsszóLeírás//Nyelv"TulajdonosEz határozza meg kihez tartozik az FPI.Ha az értéke az ISO
részlettel kezdõdik, akkor az FPI az ISO
tulajdona. Például a "ISO
8879:1986//ENTITIES Greek Symbols//EN"
esetén a görög szimbólumokat
tartalmazó egyedkészlet tulajdonosa. Az ISO
8879:1986 az SGML szabvány ISO száma.Minden más esetben az értéke a
következõ alakú lesz:
-//Tulajdonos
vagy
+//Tulajdonos
(vegyük észre, hogy a két
változat csak a sor elején levõ
+ és -
jelekben tér el).Ha az érték a -
jellel kezdõdik, akkor a tulajdonos adatai nem
regisztráltak, a +
esetében pedig regisztráltak.Az ISO 9070:1991 szabvány definiálja a
regisztrált nevek
elõállítását, amelynek
értelmében egy ISO publikáció,
egy ISBN kód vagy az adott szervezet ISO 6523
szabványnak megfelelõ kódjának
számából kell származtatni,
illetve a nevek kiosztását egy erre
felhatalmazott szerv végzi. Ezt a feladatot az
Amerikai Nemzeti Szabványügyi Intézetre
(ANSI) bízta az ISO tanácsa.Mivel a &os; Projekt nem regisztrálta
magát, a hozzátartozó
érték tehát a
-//&os; lesz. Látható
egyébként, hogy a W3C sem
regisztrálta még magát.KulcsszóAz állományban található
információ típusának
megadására különbözõ
kulcsszavak használhatóak. Ezek
általában a DTD,
ELEMENT, ENTITIES
és TEXT. A
DTD csak DTD
állományokhoz használatos, az
ELEMENT pedig olyan DTD
részletekhez, amelyekeben csak egyedek vagy elemek
leírásai találhatóak. A
TEXT SGML tartalmat jelent
(szövegeket és jelölõket).LeírásMinden egyéb adat, amit az
állomány tartalmáról még
meg akarunk adni. Tartalmazhat
verziószámokat, vagy bármilyen
számunkra értelmes és az SGML
rendszer számára egyedien
azonosítható rövid
szöveget.NyelvKétkarakteres, ISO szabvány szerint
megadott kód, amellyel az állomány
natív nyelvét adjuk meg. Az angol
esetében ez az EN.KatalógusokAz SGML feldolgozónak a dokumentum
feldolgozása során valamilyen módon az
így megadott formális publikus
azonosítóból vissza kell tudnia fejtenie
a DTD-t tartalmazó állomány
nevét.Mindehhez egy katalógusra lesz
szükségünk. Ezek (amelyeket
általában catalog
néven találhatunk meg) tartalmazzák az
azonosítók és a hozzájuk
tartozó állománynevek
összerendeléseit. Például, ha egy
katalógusban a következõ sor
található:PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd"Az SGML feldolgozó a catalog
állományt tartalmazó könyvtár
4.0 alkönyvtárában
levõ strict.dtd
állományban fogja keresni az adott DTD-t.Nézzünk szét kicsit a
/usr/local/share/sgml/html/catalog
állományban. Ez tartalmazza a textproc/docproj portból
telepített HTML DTD-kre vonatkozó
állományinformációkat.Az SGML_CATALOG_FILES környezeti
változóAz SGML feldolgozónak valahogy tudnia kell hol
keresse a katalógusokat. Számos
implementációjuk parancssori
paramétereken keresztül teszi lehetõvé
a feldolgozás során használni
kívánt katalógus vagy katalógusok
felsorolását.Emellett az SGML_CATALOG_FILES
környezeti változó
segítségével is megadhatóak ezek
az állományok. A változó
értékének a (teljes elérési
útvonallal kifejtett) katalógusok vesszõvel
tagolt felsorolását kell
beállítani.Az esetek döntõ többségében a
következõ állományokat kell ilyen
módon felvennünk:/usr/local/share/sgml/docbook/4.1/catalog/usr/local/share/sgml/html/catalog/usr/local/share/sgml/iso8879/catalog/usr/local/share/sgml/jade/catalogEzt egyébként korábban már elvégeztük.Azonosítók helyettA formális publikus azonosítók
használata helyett akár közvetlenül meg is
adhatjuk a dokumentum érvényességét
definiáló DTD-t tartalmazó konkrét
állomány nevét.Ennek felírása némileg
eltér:/az/elérési/út/állomány.dtd]]>A SYSTEM kulcsszóval
jelezzük, hogy az SGML feldolgozó a DTD
leírását rendszerszinten keresse. Ez
általában (de nem mindig) azt jelenti, hogy a DTD
elérhetõségét
állománynév formájában adjuk
meg.Az FPI használata leginkább a
hordozhatóság támogatása miatt
ajánlott. Ilyenkor nem kell ugyanis a dokumentumokhoz
mellékelni a DTD egy példányát,
illetve ha a SYSTEM kulcsszóval
adnánk meg, akkor mindig az adott helyre kellene tenni a
DTD állományokat.Visszaváltás az SGML
használatáraAz alapismeretek tárgyalása során
már korábban szóba került, hogy az SGML
csak a dokumentumtípus-deklaráció
leírásához használatos. Ez azonban
nem tökéletesen igaz, mivel léteznek olyan
SGML-beli szerkezetek, amelyeket magukban a dokumentumokban is fel
tudunk használni. Például a dokumentumokba
beszúrhatóak az elemzõ
részérõl figyelmen kívül
hagyandó megjegyzések. Ezeket az SGML
szabályai szerint adjuk meg. A többi szerkezet
használatára kicsivel késõbb mutatunk
még példákat.Nyilvánvalóan valamilyen módon
jeleznünk kell az SGML feldolgozónak, hogy a soron
következõ elem tartalmát hagyja figyelmen
kívül, de az elemzõ ezt alapvetõen az SGML
alapján észleli.Az ilyen részeket <! …
> formában jelöljük. Az
elhatárolók között szabályos SGML
szerkezetek szerepelhetnek, pontosan olyanok, amelyeket az DTD-k
készítésénél is
alkalmaznak.Az elõbb bemutatott DOCTYPE deklaráció
erre éppen remek példaként
szolgálhat.MegjegyzésekA megjegyzések tehát SGML-beli
konstrukciók, és általában csak a
DTD-ben érvényes a használatuk. A ban viszont láthattuk,
hogy az SGML szerkezetei akár a dokumentumokban is
használhatóak.Az SGML megjegyzéseket
-- szimbólumok
használatával határolhatjuk el. A
szimbólum elsõ elõfordulásával
kezdjük a megjegyzést és a másodikkal
zárjuk le.Általános SGML megjegyzés<!-- próba megjegyzés --> Most a megjegyzés belsejében vagyunk
]]>A két kötõjel használataA Postscript és PDF változatok esetén
kisebb problémák jelentkeznek ennél a
példánál, ugyanis bennük csak egyetlen
kötõjel fog látszani a <!
- és > szimbólumok
+ és > szimbólumok
mellett.A forráskódban azonban két
- (kötõjel) szimbólumot
kell használnunk,
nem pedig egyet. A Postscript és
PDF változatokban az eredetileg két
kötõjelet összevonják egyetlen hosszabb
kötõjellé, ezáltal elrontják az
iménti példát.A dokumentum HTML, szöveges és RTF
változatait ez nem érinti.
]]>
Ha dolgoztunk már korábban HTML kóddal,
akkor elõfordulhat, hogy más meghatározást
láttunk a megjegyzésekre. Ezért
tévesen azt gondolhattuk, hogy a megjegyzéseket a
<!-- karaktersorozat vezeti be, és
csak a --> zárhatja le.Valójában viszont nem
így van. Sok böngészõ hibás HTML
elemzõt tartalmaz, ezért ezt érvényesnek
fogadják el. A Dokumentációs Projektben
használt SGML elemzõk azonban ennél sokkal
szigorúbbak és az ilyen hibás
dokumentumokat visszadobják.Hibás SGML megjegyzések Most egy megjegyzés belsejében vagyunk
KÍVÜL VAGYUNK A MEGJEGYZÉSEN!
ismét megjegyzésben vagyunk ]]>Az SGML elemzõ ezt valahogy így fogja
értelmezni:<!KÍVÜL VAGYUNK A MEGJEGYZÉSEN>Ez nem szabályos SGML és
ráadásul félrevezetõ hibaüzenetet
eredményez. Ez nem szép dolog! ]]>A példa szövege szerint sem
javasolt ilyen megjegyzéseket írni.]]>Ez már (valamivel) értelmesebb
megoldás, de még feláll a veszélye,
hogy megtéveszti az SGML-ben járatlan
olvasókat.Egy kis gyakorlás…Tegyünk néhány megjegyzést a
korábban készített
próba.sgml
állományunkba, majd az
nsgmls segítségével
ellenõrizzük, hogy közben
érvényes marad.Tegyünk néhány
érvénytelen megjegyzést a
próba.sgml
állományba, majd nézzük meg, hogy
az nsgmls milyen hibaüzeneteket ad
rájuk.EgyedekAz egyedek felhasználásával neveket
tudunk rendelni a tartalom egyes darabjaihoz. Az SGML elemzõ a
dokumentum feldolgozása közben ezeket az egyedeket
megtalálja és helyükre beszúrja az
általuk hivatkozott tartalmat.Ezzel az SGML dokumentumokban könnyedén ki tudunk
alakítani újrafelhasználható, gyorsan
cserélhetõ tartalmat, illetve kizárólag
ezen a módon lehet jelölõkkel ellátott
SGML állományokat beletenni egy másik
hasonló SGML állományba.Az egyedek kétfajta típusa létezik,
amelyek mindegyike eltérõ helyzetekben
használható: ezek az
általános egyedek és a
paraméteregyedek.Általános egyedekÁltalános egyedeket nem lehet SGML
környezetben használni (habár definiálni
igen), egyedül magában a dokumentumban. Vessük
össze a paraméteregyedekkel.Mindegyik általános egyed rendelkezik egy
névvel. Így tudunk hivatkozni egy
általános egyedre (ezáltal mindarra a
szövegre, amelyet képvisel a dokumentumunkban):
&egyednév;.
Vegyük például, hogy van egy
jelenlegi.valtozat nevû egyedünk,
amely a termékünk jelenlegi
verziószámát helyettesíti be a
szövegbe. Ezt így fogalmaznánk meg:]]>A termékünk jelenlegi változata a(z)
]]>Így a verziószám
változásakor egyszerûen csupán az
általános egyed definícióját
kell megváltoztatni, majd újra feldolgozni a
dokumentumot.Az általános egyedek
segítségével olyan karakterek is
megadhatóvá válnak, amelyeket
egyébként nem tudnánk SGML dokumentumokban
leírni. Például a <
és a & normális esetben
nem lehet része SGML dokumentumoknak. Amikor ugyanis az
SGML elemzõ egy < szimbólumot
észlel, feltételezi, hogy ezzel egy (kezdõ-
vagy záró) címke kezdõdik, illetve
amikor pedig egy & szimbólumot
talál, akkor a következõ lépésben
egy egyed nevét várja.Szerencsére ezek a szimbólumok a
szövegben bármikor kiválthatóak az
< és
& általános egyedek
használatával.Általános egyedek csak SGML környezetben
definiálhatóak. Ezeket általában
közvetlenül a DOCTYPE deklaráció
után sorolják fel.Általános egyedek
definíciója
]>]]>Figyeljük meg, hogy a DOCTYPE
deklarációt a sor végén egy
szögletes nyitó zárójel
elhelyezésével kibõvítettük: a
kiegészítésként felvett két
egyedet az utána következõ két sorban
definiáltuk, majd bezártuk a szögletes
zárójelet és DOCTYPE
deklarációt.A szögletes zárójelek
szükségesek ahhoz, hogy jelezzük a DOCTYPE
deklarációban megadott DTD további
kiegészítéseit.ParaméteregyedekAz általános egyedekhez
hasonlóan a paraméteregyedek is
újrafelhasználható szövegrészek
elnevezését engedik meg. Miközben azonban az
általános egyedek csak a dokumentumokban
alkalmazhatóak, addig a paraméteregyedek csak
SGML környezetekben
használhatóak.A paraméteregyedek az általános
egyedekhez hasonló módon
definiálhatóak, az
&egyednév;
felírás helyett azonban az
%egyednév;
alakban tudunk rájuk hivatkozni. Továbbá a
definíciójukban az ENTITY
kulcsszó és az egyed neve közé be kell
szúrni a % (százalékjel)
szimbólumot.Paraméteregyedek megadásavalami
szöveg
más
]>]]>Ez most még nem tûnik
különösebben hasznosnak. Késõbb
viszont majd az lesz.Egy kis gyakorlás…Tegyük bele a
próba.sgml
állományunkba a következõ
általános egyedet:
]>
]]>Egy minta HTML állomány
]]>Ebben a bekezdésben van egy kis szöveg.
]]>Ez a bekezdés még tartalmaz némi szöveget.
]]>Ennek a bekezdésnek jobbra zártnak kellene lennie.
]]>A dokumentum jelenlegi változata:
]]>
Az nsgmls használatával
vizsgáltassuk meg a dokumentum
érvényességét.Töltsük be a
próba.sgml
állományt a böngészõnkbe
(elõfordulhat, hogy másolatot kell
készíteni róla
próba.html néven, mert a
böngészõnk csak így ismerné
fel HTML dokumentumként).Hacsak a böngészõnk nem annyira
fejlett, a dokumentumban a &valtozat;
egyedhivatkozás nem fog lecserélõdni a
verziószámra. A böngészõk
többségében nagyon primitív
elemzõk találhatóak, amelyek nem
képesek rendesen kezelni az SGML
dokumentumokatMicsoda szégyen! Képzeljük csak
el, mennyi gondot és ügyeskedést
(mint például a szerver oldalán
beemelt állományokat) el tudnánk
kerülni, ha rendesen
támogatnák..A megoldást a dokumentum
normalizálása jelenti,
amelyet egy SGML normalizálóval tudunk
elvégezni. A normalizáló beolvas egy
érvényes SGML állományt
és eredményként egy szintén
érvényes, de valamilyen módon
átalakított SGML állományt
készít. Az SGML állományok
átalakításának egyik ilyen
módja a dokumentumban található
egyedhivatkozások helyettesítése az
általuk képviselt szöveggel.Erre a célra az sgmlnorm
használható.&prompt.user; sgmlnorm próba.sgml > próba.htmlEnnek hatására
próba.html néven
létrejön a dokumentum normalizált (vagyis
a kifejtett egyedhivatkozásokkal létrehozott)
változata, és most már
betölthetõ a böngészõnkbe.Ha most megnézzük az
sgmlnorm által gyártott
végeredményt, akkor tapasztalhatjuk, hogy az
elején nem szerepel DOCTYPE deklaráció.
Ezt a kapcsolóval tehetjük
hozzá:&prompt.user; sgmlnorm -d próba.sgml > próba.htmlÁllományok tartalmának
elérése egyedeken keresztülAz (általános
és paraméter-)
egyedek különösen hasznosak olyan esetekben, amikor
állományok tartalmát akarjuk beilleszteni
másik állományokba.Állományok tartalmának
elérése általános egyedekkelTegyük fel, hogy egy könyvön dolgozunk az
SGML felhasználásával, amelyet
fejezetenként állományokra bontottunk,
fejezet1.sgml,
fejezet2.sgml stb. néven, illetve a
könyv.sgml állomány
tartalmazza ezeket a fejezeket.Az állományok tartalmát a
SYSTEM kulcsszó
használatával tudjuk egyedek
értékeként megadni. Ennek
hatására az SGML elemzõ a megadott
állomány tartalmát adja az egyed
értékének.Állományok tartalmának
elérése általános egyeddel
]>
&fejezet.1;
&fejezet.2;
&fejezet.3;
]]>Amikor általános egyedeken keresztül
illesztünk be állományokat egy másik
állományba, a beillesztett
állományok (amilyen például a
fejezet1.sgml,
fejezet2.sgml és a többi)
nem kezdõdhetnek DOCTYPE
deklarációval. Ez szintaktikai hibát
eredményez!Állományok tartalmának
elérése paraméteregyedekkelEmlékezzünk vissza, hogy a
paraméteregyedek csak SGML környezetben
alkalmazhatóak. Miért akarnánk
állományokat beilleszteni egy SGML
környezetbe?Így tudunk gondoskodni az általános
egyedek
újrafelhasználhatóságáról.Tegyük fel, hogy a dokumentumunkban rengeteg fejezet
található és ezeket két
különbözõ könyvben is
felhasználtuk, azonban eltérõ
stílusban.A könyvek elején fel lehetne sorolni az
egyedeket, de ezzel viszont gyorsan kezelhetetlenné
válnának.Ehelyett csak tegyünk az általános
egyedekre vonatkozó definíciókat egyetlen
állományba és a dokumentumunkban erre
építve paraméteregyedek
beiktatásával végezzük az adott
állományok beillesztését.Állományok beillesztése
paraméteregyedekkelElõször vegyük az egyedek
definícióit egy külön
fejezetek.ent állományba.
Ebben a következõek
találhatóak:
]]>Most pedig hozunk létre egy paraméteregyedet
az állomány tartalmának
hivatkozására. Ezután az iménti
paraméteregyeddel illesszük be az
állományt a dokumentumba, így az
összes általános egyed
elérhetõvé válik. Innentõl
már a megszokott módon használhatjuk az
általános egyedeket: A fejezetekhez tartozó egyedek betöltéséhez definiálunk egy paraméteregyedet
%fejezetek;
]>
&fejezet.1;
&fejezet.2;
&fejezet.3;
]]>Egy kis gyakorlás…Állományok beillesztése
általános egyedek
segítségévelHozzunk létre három
állományt: bekezd1.sgml,
bekezd2.sgml és
bekezd3.sgml.Töltsük fel ezeket valami hasonló
szöveggel:]]>Ez az elsõ bekezdés.]]>Szerkesszük át a
próba.sgml
állományunk tartalmát az
alábbi módon:
]>
]]>Próba HTML állomány
]]>A dokumentum jelenlegi változata:
&bekezd1;
&bekezd2;
&bekezd3;
]]>
A próba.sgml
normalizálásával hozzuk létre a
próba.html
állományt.&prompt.user; sgmlnorm -d próba.sgml > próba.htmlNyissuk meg a böngészõnkkel a
próba.html
állományt és ellenõrizzük,
hogy a
bekezdn.sgml
állományok tartalma bekerült a
próba.html
állományba.Állományok beillesztése
paraméteregyedek
segítségévelEhhez elõször végezzük el az
elõbbi lépéseket.Szerkesszük át a
próba.sgml
állományt a következõeknek
megfelelõen: %egyedek;
]>
]]>Próba HTML állomány
]]>A dokumentum jelenlegi változata:
&bekezd1;
&bekezd2;
&bekezd3;
]]>
Hozzunk létre egy új
állományt egyedek.sgml
néven a következõ tartalommal:
]]>A próba.sgml
normalizálásával állítsuk
elõ a próba.html
állományt:&prompt.user; sgmlnorm -d próba.sgml > próba.htmlNyissuk meg a böngészõnkben a
próba.html
állományt és ellenõrizzük,
hogy a
bekezdn.sgml
állományok szerepelnek a
próba.html
állományban.Jelölt szakaszokAz SGML tartalmaz olyan megoldást, amellyel a
dokumentum bizonyos részeit speciális
feldolgozásra jelölhetjük meg. Ezeket nevezik
jelölt szakaszoknak.A jelölt szakaszok
felépítése<![ KULCSSZÓ [
A jelölt szakasz tartalma.
]]>A korábbiakban tapasztaltak szerint
természetesen a jelölt szakaszokat az SGML
részeként a <!
szimbólummal vezetjük be.Ezt követõen az elsõ szögletes
zárójel határolja el a jelölt
szakaszt.Az elemzõ a feldolgozás során a
KULCSSZÓ alapján
értelmezi az adott jelölt szakaszt.A második szögletes zárójellel
kezdõdik a jelölt szakasz tényleges
tartalma.A jelölt szakasz az iménti két
szögletes zárójel
lezárásával ér véget, majd a
> szimbólummal visszaváltunk
az SGML környezetbõl a dokumentum
környezetébe.A jelölt szakaszok kulcsszavaiCDATA, RCDATAA kulcsszavakkal a jelölt szakasz tartalmi
modelljét tudjuk
megváltoztatni.Az SGML elemzõ a dokumentum feldolgozása
során tárol egy ún. tartalmi
modellt.Röviden úgy foglalhatnánk össze,
hogy ez a tartalmi modell írja le az elemzõ
részérõl várt
információkat és azok
feldolgozását.A két ilyen leghasznosabb tartalmi modell a
CDATA és az
RCDATA.A CDATA jelentése
Character Data, vagyis karakteres
adat. Az elemzõ ebben a tartalmi modellben
kizárólag csak karaktereket lát. Ebben a
modellben a < és
& szimbólumok
elveszítik különleges
jelentésüket.Az RCDATA jelentése
Entity references and character data, vagyis
egyedhivatkozások és karakteres
adatok. Ebben a tartalmi modellben az elemzõ
karakterekre és egyedekre
számít. A <
szimbólum ilyenkor elveszíti a
különleges jelentését, azonban az
& továbbra is
általános egyedek kezdetét fogja
jelölni.Ezek használata különösen hasznos
abban az esetben, amikor rengeteg <
és & karaktert tartalmazó
nyers szöveget akarunk beilleszteni valahova a
dokumentumba. Természetesen ez megoldható
úgy is, ha minden <
szimbólumot <
karaktersorozattá, illetve minden
& szimbólumot
& karaktersorozattá
alakítunk, de sokkal könnyebb ezeket a szakaszokat
CDATA típusúnak
megjelölni. Az SGML elemzõk ilyenkor tehát
figyelmen kívül hagyják a tartalomban
talált < és
& szimbólumokat.A CDATA vagy
RCDATA kulcsszavakat bemutató SGML
példákkal kapcsolatban megjegyezzük, hogy
a CDATA szakaszok tartalma nem
érvényesítõdik. Az így
beillesztett SGML szöveget valamilyen más
módon kell ellenõrizni. Például
írjuk meg a karakteres szakasz tartalmát egy
másik dokumentumban, ellenõriztessük le,
majd másoljuk be a CDATA
részbe.CDATA típusú jelölt szakaszok
használata<para>Ebben a példában láthatjuk hogyan tudunk sok <literal><</literal>
és <literal>&</literal> szimbólumot tartalmazó szöveget elhelyezni
a dokumentumunkban. A minta most egy HTML kódrészlet lesz, az ezt övezõ
szöveg (<para>) és (<programlisting>) pedig DocBook.</para>
<programlisting>
<![ CDATA [ ]]>Ezzel a példával mutatjuk HTML elemek használatát a
dokumentumban. Mivel elég sok relációjelet kell ilyenkor megadni,
sokkal egyszerûbb azt mondani, hogy legyen az egész példa egy
CDATA szakaszban, mintsem végig egyedekkel jelöljük a balra és
jobb nyitó relációjeleket.
]]>Ez egy listaelem
]]>Ez egy másik listaelem
]]>Ez már egy harmadik listaelem
]]>Itt a vége a példának.]]>
]]>
</programlisting>
Ha megnézzük a dokumentum
forrását, láthatjuk a
jelölésnél alkalmazott
megoldásokat.INCLUDE és
IGNOREAz INCLUDE kulcsszó
megadásakor a jelölt szakasz teljes tartalma
feldolgozódik. Ezzel szemben viszont az
IGNORE kulcsszó esetén a
jelölt szakasz tartalmát figyelmen
kívül fogja hagyni az elemzõ és
ezáltal nem dolgozódik fel, tehát nem
jelenik meg az eredményben.Az INCLUDE és
IGNORE használata jelölt
szakaszokban<![ INCLUDE [
Ez a szöveg feldolgozódik és beillesztõdik.
]]>
<![ IGNORE [
Ez a szöveg nem dolgozódik fel és nem is illesztõdik be.
]]>Ezek önmagukban nem túlzottan hasznosak,
elvégre, ha el akarunk távolítani egy
szövegrészt a dokumentumunkból, akkor vagy
egyszerûen kivágjuk, vagy megjegyzésbe
tesszük.Sokkal hasznosabbá válhatnak viszont a
számunkra, ha észrevesszük, hogy paraméteregyedek
segítségével mindez
vezérelhetõ. Emlékezzünk vissza, hogy
a paraméteregyedek csak SGML környezetben
használhatóak, és a jelölt
szakaszokhoz tartozó kulcsszavak
pontosan egy ilyen SGML környezetben
vannak.Például tegyük fel, hogy egy
dokumentáció nyomtatott és elektronikus
változatán dolgozunk egyszerre. Az elektronikus
változatban szeretnénk azonban
néhány olyan elemet is betenni, amelyeket nem
akarunk megjelentetni nyomtatásban.Hozzunk létre egy paraméteregyedet és
legyen az értéke INCLUDE.
Készítsük el a dokumentumot, és
jelölt szakaszokkal határoljuk el a csak az
elektronikus változat megjelenõ részeket.
Ezekben a jelölt szakaszokban a kulcsszavak
helyére írjuk be az elõbbi
paraméteregyedet.Amikor a dokumentumot nyomtatásra akarjuk
elõkészíteni, akkor legyen a
paraméteregyed értéke
IGNORE, majd dolgozzuk fel újra az
egész dokumentumot.Jelölt szakaszok vezérlése
paraméteregyeddel<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % elektronikus.valtozat "INCLUDE">
]]>
...
<![ %elektronikus.valtozat [
Ez a rész csak a dokumentum elektronikus változatában fog megjelenni.
]]>A nyomtatott változat
elõkészítésekor így
állítsuk át az egyed
értékét:<!ENTITY % elektronikus.valtozat "IGNORE">A dokumentum újbóli feldolgozása
során a jelölt szakaszok a
%elektronikus.valtozat
értékét fogják
kulcsszóként megkapni, és így
kimaradnak.Egy kis gyakorlás…A következõ szöveggel hozzunk
létre egy állományt
szakasz.sgml néven:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % szoveges.kimenet "INCLUDE">
]>
<html>
<head>
<title>Példa a jelölt szakaszok használatára</title>
</head>
<body>
<p>Ez a bekezdés <![ CDATA [sok-sok <
karaktert (< < < < <) tartalmaz, így érdemesebb
CDATA szakaszba tenni]]>.</p>
<![ IGNORE [
<p>Ez a bekezdés egyértelmûen nem fog látszódni az eredményben.</p>
]]>
<![ [
<p>Ez a bekezdés nem fog feltétlenül megjelenni az eredményben.</p>
<p>A konkrét megjelenését a
paraméteregyed értéke befolyásolja.</p>
]]>
</body>
</html>A &man.sgmlnorm.1; használatával
normalizáljuk ezt az állományt, majd
elemezzük az eredményt. Nézzük meg
melyik bekezdések tûntek el, melyek jelentek meg
és mi történt a CDATA szakaszok
tartalmával.A szoveges.kimenet
értéke legyen INCLUDE az
IGNORE helyett. Futassuk le újra
így a normalizálást és
vizsgáljuk meg mi változott az
eredményben.BefejezésEzzel befejeztük az SGML alapismeretek
bemutatását. A helyigény, illetve a
bonyolultság visszaszorítása
érdekében bizonyos témákkal teljes
mélységében (vagy egyáltalán)
nem foglalkoztunk, azonban az iménti szakaszokban
elkerült SGML ismeretek elegendõek lesznek az FDP
által készített dokumentáció
megértéséhez.