<!doctype linuxdoc system>

<article>

<title>HTML Validation HOWTO
<author>Keith M. Corbett &lt;kmc@specialform.com&gt;
<date>v0.2, 29 Octobre 1995
Traduction française: Thierry Bézecourt, Avril 1999.

( 14 Octobre 1997 : La mini-HOWTO Linux HTML Validation n'est plus
maintenue par son auteur. Si vous souhaitez vous en occuper, en
français ou en anglais, merci de contacter
&lt;gregh@sunsite.unc.edu&gt; )

<abstract> 
Cette documentation a pour objet d'expliquer l'utilisation
du programme nsgmls afin de vérifier qu'un document HTML est conforme
à la définition de type de document (ou "DTD") HTML 2.0. Parmi les
définitions de HTML à partir de SGML, ce DTD est la plus fréquemment
adoptée. Il définit ainsi un sous-ensemble du balisage HTML
correspondant à la pratique courante, ayant les meilleures chances de
portabilité sur un nombre important d'agents utilisateurs de HTML (ou
"navigateurs").  
</abstract>

<toc>

<sect>Introduction
<p>
Ceci est un guide d'utilisation de l'analyseur nsgmls pour valider et
traiter des documents HTML.

<sect1>Coûts et bénéfices
<p>
Vous enrichirez vos documents HTML en utilisant toutes les capacités
de SGML. Mais la validation de vos documents par référence au DTD HTML a
un certain nombre d'avantages et d'inconvénients, avant tout parce que
vous avez affaire à un dialecte de HTML plus restreint que celui qui
est utilisé actuellement. Les règles "officielles" spécifiant la
structure d'un document en HTML et les règles concernant le balisage
des données en SGML sont plus strictes que ne l'est la pratique courante
sur le Web.

La premier point, et le plus important, est d'avoir conscience que le
codage HTML correct se réduit à un ensemble normalisé de balises.

Il n'existe pas de DTD couramment accepté qui reflète exactement le
"HTML des navigateurs", tel qu'il est compris par de nombreux
programmes clients de navigation. Pour l'essentiel, le DTD HTML 2.0
contient les balises et les attributs les plus communément utilisés
sur le Web autour de juin 1994. Divers efforts visant à définir un DTD
HTML+ ou HTML 3.0 se trouvent plus ou moins dans une impasse. Et aucun
des DTD en circulation ne reconnaîtra l'ensemble des balises rendues
populaires par des éditeurs de navigateurs comme Netscape et
Microsoft.

<sect1>Pour débuter
<p>
Contrairement à ce que beaucoup de gens croient, il est possible de
travailler en SGML sans y consacrer trop de temps ou d'argent. On peut
mettre en place un environnement de développement solide en utilisant
exclusivement des logiciels disponibles gratuitement sur un grand
nombre de plateformes, y compris Linux, DOS et la plupart des stations
de travail Unix. Grâce à quelques personnes qui s'y sont consacrées,
tous les outils dont vous avez besoin pour travailler en SGML sont
disponibles publiquement sur Internet.

La mise en place de votre environnement (l'analyseur et les
bibliothèques) prend un peu de temps, mais pas autant qu'on pourrait
le croire.

Au cas où vous éprouveriez l'envie de lire un texte d'introduction à
SGML (en anglais) : "SGML: An Author's Guide to the Standard
Generalized Markup Language" par Martin Bryan, ou "Practical SGML" par
Eric van Herwijnen.

<sect>Les Outils
<p>
<sect1>"HTML Check Toolkit"
<p>
Si vous voulez un logiciel s'installant automatiquement et qui soit
bien intégré, récupérez <tt>HTML Check Toolkit</tt> à l'addresse <url
url="http://www.halsoft.com/html-tk/index.html">.

Le seul inconvénient du logiciel HalSoft est qu'il utilise le vieil
analyseur sgmls, qui produit des messages d'erreur parfois (encore)
plus difficiles à comprendre que ceux de nsgmls.

J'ai utilisé nsgmls sur Linux et Windows (3.x et NT) ; il marche en
principe sur de nombreuses autres plateformes.

<sect1>L'analyseur nsgmls
<p>
James Clark a mis au point sun ensemble logiciel nommé <tt>sp</tt>,
qui contient un analyseur et un validateur SGML, nsgmls (c'est le
successeur de l'analyseur sgmls, longtemps considéré comme le
programme de référence).

Pour plus d'informations sur sp, voyez l'URL <url
url="http://www.jclark.com/sp.html">.

Et vous pouvez le télécharger directement depuis <url
url="ftp://ftp.jclark.com/pub/sp/">.

Vouz pouvez peut-être aussi récupérer des fichiers exécutables pour
votre plateforme. Ou bien télécharger le code source, et dans ce cas
suivez les instructions du fichier README pour lancer make.

