Le langage XHTML
Des astuces de compatibilité
Home

Comme il n'existe pas encore (début 2001) d'éditeur XHTML, il n'y a que deux possibilités :
    • Partir d'un document vierge et encoder ses balises dans un simple éditeur de texte comme aux premières années du Html.
    • Partir d'un document Html existant et le corriger en fonction des règles de syntaxe du XHTML et quelques astuces de compatibilité.


 

Afin d'assurer la compatibilité de votre code XHTML avec les navigateurs des générations précédentes et la lisibilité de vos pages par le plus grand nombre [ce qui devrait être un postulat sur le Web], le W3C et les premiers auteurs proposent quelques règles de la plus grande utilité.
 
Encoder correctement le document comme détaillé dans le document XHTML minimum. Et tout spécialement le DTD Document Type Declaration, indispensable au XHTML soit <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 
N'oubliez pas qu'en XHTML, balises et attributs ne notent en minuscules.
 
Si vous spécifier un jeu de caractères [character set ] pour le document, on recommande d'encoder l'attribut de spécification du jeu de caractères à la fois dans la déclaration XML soit <?xml version="1.0" encoding="xxxxx"?> et dans une balise meta dans le head soit <meta http-equiv="Content-type" content='text/html; charset="xxxxx">.
 
Tout s'écrit en minuscules, balises comme attributs. A noter que pour le contenu des attributs, repris entre les guillemets, celui-ci peut comporter des majuscules. Ainsi, color="#FFCCFF" est tout aussi valide que color="#ffccff".
 
Toute balise ouverte doit obligatoirement être fermée. Donc à une balise d'ouverture comme<p> doit correspondre une balise de fermeture soit </p>. Et ceci pour toutes les balises.
 
Les balises uniques, aussi appelées les balises vides, doivent aussi être fermées. Ainsi <br> s'écrira <br />. On veillera à ne pas omettre l'espace avant le / de fermeture car le reconnaissance de la balise par les navigateurs ne supportant pas le XHTML, risque d'être assez aléatoire. Dans le même ordre d'idée, on recommande la notation sous la forme <br /> plutôt que <br></br> qui si elle est correcte en XML risque de poser problème dans de nombreux navigateurs.
 
Si vous encodez des balises dont le contenu est vide par exemple un paragraphe vide ou un titre vide, préférez la notation <p></p> ou <title></title> à <p /> ou <title />.
 
Les valeurs des attributs doivent toujours être mise entre des guillemets. On évitera aussi les ruptures de lignes et les espaces multiples dans les valeurs d'attributs.
 
On devra éviter de noter certains attributs de façon compacte selon le Html comme nowrap ou noshade mais les noter de façon complète nowrap="nowrap" ou noshade="noshade". Voici la liste des attributs concernés.
 
On utilisera à la fois l'attribut lang et l'attribut xml:lang lorsqu'on spécifie la langue d'un élément soit par exemple xml:lang="fr" lang="fr". Le cas échéant, la valeur définie dans l'attribut xml:lang prendra la priorité.
 
Lorsqu'une valeur d'attribut contient un & [ampersand], il est préférable de l'encoder comme un caractère spécial soit sous la forme &amp; classique.
 
S'il faut obligatoirement identifier un élément par id="..." en XHTML, il est recommandé pour assurer la compatibilité avec les anciens navigateurs, d'identifier également l'élément avec name="...". Soit par exemple : <a id="ancre" name="ancre">...</a>
 
Evitez ou abandonnez les scripts ou styles implantés dans le document. Utilisez les scripts ou styles externes, cela vous évitera bien des ennuis. En effet, les éléments de scripts comme <, &, ]], > ou -- risquent d'être interprétés comme du XHTML. En outre la bonne vieille pratique de mettre les scripts ou les styles entre des balises de commentaire pour en masquer le contenu, risque de ne pas donner l'effet escompté sous des navigateurs orienté XML..
 
Il ne faut pas oublier l'attribut alt des balises <img>.
 
Il est préférable d'ajouter l'attribut summary="texte" à la balise de tableau soit par exemple : <table width="100%" border="0" summary="Liste 1">.
 
La balise a ne peut contenir d'autres éléments a.
 
La balise pre ne peut pas contenir les éléments img. object. big. small. sub ou sup.
 
La balise button qui définit un bouton à cliquer, ne peut pas contenir les éléments input, select, textarea, label, button, form, fieldset. iframe ou isindex.
 
La balise label qui définit une étiquette à une zone de formulaire, ne peut contenir d'autres éléments label.
 
La balise de formulaire form ne peut contenir d'autres éléments form.