Au début de chaque document que vous rédigez, vous devez préciser le nom de la DTD à laquelle le document se conforme. Cela pour que les analyseurs syntaxiques SGML la connaissent et puissent valider le document.
Cette information est habituellement donnée sur une seule ligne, dans la déclaration DOCTYPE.
Voici une déclaration typique pour un document conforme à la version 4.0 de la DTD HTML :
Cette ligne a plusieurs composants distincts :
<!
C'est l'indicateur qui dit que c'est une déclaration SGML. Cette ligne définit le type de document.
DOCTYPE
Précise que c'est la déclaration SGML du type de document.
html
Définit le premier élément qui apparaîtra dans le document.
PUBLIC "-//W3C//DTD HTML 4.0//EN"
Donne le Formal Public Identifier (FPI) - Identifiant Public Officiel - de la DTD à laquelle le document se conforme.
PUBLIC
n'appartient pas au FPI, mais
indique au processeur SGML comment trouver la DTD référencée par
le FPI. Les autres façons de dire à l'analyseur SGML comment
trouver la DTD sont données plus loin.
>
Retour au document.
Vous n'avez pas besoin de connaître ce qui suit, mais ce n'est n'est pas inutile, et cela peut vous aider à résoudre des problèmes, si votre processeur SGML ne trouve pas la DTD que vous utilisez.
Les FPIs doivent respecter une syntaxe précise. La voici :
Propriétaire
//Mot-Clé
Description
//Langue
"Propriétaire
Indique qui détient le FPI.
Si la chaîne de caractères commence par “ISO”,
c'est un FPI ISO. Par exemple, le FPI "ISO
8879:1986//ENTITIES Greek Symbols//EN"
donne
ISO 8879:1986
comme propriétaire du jeu
d'entités pour les lettres grecques. ISO 8879:1986 est le
numéro ISO du standard SGML.
Sinon, cette chaîne sera de la forme
-//
ou
Propriétaire
+//
(remarquez que la seule différence est le Propriétaire
+
ou -
du début).
Si la chaîne commence par un -
, c'est que
le propriétaire n'est pas enregistré, il l'est si elle commence
par un +
.
L'ISO 9070:1991 définit comment sont générés les noms enregistrés ; ils peuvent dériver du numéro d'une publication ISO, d'un code ISBN ou d'un code d'organisation affecté selon l'ISO 6523. De plus, il pourrait y avoir une autorité d'enregistrement pour l'affectation de ces noms. Le conseil ISO a délégué cela à l'American National Standards Institute (ANSI) - Institut National Américain des Standards.
Comme le Projet FreeBSD n'est pas enregistré, la chaîne
utilisée est -//FreeBSD
. Comme vous pouvez
vous en rendre compte, le W3C n'est pas non plus un propriétaire
enregistré.
Mot-Clé
Il y a plusieurs mots-clés qui définissent le type
d'information dans le fichier. Les mots-clés les plus courants
sont : DTD
, ELEMENT
,
ENTITIES
et TEXT
.
DTD
ne sert que pour les DTD,
ELEMENT
sert habituellement pour les extraits
de DTD qui ne contiennent que des entités ou des déclarations
d'éléments. TEXT
sert pour le contenu SGML
(texte et marques).
Description
La description que vous souhaitez donner du contenu du fichier. Cela peut inclure des numéros de version et n'importe quel texte court qui ait un sens et soit unique au système SGML.
Langue
C'est une code ISO de deux caractères qui identifie la
langue utilisée dans le fichier. Pour l'anglais, c'est
EN
.
Si vous avez utilisé la syntaxe décrite plus haut et essayé d'utiliser un processeur SGML pour traiter votre document, il aura besoin de convertir le FPI en un nom de fichier sur votre ordinateur qui décrive la DTD.
Vous pouvez pour cela vous servir d'un fichier catalogue
(habituellement appelé catalog
). Il contient
des lignes qui donnent les correspondances entre FPIs et noms de
fichiers. Par exemple, s'il y a la ligne :
le processeur SGML cherchera la DTD dans le fichier
strict.dtd
du sous-répertoire
4.0
où se trouve le fichier
catalog
qui comporte cette ligne.
Jettez un oeil au fichier
/usr/local/share/xml/html/catalog
. C'est le
fichier catalogue pour les DTDs HTML qui ont été installées par le
logiciel porté textproc/docproj
.
Pour trouver un fichier catalog
, votre
processeur SGML doit savoir où chercher. La plupart d'entre eux ont
des paramètres de leur ligne de commande pour donner le chemin
d'accès à un ou plusieurs catalogues.
Vous pouvez par ailleurs définir
SGML_CATALOG_FILES
pour désigner ces fichiers. Cette
variable d'environnement doit contenir une liste de fichiers
catalogues (donnés par leurs chemins d'accès complets) séparés par
des points-virgules.
Habituellement, vous incluerez les fichiers suivants :
/usr/local/share/xml/docbook/catalog
/usr/local/share/xml/html/catalog
/usr/local/share/xml/iso8879/catalog
/usr/local/share/xml/jade/catalog
Au lieu d'utiliser un FPI pour préciser la DTD utilisée (et donc le fichier qui contient la DTD), il est possible de donner explicitement le nom du fichier.
La syntaxe pour le faire est légèrement différente :
Le mot-clé SYSTEM
indique que le processeur
SGML doit localiser le fichier d'une façon qui dépend du système. Cela
signifie habituellement (mais pas toujours) que la DTD sera définie
par un nom de fichier.
Il est préférable d'utiliser des FPIs pour des raisons de
portabilité. Vous ne voulez pas livrer un exemplaire de la DTD avec
votre document, et si vous avez utilisé l'identifiant
SYSTEM
, il faudra que chacun ait ses DTDs aux mêmes
endroits.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.