Zephyr (./1) :
pourquoi ce choix a-t-il été retenu pour l'HTML ?
Ben parce que pour l'HTML (et le SGML) la justification que tu donnes ne tient pas : une balise fermante n'est pas obligée de correspondre à la dernière balise ouvrante vue vu que les éléments peuvent être fermés implicitement. Bon alors je ne sais pas jusqu'à quel point c'est souple, je crois que ça dépend des DTD, et quoi qu'il en soit en HTML ça n'a jamais été implémenté correctement (ou en tout cas pas par des vrais navigateurs), mais il me semble que
en théorie si tu tapes par exemple <a><b><c></a> c'est équivalent à <a><b><c></c></b></a>, parce que l'imbrication des éléments est stricte donc quand tu fermes a ça ferme implicitement tout ce qui était dans a.
Enfin je dis ça sous réserve, la spec SGML est super compliquée et je l'ai pas lue en entier, mais bon ^^
De même en HTML tu n'as pas besoin de fermer l'élément <br> parce qu'il est déclaré EMPTY, c'est une contrainte stricte, il ne peut pas avoir de contenu donc il est implicitement fermé aussitôt qu'il est ouvert. Et tu as encore des possibilités de contraintes sur les éléments autorisés à l'intérieur d'un autre, par exemple un <p> ne peut pas contenir d'autres <p>, donc si tu en ouvres un alors que tu es déjà dans un autre, celui où tu étais est fermé implicitement, etc.
Après le XML est une version ultra simplifiée du SGML où ils ont viré toutes les features qui demandaient un minimum de sophistication de la part du parseur, du coup ça n'a plus trop de sens, mais bon. Comme dit bob le but principal du XML n'est absolument pas de faciliter la détection d'erreurs, c'est d'être le plus facile possible à parser
squalyl > le HTML est du SGML. En fait le SGML définit une syntaxe générale pour les documents (comment on écrit des balises ouvrantes, fermantes, etc.) mais aussi un langage pour décrire des « types de documents » dans ce qu'on appelle une DTD (document type description). Ces DTD disent quels sont les éléments possibles dans ton type de document et les diverses contraintes (quoi peut contenir quoi, etc.)
Le HTML est un type de document défini en SGML par une telle DTD. Mais c'est un type de document très simple où plein de features de SGML ne sont pas utilisées. Les balises fermantes implicites le sont cependant, au moins dans une certaine mesure.