tl; dr
Certains programmes largement utilisés, qui génèrent du HTML, ne génèrent que des balises de paragraphe d'ouverture et non de fermeture, en supposant que le navigateur ferme correctement les paragraphes.
À première vue, il me semble que l'hypothèse selon laquelle les navigateurs fermeront correctement les paragraphes n'est pas correcte. Mon interprétation est-elle correcte? Plus généralement, quels compromis impliquent ce type de décision?
En parcourant le code source de moinmoin, la ligne de code suivante a attiré mon attention:
# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])
( source )
Après avoir lu le reste de l'implémentation, je me suis convaincu que oui, en effet, lorsque moinmoin génère du code html pour l'une de ses pages, il générera correctement les balises d'ouverture de paragraphe, le cas échéant, tout en évitant délibérément les balises de fermeture de paragraphe (bien que cela soit trivialement possible).
Pour mon cas d'utilisation spécifique, plutôt inhabituel, ce comportement n'est pas correct. Je suis tenté de soumettre un rapport de bogue et / ou de changer le comportement. Cependant, il semble que cette décision de conception ait été réfléchie. Je ne connais pas assez bien les subtilités du standard html, ou les différentes implémentations de navigateur, pour pouvoir dire si c'est un comportement correct en général, et j'ai le sentiment que mon instinct pour corriger / changer ce comportement pourrait être mal orienté.
Ce code fait-il une hypothèse valide sur les implémentations du navigateur? Le code HTML généré est-il valide? Plus généralement, quels compromis pourrais-je manquer ici?
la source
Réponses:
Les balises de fin des
p
éléments étaient facultatives en HTML et n'étaient nécessaires qu'en XHTML. Cependant, le brouillon HTML5 introduit un ensemble de conditions lorsque lap
balise de fin est réellement facultative:Cela dit, le seul argument que j'ai jamais entendu pour omettre les balises de fin des
p
éléments est la taille du document. C'est à vous de décider si cela a du sens pour votre document ou non. Personnellement, j'ai tendance à inclure toutes les balises de fin facultatives, juste au cas où je ne répondrais pas aux exigences lorsque la balise de fin est facultative.la source
<li>
balises, les balises agissent davantage comme des puces.La spécification W3C pour HTML5 stipule spécifiquement que:
Donc, fondamentalement, la spécification a fourni de nombreuses façons d'éviter la complexité (grande ou petite) de la fermeture de la balise. Toute implémentation de navigateur conforme devrait tenir compte de ces exceptions.
la source