Am Anfang jedes Dokuments muss der Name der dem Dokument zugrundeliegenden DTD angegeben werden. Mit Hilfe dieser Information können SGML-Parser die verwendete DTD feststellen und prüfen, ob das Dokument zu ihr konform ist.
Üblicherweise steht diese Information in einer Zeile, die als DOCTYPE-Deklaration bezeichnet wird.
Eine Deklaration für ein HTML-Dokument, das nach den Vorgaben der DTD für HTML 4.0 geschrieben wurde, sieht so aus:
und besteht aus verschiedenen Teilen.
<!
Die Zeichenkette <!
dient hier
als Indikator, dass es sich bei
diesem Ausdruck um eine SGML-Deklaration handelt und diese
Zeile den Dokumententyp festlegt.
DOCTYPE
Zeigt an, dass dies die SGML-Deklaration für den Dokumententyp ist.
html
Nennt das erste Element, das im Dokument auftaucht.
PUBLIC "-//W3C//DTD HTML 4.0//EN"
Nennt den Formalen Öffentlichen Bezeichner [5] der DTD des Dokuments. Diese Information wird von SGML-Parsern ausgewertet, um die von dem Dokument referenzierte DTD zu bestimmen.
Das Schlüsselwort PUBLIC
gehört nicht zum öffentlichen Bezeichner,
sondern legt fest, wie ein SGML-Parser die DTD finden
kann. Alternative Wege eine DTD zu referenzieren werden
später
gezeigt.
>
Schließt den mit <!
begonnenen
Ausdruck ab.
Dieser Abschnitt braucht nicht unbedingt zu gelesen zu werden. Dennoch ist es empfehlenswert, da er nützliche Hintergrundinformationen enthält, die hilfreich sein können, falls der SGML-Prozessor die genutzte DTD nicht finden kann.
Jeder öffentliche Bezeichner muss eine bestimmte Syntax haben, die wie folgt lautet:
Besitzer
//Schlüsselwort
Beschreibung
//Sprache
"Besitzer
Nennt den Besitzer des öffentlichen Bezeichners.
Falls diese Zeichenkette mit „ISO“
beginnt, gehört der Bezeichner dem ISO-Komitee.
Der Bezeichner "ISO 8879:1986//ENTITIES Greek
Symbols//EN"
nennt „ISO
8879:1986“ als den Besitzer des Satzes von
Entitäten für griechische Zeichen. ISO
8879:1986 ist die ISO-Bezeichnung für den
SGML-Standard.
Beginnt die Zeichenkette nicht mit
„ISO“, sieht sie entweder so
-//
oder so
Besitzer
+//
aus. Beide Varianten unterscheiden sich also nur durch
das anfängliche Besitzer
+
bzw.
-
.
Sofern am Anfang ein -
steht, ist
der Bezeichner nicht öffentlich registriert, steht
hingegen ein +
am Anfang, ist er
registriert.
Im ISO-Standard ISO 9070:1991 wurde festgelegt, wie registrierte Namen erzeugt werden können. Unter anderem können sie von den Bezeichnungen von ISO-Publikationen, von ISBN-Nummern oder einer Organisationsbezeichnungen entsprechend ISO 6523 abgeleitet werden. Anträge für neue offiziell registrierte Bezeichner werden vom ISO-Komitee an das American National Standards Institute (ANSI) weitergeleitet.
Da das FreeBSD-Projekt seine Bezeichner nicht hat
registrieren lassen, ist der Besitzer
-//FreeBSD
. Unter anderem kann man
daran auch sehen, dass das W3C sich nicht hat
registrieren lassen.
Schlüsselwort
Es gibt verschiedene Schlüsselwörter mit
denen man die Art der gegebenen Informationen beschreiben
kann. Einige der üblichsten sind
DTD
, ELEMENT
,
ENTITIES
und TEXT
.
DTD
wird nur für Dateien mit
DTDs verwandt, ELEMENT
findet
für Dateien mit Fragmenten von DTDs Verwendung, die
nur Deklarationen für Entitäten und Elemente
enthalten. TEXT
wird für
SGML-Inhalte (Texte und Tags) verwendet.
Beschreibung
Eine frei wählbare Beschreibung des Inhalts der referenzierten Datei. Möglich sind hier Versionsnummern oder ein kurzer und sinnvoller Text, der innerhalb der SGML-Welt eindeutig ist.
Sprache
Ein ISO-Code aus zwei Buchstaben, der die für
die Datei verwendete Sprache nennt.
EN
steht hier für Englisch,
DE
für Deutsch.
Wenn man die oben beschriebene Syntax für Bezeichner verwendet und ein Dokument durch einen SGML-Prozessor schickt, muss dieser die Möglichkeit haben, den Bezeichner auf eine real existierende Datei abzubilden, die die benötigte DTD enthält.
Einer der möglichen Wege hierfür sind
Katalogdateien. Eine solche Datei, die üblicherweise
catalog
heißt, besteht aus
einzelnen Zeilen, die Bezeichner auf Dateinamen abbilden.
Enthält ein Katalog beispielsweise die Zeile
kann ein SGML-Prozessor darüber feststellen, dass die
benötigte DTD in der Datei strict.dtd
im Unterverzeichnis 4.0
des Verzeichnisses des Katalogs zu finden ist.
Ein gutes Beispiel für einen Katalog ist
/usr/local/share/xml/html/catalog
.
Diese Datei enthält den Katalog für alle HTML
DTDs, die im Zuge der Installation von textproc/docproj
installiert
wurden.
Natürlich muss einem SGML-Prozessor noch mitgeteilt werden können, wo er seine Kataloge finden kann. Viele Programme bieten hierfür Kommandozeilenoptionen an, über die man einen oder mehrere Kataloge angeben kann.
Zusätzlich besteht noch die Möglichkeit mit
der Umgebungsvariablen SGML_CATALOG_FILES
auf
SGML-Kataloge zu verweisen. Die Einträge von
SGML_CATALOG_FILES
müssen aus den
vollständigen Pfadnamen der Kataloge, jeweils durch
Komma getrennt, bestehen.
Üblicherweise werden die folgenden Kataloge über
SGML_CATALOG_FILES
für
die Arbeit an den Dokumenten des FDPs eingebunden:
/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
Allerdings sollte das schon geschehen sein.
Anstatt mit einem Bezeichner die zum Dokument gehörende DTD zu referenzieren, kann auch explizit auf die Datei der DTD verwiesen werden.
Die Syntax der DOCTYPE-Deklaration ist in diesem Falle anders:
Das Schlüsselwort SYSTEM
legt
fest, dass ein SGML-Prozessor die DTD auf
„systemspezifische“ Art und Weise bestimmen soll.
Meistens, aber nicht immer, wird so auf eine Datei im
Dateisystem verwiesen.
Allerdings sollte man öffentliche Bezeichner aus
Gründen der Portabilität bevorzugen, da man so
nicht eine Kopie der DTD mit dem Dokument selber verteilen
muss, beziehungsweise da man, wenn man mit
SYSTEM
arbeitet, nicht davon ausgehen kann,
dass die benötigte DTD auf anderen Systemen genau
unter dem gleichen Pfad verfügbar ist.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.