Chaque navigateur prenant en charge XHTML (Firefox, Opera, Safari, IE9 ) prend en charge la syntaxe de fermeture automatique sur chaque élément .
<div/>
, <script/>
, <br></br>
Tout devrait fonctionner très bien. Si ce n'est pas le cas, vous avez du HTML avec du DOCTYPE XHTML ajouté de manière inappropriée.
DOCTYPE ne change pas la façon dont le document est interprété. Seul le type MIME le fait .
Décision du W3C d'ignorer DOCTYPE :
Le GT HTML a discuté de ce problème: l'intention était d'autoriser les anciens navigateurs (HTML uniquement) à accepter les documents XHTML 1.0 en suivant les instructions et en les servant en texte / html. Par conséquent, les documents servis sous forme de texte / html doivent être traités comme du HTML et non comme du XHTML.
C'est un piège très courant, car W3C Validator ignore largement cette règle, mais les navigateurs la suivent religieusement. Lisez
Comprendre HTML, XML et XHTML sur le blog WebKit:
En fait, la grande majorité des documents supposés XHTML sur Internet sont servis sous forme de fichiers text/html
. Ce qui signifie qu'ils ne sont pas du tout du XHTML, mais en fait du HTML invalide qui se débrouille avec la gestion des erreurs des analyseurs HTML. Tous ces "Valid XHTML 1.0!" les liens sur le Web indiquent vraiment «HTML 4.01 invalide!».
Pour tester si vous avez du vrai XHTML ou du HTML invalide avec le DOCTYPE de XHTML, mettez ceci dans votre document:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
Il valide, et en vrai XHTML cela fonctionne parfaitement (voir: 1 vs 2 ). Si vous n'en croyez pas vos yeux (ou ne savez pas comment définir les types MIME), ouvrez votre page via le proxy XHTML .
Une autre façon de vérifier est de voir la source dans Firefox. Il mettra en évidence les barres obliques en rouge lorsqu'elles sont invalides.
En HTML5 / XHTML5, cela n'a pas changé et la distinction est encore plus claire, car vous n'en avez même pas d'autres DOCTYPE
. Content-Type
est le roi.
Pour mémoire, la spécification XHTML permet à tout élément de se fermer automatiquement en faisant de XHTML une application XML : [c'est moi qui souligne]
Les balises d'élément vide peuvent être utilisées pour tout élément qui n'a pas de contenu , qu'il soit déclaré ou non à l'aide du mot-clé EMPTY.
Il est également explicitement indiqué dans la spécification XHTML :
Les éléments vides doivent soit avoir une balise de fin ou la balise de début doit se terminer par />
. Par exemple, <br/>
ou<hr></hr>