Avez-vous besoin de fermer les balises Meta et Link en HTML?

133

Je lisais juste le code HTML de quelqu'un qui n'a jamais fermé les balises meta et link dans la section HTML head. Le code a bien fonctionné; la fermeture de ces balises est-elle facultative?

Je pensais qu'il serait mal formé si une balise n'était pas fermée.

bcollins
la source

Réponses:

167

Une balise doit toujours être fermée par le symbole de fermeture de balise >(si nous ignorons certaines règles SGML qui s'appliquent nominalement en HTML non XHTML mais qui n'ont jamais été implémentées dans les navigateurs).

Ce que vous voulez dire, c'est si les éléments doivent être fermés par des balises de fin. La réponse est que le 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 metaet link. Dans la pratique, cependant, les navigateurs ignorent simplement les balises de fin explicites pour eux, ainsi que le culte du fret /avant >, si vous les utilisez. Et HTML5 fait de cette permissivité une règle en autorisant même formellement la /sérialisation en HTML.

En XHTML, les règles XML s'appliquent, donc 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 abréviation de <meta name="foo" content="bar"></meta>. Si vous ne respectez pas cette règle lors de la diffusion d'un document avec un type de contenu XML (XHTML) à un navigateur conforme, alors votre document ne s'affiche pas du tout; un message d'erreur s'affiche à la place.

Lorsque vous utilisez un serveur XHTML avec le type de contenu HTML ( Content-Type: text/html), comme les documents XHTML sont presque toujours sur le Web, les navigateurs appliqueront en fait les règles HTML non XHTML.

Résumer:

  • normalement, utilisez juste <meta ...>sans/
  • si vous utilisez vraiment XHTML dans un contexte où l'analyse XHTML est réellement appliquée, jouez selon les règles XML (et assurez-vous de les connaître)
  • si votre patron vous dit d'écrire <meta ... />, faites-le; ce n'est pas utile, mais cela ne cause aucun mal (sauf si vous essayez de valider par exemple contre le doctype HTML 4.01).
Jukka K. Korpela
la source
3
L'utilisation de /> a causé un problème où le bot google ne reconnaissait pas la balise meta robots. étrange!!!
DevZer0
13
Je trouve le terme «culte du fret» inapproprié dans ce contexte. Certaines personnes ferment ces éléments, simplement parce qu'ils répriment que XHTML n'a pas prévalu.
Marcus
6
Alerte pédante! «Cargo culte» n'est pas coupé par un trait d'union dans la pratique normale, mais seulement lors de l'utilisation de la phrase entière comme adjectif à quelque chose d'autre (c'est-à-dire «programmation culte du fret», «culte du fret /avant >»). Je pensais juste que je clarifierais pour éviter de brouiller Internet avec plus de confusion. </pedant_alert>:)
Aaron Wallentine
1
@ DevZer0 - êtes-vous sûr que la barre oblique en était la cause? Je m'attendrais à ce que Google soit flexible avec des choses comme ça.
Simon East
3
Rendre votre HTML cohérent avec les règles XHTML n'est-il pas une raison pour inclure le / before>?
Kyle Delaney
28

Cela dépend du doctype. HTML5 n'a pas besoin de la fermeture. XHTML le fait.

En HTML5, les éléments dits void (éléments qui ne peuvent pas avoir de contenu) n'ont pas besoin de fermeture, car ils se referment automatiquement. Mais c'est toujours valable si vous les fermez.

En savoir plus ici: void-elements

Sebsemillia
la source
4
HTML5 a deux sérialisations, et l'une d'elles (sérialisation XHTML) rend les balises de fin obligatoires.
Jukka K. Korpela