Je lisais simplement le code HTML de quelqu'un qui n'a jamais fermé les balises meta et link dans la section head HTML. Le code a bien fonctionné. La fermeture de ces balises est-elle facultative?
Je pensais que ce serait mal formé si une étiquette n'était pas fermée.
Un tag doit toujours être fermé par le symbole de fermeture de la balise >
(si nous ignorons certaines règles SGML qui s'appliquent nominalement à du HTML non XHTML mais qui n'ont jamais été implémentées dans des navigateurs).
Ce que vous voulez demander, c'est si les éléments doivent être fermés par des balises de fin. La réponse est que HTML non-XHTML (y compris HTML5 dans la sérialisation HTML), aucune balise de fin n'est requise ou autorisée pour les éléments meta
et link
. En pratique, cependant, les navigateurs ignorent simplement les balises de fin explicites, ainsi que le cargo-cult /
avant >
, si vous les utilisez. Et HTML5 fait de cette permissivité une règle en permettant même formellement au /
dans la sérialisation HTML, aussi.
En XHTML, les règles XML s'appliquent. Ainsi, chaque élément, sans exception, doit avoir à la fois une balise de début et une balise de fin, mais la même balise peut être utilisée pour les deux rôles si le contenu de l'élément est vide, par exemple. <meta name="foo" content="bar"/>
comme raccourci pour <meta name="foo" content="bar"></meta>
. Si vous ne respectez pas cette règle lorsque vous transmettez un document avec un type de contenu XML (XHTML) à un navigateur conforme, votre document ne s'affiche pas du tout. un message d'erreur est affiché à la place.
Lors de l’utilisation d’un serveur XHTML avec le type de contenu HTML (Content-Type: text/html
), les documents XHTML étant presque toujours sur le Web, les navigateurs appliqueront les règles HTML non XHTML.
Résumer:
<meta ...>
sans /
<meta ... />
, fais-le; ce n'est pas utile, mais cela ne cause aucun préjudice (sauf si vous essayez de valider par exemple contre le doctype HTML 4.01).Cela dépend du doctype. HTML5 n'a pas besoin de la fermeture. XHTML fait.
En HTML5, les éléments vides (éléments qui ne peuvent pas avoir de contenu) n'ont pas besoin de fermeture, car ils se ferment automatiquement. Mais cela reste valable si vous les fermez ..
En savoir plus à ce sujet ici: void-elements