A 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:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
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.
DOCTYPE
A dokumentumtípus SGML-beli deklarációját vezeti be.
html
A dokumentumban elsőként megjelenő elemet nevezi meg.
PUBLIC "-//W3C//DTD HTML 4.0//EN"
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.
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
"
Tulajdonos
Ez 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 FreeBSD Projekt nem regisztrálta
magát, a hozzá tartozó
érték tehát a
-//FreeBSD
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ás
Minden 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.
Nyelv
Ké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
.
Az 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/xml/html/catalog
állományban. Ez tartalmazza a textproc/docproj portból
telepített HTML DTD-kre vonatkozó
állományinformációkat.
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/xml/docbook/4.1/catalog
/usr/local/share/xml/html/catalog
/usr/local/share/xml/iso8879/catalog
/usr/local/share/xml/jade/catalog
Ezt egyébként korábban már elvégeztük.
A 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:
<!DOCTYPE html SYSTEM "/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.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.