3.3. A DOCTYPE deklarációk

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.

3.3.1. Formális publikus azonosítók

Megjegyzés: 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.

3.3.1.1. Katalógusok

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/sgml/html/catalog állományban. Ez tartalmazza a textproc/docproj portból telepített HTML DTD-kre vonatkozó állományinformációkat.

3.3.1.2. 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/catalog

Ezt egyébként korábban már elvégeztük.

3.3.2. Azonosítók helyett

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): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.