Il serait utile de créer un répertoire public au sommet de la
hiérarchie, pour y mettre les fichiers relatifs à SGML. Par exemple,
sur mon PC Linux, j'ai plusieurs répertoires pour SGML, dont :

<itemize>
<item>/usr/sgml/bin
<item>/usr/sgml/html
<item>/usr/sgml/sgmls
<item>/usr/sgml/sp
</itemize>

<sect1>Télécharger les spécifications de HTML
<p>
Le projet de norme HTML 2.0 contient le fichier de définitions SGML
dont vous aurez besoin pour utiliser l'analyseur, c'est-à-dire le DTD
(Document Type Definition), la déclaration SGML, et le catalogue
d'entité. Vous pouvez obtenir le texte public de HTML 2.0 à l'adresse

<url url="http://www.w3.org/hypertext/WWW/MarkUp/html-spec/">

Téléchargez et installez les fichiers suivants :

<itemize>
<item>DTD : html*.dtd
<item>Déclaration SGML : html.decl
<item>Catalogue d'entités : catalog
</itemize>

Vous pouvez ajouter deux entrées au catalogue des entités HTML pour
faciliter l'utilisation de nsgmls :

<verb>
   ______________________________________________________________________
           -- catalog: SGML Open style entity catalog for HTML --
           -- $Id: HTML-Validation.sgml,v 1.1.1.1 2003/01/03 02:40:54 traduc Exp $ --
    :
    :
           -- Ajouts pour faciliter l'utilisation de nsgmls --
   SGMLDECL        "html.decl"
   DOCTYPE HTML    "html.dtd"
   ______________________________________________________________________
</verb>

Ou bien vous pouvez créer un second catalogue contenant ces
entrées. Vous passerez ensuite ce catalogue à nsgmls comme argument,
avec l'option -m.

<sect>Analyser un document HTML
<p>
Voici une "recette" pour valider un document unique. Lancez simplement
le programme nsgmls en lui passant le chemin du (ou des) fichier(s) du
catalogue HTML, ainsi que le document :

<verb>
       % nsgmls -s -m /usr/sgml/html/catalog &lt;test.html
</verb>

L'option -s supprime la sortie de l'analyseur (voyez ci-dessous).

<sect1>Entrée de l'analyseur
<p>
Votre document doit être conforme à la norme SGML, ce qui signifie, entre
autres, que le type de document doit être déclaré au début de l'entrée
(vous pouvez contourner cette règle en spécifiant cette information
sur la ligne de commande de nsgmls).

Voici un document HTML simple, qui peut être analysé sans erreur en
suivant les règles que j'ai décrites :

<verb>
   ______________________________________________________________________
   &lt;!doctype html public "-//IETF//DTD HTML 2.0//EN"&gt;
   &lt;html&gt;
   &lt;head&gt;
   &lt;title&gt;Document HTML simple.&lt;/title&gt;
   &lt;/head&gt;
   &lt;body&gt;
   &lt;h1&gt;Document de test&lt;/h1&gt;
   &lt;p&gt;Ceci est un document de test.&lt;/p&gt;
   &lt;/body&gt;
   &lt;/html&gt;
   ______________________________________________________________________
</verb>

<sect1>Sortie de l'analyseur
<p>
La sortie standard du programme nsgmls est une forme concentrée de
l'entrée SGML que les systèmes de traitement peuvent utiliser comme un
analyseur lexical afin de parcourir la structure du document. Pour les
besoins de la validation, vous pouvez oublier la sortie standard et ne
vous occuper que de l'erreur standard.

Si vous souhaitez avoir la sortie complète, ne spécifiez pas l'option
-s et redirigez la sortie vers un fichier

<verb>
       % nsgmls -m /usr/sgml/html/catalog &lt;test.html &gt;test.out
</verb>

<sect1>Messages de l'analyseur
<p>
Les messages d'erreur et d'avertissement de nsgmls peuvent être très
difficiles à déchiffrer. Et vous trouverez un grand nombre d'erreurs
résultant d'un balisage non-conforme.

Pour rediriger les messages vers un fichier, utilisez l'option -f :

<verb>
       % nsgmls -s -m /usr/sgml/html/catalog -f test.err &lt;test.html
</verb>

<sect1>Code de retour
<p>
L'analyseur indique si le document est conforme au DTD HTML de deux
manières :

Code de retour - l'analyseur renvoit un code de sortie de 0 en cas de
succès, différent de 0 sinon.

Sortie - si le document est conforme au DTD, la dernière ligne de la
sortie standard contient un caractère C unique.

<sect>Liens
<p>
"HTML Check Toolkit" de HalSoft se trouve à l'adresse <url
url="http://www.halsoft.com/html-tk/index.html">.

La page de James Clark sur sp se trouve à l'adresse <url
url="http://www.jclark.com/sp.html">.

La page du W3C sur la spécification de HTML se trouve à l'adresse <url
url="http://www.w3.org/hypertext/WWW/MarkUp/html-spec/">.
</article>
