Le langage XHTML demande aux développeurs de formuler correctement les documents balisés.

Dans HTML, il était jusqu'alors possible de commettre des fautes syntaxiques dans les documents sans que leur fonctionnement soit réellement perturbé.

Dans le langage XHTML, certaines erreurs autrefois tolérées, sont désormais rédhibitoires à un fonctionnement correct de la page web.

En conséquence, la rédaction des documents XHTML demande plus de précaution et d'application.

La formulation d'un document XHTML doit obéir à plusieurs règles incontournables.

  1. Le chevauchement des éléments est illégal.
    <h1>Eléments <u>correctement emboités</u></h1>
    <h1>Eléments <u>incorrectement emboités</h1></u>
  2. Les noms des éléments et des attributs doivent être écrit en minuscule.
    <p id="p1">Balisage correct</p>
    <p id="p1">Balisage incorrect</p>
  3. Toutes les balises non-vides doivent posséder une balise de fin.
    <li>Elément liste correct</li>
    <li>Elément liste incorrect
  4. Les éléments vides doivent également posséder une indication de fin.
    <img src="./url" alt="élément correct"/>
    <img src="./url" alt="élément correct"></img>
    <img src="./url" alt="élément incorrect">
  5. Toutes les valeurs d'attributs doivent être encadrées par des guillemets.
    <img src="./url" height="120" width="60" alt="Rédaction correcte">
    <img src="./url" height=120 width=60 alt=Rédaction incorrecte>
  6. La minimisation des attributs est interdite.
    <option sected="selected">Attribut correct</option>
    <option selected>Attribut incorrect</option>
  7. Les éléments script et style sont déclarés comme possédant un contenu de données textuelles analysées (PCDATA : Parsed Character DATA).
    <script language="javascript" type="text/javascript">    ![CDATA[
          prix = compte <= 1000 ? 500 : 450;
       ]]> </script>
  8. L'attribut name doit être progressivement abandonné au bénéfice de l'identificateur id.
    <form id="formulaire_correct">...</form>
    <form name="formulaire_incorrect">...</form>
  9. Automatiquement, les agents utilisateurs supprimeront les espaces de début et de fin des valeurs d'attributs et si plusieurs espaces se suivent, ils seront remplacés par un unique espace.
    attribut="  valeur   de  l'attribut   "
       <!-- donne après analyse --> attribut="valeur de l'attribut"
  10. XHTML interdit l'inclusion de certains éléments dans d'autres.
    • a ne peut contenir d'autres éléments a,
    • pre ne peut contenir les éléments big, img, object, small, sub ou sup,
    • button ne peut contenir les éléments button, form, fieldset, iframe, input, isindex, label, select ou textarea,
    • label ne peut contenir d'autres éléments label,
    • form ne peut contenir d'autre éléments form.