Forum
Posez vos questions, ici

2.Les normes HTML

2.1.Squelette de document HTML

La structure d'un document HTML est la suivante:
<html>
    <head>
        <!-- descriptions et inclusions -->
        <title><!-- titre --></title>
    </head>
    <body>
        <!-- contenu -->
    </body>
</html>
L'ensemble du document est décrit dans une balise html (autrement dit html est la balise racine du document).
Le document est scindé en 2 parties
  • Une première partie, décrite dans une balise head contient des informations de description du document (titre, informations dédiées au navigateur, inclusions).
  • Une seconde partie, décrite dans une balise body héberge le contenu proprement dit du document (autrement dit le texte et sa mise en page).
  • Le texte entre <!-- et --> n'est pas interprété et est considéré comme du commentaire.

2.2.Les normes

Depuis le début des années 1990, le langage HTML a eu bien le temps d'évoluer. Nous en sommes maintenant à la version 4. Entre temps, en 1998, la norme XML est apparue. XML étant une norme pour décrire tout type de documents à base de balises, il a été décidé d'adapter le langage HTML pour écrire une norme HTML conforme à XML. Ainsi est apparu l'XHTML. Nous pouvons considérer aujourd'hui qu'il existe 2 normes HTML: le HTML historique et le XHTML plus rigoureux. Pour simplifier les choses, chacunes se déclinent en 3 variantes... mais, je vous rassure, cela se joue vraiment sur des détails dont les navigateurs se soucient guère.
Il convient donc (en théorie du moins) de préciser, en tête du document, la norme qui a été choisie. Ce qui donnera (typiquement) pour un fichier HTML conforme XHTML 1.0
<?xml version="1.0"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <!-- descriptions et inclusions -->
        <title><!-- titre --></title>
    </head>
    <body>
        <!-- contenu -->
    </body>
</html>
et pour un document simplement conforme HTML 4.01, le strict minimum est le suivant
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<!-- descriptions et inclusions -->
<title><!-- titre --></title>
</head>
<body>
<!--  contenu -->
Comme vous pouvez le constater, le langage HTML est très permissif. En gros, à partir du moment où une balise n'est pas nécessaire à la bonne compréhension, elle devient facultative (c'est le cas, ici, de la balise html, de la balise ouvrante head et la balise fermante body). Mais attention, vous êtes fortement invités à être plus rigoureux que la norme et vous rapprocher autant que possible de la norme XHTML (plus facile à interpréter par les navigateurs).

2.3.Différences HTML 4.01 et XHTML 1.0

Les principales différences entre les 2 normes viennent du fait que HTML n'est pas valide d'un point de vue XML. En conséquence:
  • En XHTML, toute balise ouverte doit être fermée (et réciproquement).
  • En XHTML, les noms des balises doivent être en minuscules (dans la norme HTML la casse n'est pas précisée mais les exemples donnés sont en majuscules généralement).
  • En XHTML, les noms des attributs des balises doivent être en minuscules (dans la norme HTML il est simplement précisé que les attributs doivent être interprétés sans tenir compte de leur casse).
  • En XHTML, les valeurs des attributs doivent être mis entre guillemets.
  • En XHTML, un attribut doit toujours être associé à une valeur (ou inversement). Une balise du type <option selected> valide en HTML doit être remplacée par <option selected="selected">.

2.4.En pratique

En pratique, les navigateurs sont encore plus permissifs que la norme. Ceci est en grande partie due à des raisons historiques (problème de compatibilité avec le code écrit avant la rédaction des dernières normes et concurrence entre les différents navigateurs).
Vous verrez très peu (trop peu) de page web intégrant la ligne DOCTYPE censée préciser la norme choisie. Alors qu'il s'agit de balises théoriquement obligatoires, head, title et body peuvent être allègremment omis pour commencer le document directement avec le contenu, sans que cela ne pose le moindre souci à la plupart des navigateurs.
Ceci étant dit, vous avez tout interêt à respecter la norme (au moins la norme HTML... tout en vous rapprochant au maximum de la norme XHTML). Pour vous aidez, vous pouvez faire valider vos documents HTML ici.
En ce qui nous concerne, nous proposerons généralement du code de type XHTML tout en omettant souvant la partie déclarative (DOCTYPE et éventuellement head) ceci afin de ne présenter que la partie utile des exemples fournis.