Dans la pratique, l'utilisation de balises auto-fermantes en HTML devrait fonctionner comme prévu. Mais si vous êtes préoccupé par l'écriture de valide HTML5, vous devez comprendre comment l'utilisation de ces balises se comporte dans les deux formes de syntaxe différentes que vous pouvez utiliser. HTML5 définit à la fois une syntaxe HTML et une syntaxe XHTML, qui sont similaires mais pas identiques. Celle qui est utilisée dépend du type de média envoyé par le serveur Web.
Il est plus que probable que vos pages soient servies en tant que text/html
qui suit la syntaxe HTML plus indulgente. Dans ces cas, HTML5 permet à certaines balises de début d'avoir un / facultatif avant la terminaison >. Dans ces cas, le / est optionnel et ignoré, donc <hr>
y <hr />
sont identiques. La spécification HTML appelle ces éléments "void" et donne une liste des éléments valides. Strictement parlant, l'option / n'est valide qu'à l'intérieur des balises de début de ces éléments void ; par exemple, <br />
y <hr />
sont valides en HTML5, mais <p />
ne l'est pas.
La spécification HTML5 établit une distinction claire entre ce qui est correct pour les auteurs HTML et pour les développeurs de navigateurs Web, le second groupe étant tenu d'accepter toutes sortes de syntaxes "héritées" invalides. Dans le cas présent, cela signifie que les navigateurs conformes à HTML5 accepteront les balises auto-fermées illégales, telles que <p />
et les rendre comme vous vous y attendez probablement. Mais pour un auteur, cette page no être du HTML5 valide. (Plus important encore, l'arborescence DOM que vous obtenez en utilisant ce type de syntaxe illégale peut être sérieusement perturbée ; auto-fermé <span />
Les balises, par exemple, ont tendance à tout gâcher. beaucoup ).
(Dans le cas inhabituel où votre serveur sait comment envoyer des fichiers XHTML en tant que type MIME XML, la page doit être conforme à la DTD XHTML et à la syntaxe XML. Cela signifie que les balises auto-fermantes sont requis pour les éléments définis comme tels).
2 votes
@Ben : oh, désolé, je pense que vous avez raison. Dans ce cas, j'ai mal compris la question originale, je pensais que le PO voulait savoir si les balises auto-fermantes sont valides en HTML5. Mais cela signifie qu'il a simplement fait des fautes de frappe dans son code, ou qu'il ne savait pas comment écrire correctement les balises auto-fermantes, ce qui est logique que le validateur du W3C ait marqué son code comme invalide.
20 votes
Pour faire gagner du temps aux futurs lecteurs : oui, la syntaxe de la question est incorrecte, et non, vous ne devez pas la modifier. Le PO a expliquer de manière explic avec justification pourquoi . Puisqu'elle a donné lieu aux erreurs de validation à l'origine de cette question, la syntaxe ne doit pas être corrigée.
0 votes
@ikaruss J'ai d'abord approuvé l'une des modifications que vous avez suggérées pour cette question (il me semblait logique de supprimer les erreurs non pertinentes à la fois dans la question et dans ses réponses), mais je viens de les annuler toutes les deux après avoir lu les commentaires ici. Veuillez lire les commentaires ci-dessus. Il est particulièrement intéressant de noter que dans votre version modifiée de la question, l'affirmation selon laquelle le validateur du W3C n'a pas apprécié le code du PO n'a plus de sens.
0 votes
@mark-amery Ok. Bien que je m'oppose dans ce cas particulier... :)
3 votes
Êtes-vous des gens toujours se disputent pour savoir dans quelle direction les barres obliques doivent être orientées ? Allez.
4 votes
@BoltClock Ouaip, je me bats toujours. Les gars : si cette question portait sur
\>
il devrait être fermé comme une question inutile de type "fix-my-typo". Les réponses concernent toutes/>
. Le site/>
est la seule version utile. Qu'elle le soit.2 votes
Il faut alors reformuler la question, car le validateur du W3C accepte effectivement les balises auto-fermantes. Il est difficile de reformuler la question de cette manière sans compromettre son intégrité par rapport à l'intention initiale. Par conséquent, si nous voulons adhérer aux règles de l'OS, nous devrons peut-être sacrifier la clarté dans des questions comme celle-ci, même s'il semble que la modification de la question soit la seule chose sensée à faire, pour le bien du plus grand nombre en moyenne. Nous pourrions commencer une autre discussion sur la méta, s'il y a beaucoup d'autres questions sur un sujet similaire.
0 votes
Question similaire : stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br