Cette syntaxe porte différents noms selon le langage que vous utilisez. La meilleure façon de savoir comment elle s'appelle est de consulter les spécifications du langage spécifique.
HTML 4.x
Je ne trouve aucune mention de cette syntaxe dans la spécification HTML 4.x. Ce n'est pas une syntaxe valide.
HTML 5
Dans la spécification HTML 5, l'élément /
(appelé SOLIDUS) est valide mais n'a aucun effet pour éléments vides comme <br />
, <hr />
, <img />
, <input />
etc. et pour éléments étrangers (telles que les balises SVG), elle désigne une étiquette de départ qui est marquée comme se fermant automatiquement . Ce n'est pas une syntaxe valide pour toutes les autres balises (telles que <button />
mentionné dans votre question).
Ensuite, si l'élément est l'un des éléments vides, ou si l'élément est un élément étranger, alors il peut y avoir un seul caractère U+002F SOLIDUS (/). Ce caractère n'a pas d'effet sur les éléments vides, mais sur les éléments étrangers il marque la balise de départ comme étant auto-fermée .
XML
Selon le Spécification XML il s'agit d'un balise "empty-element" (élément vide) :
La représentation d'un élément vide est soit une balise de début suivie immédiatement d'une balise de fin, soit une balise de fin. balise "empty-element" (élément vide) .
XHTML
Selon le Spécification XHTML il s'appelle la syntaxe minimisée des balises pour les éléments vides :
C.2. Éléments vides
Ajoutez un espace avant les éléments vides / et >, par exemple <br />, <hr /> et <img src="karen.jpg" alt="Karen" />. Utilisez également la syntaxe de la balise minimisée pour les éléments vides, par exemple <br />, car la syntaxe alternative <br></br> autorisée par XML donne des résultats incertains dans de nombreux agents utilisateurs existants.
C.3. Élément Minimisation et Contenu des éléments vides
Étant donné une instance vide d'un élément dont le modèle de contenu n'est pas EMPTY (par exemple, un titre ou un paragraphe vide), n'utilisez pas la fonction la forme minimisée (par exemple, utilisez <p> </p> et non <p />).
En général, si vous voulez être précis, je vous recommande d'utiliser les noms tels que définis dans la norme appropriée. Ainsi, si les gens ne sont pas sûrs de ce que vous voulez dire, ils peuvent consulter la norme pour le savoir. Cependant, si vous ne voulez pas utiliser le nom de la norme, vous êtes libre de l'appeler autrement si vous le souhaitez. L'important est que les personnes qui communiquent avec vous puissent vous comprendre. Je ne pense pas que quelqu'un vous comprendrait mal si vous utilisiez le terme "balise auto-fermante" pour une balise dans un document XML, même si la norme l'appelle officiellement autrement.
Merci à Alohci pour la référence HTML 5.
15 votes
Aucune des balises <img />, <input /> ou <button /> n'est une balise HTML. Ce sont des balises XHTML. Les balises HTML n'ont jamais un / avant la fermeture >. Jamais .
0 votes
@Tom Anderson : encore pire : selon le contexte, ceci est est en fait une syntaxe HTML valide, mais elle ne signifie pas ce que les gens pensent généralement qu'elle signifie.
0 votes
En HTML, il est traité comme un autre attribut nommé "/", d'où la raison pour laquelle l'espace est nécessaire en XHTML, pour des raisons de compatibilité. En XML, il ne doit pas y avoir d'espace avant la barre oblique de fermeture.
6 votes
@Tom Anderson. En HTML5, le '/' est facultatif mais valide pour les éléments vides. img et input sont vides et le '/' est donc valide. button n'est pas un élément vide et n'est donc pas valide. De plus, sur les éléments svg et mathml, le '/' fait en sorte que l'élément se ferme automatiquement comme le XML. Voir dev.w3.org/html5/spec/syntaxe.html#start-tags
0 votes
@Turnor - Le fait que '/' soit traité comme un attribut est un mythe. Pouvez-vous nommer un analyseur syntaxique de navigateur qui crée un attribut appelé '/' dans le DOM lorsqu'il rencontre un caractère '/' dans le html ?
0 votes
@Alohci : j'avais oublié le HTML5, mon erreur. Modifiez 'HTML' pour lire 'HTML des versions antérieures à 5' :).
0 votes
@Jörg : ah oui, la tristement célèbre balise SGML null end. En théorie, oui, vous pourriez l'utiliser en HTML, et en effet, elle signifie quelque chose de complètement inattendu. Mais il n'y a jamais eu de navigateur web basé sur le SGML, donc pour autant que je sache, ça n'a jamais été utilisé. en fait était possible en HTML.
2 votes
@Tom Anderson : Oui, mais il existe de nombreux validateurs HTML basés sur le SGML, ce qui peut conduire à de nombreuses heures perdues à regarder le balisage, à regarder Firebug et à regarder les messages du validateur et à se demander s'il y a trois interprétations complètement différentes du même foutu document :-)
0 votes
@Alohci : Il faut se rappeler que les navigateurs ne sont pas nécessairement les seuls programmes à s'occuper de l'analyse HTML, l'exigence d'ajouter un espace avant la barre oblique de fermeture était pour tous les systèmes qui pourraient l'interpréter comme faisant partie de l'attribut autrement, comme la spécification HTML le permet.
0 votes
@Turnor. Ah oui. Mais c'est différent de ce que vous avez dit avant. Il est vrai que le '/' pourrait faire partie d'une valeur d'attribut non citée, et que l'ajout d'un espace l'arrêterait, mais il n'y a rien dans aucune spécification HTML qui indique alors qu'il formerait le nom d'attribut suivant. Les exigences SGML relatives aux balises de fin de texte nulles l'interdisent.