Chaque navigateur qui prend en charge XHTML (Firefox, Opera, Safari, IE9) prend en charge la syntaxe d'auto-fermeture sur chaque élément.
, </code>, <code><br></br></code> devraient tous fonctionner parfaitement. S'ils ne le font pas, alors vous avez du <em>HTML</em> avec une DOCTYPE XHTML inappropriée.</p> <p><strong>La DOCTYPE ne change pas la façon dont le document est interprété. <a href="http://www.webdevout.net/articles/beware-of-xhtml#content_type" rel="noreferrer">Seul le type MIME le fait</a></strong>.</p> <p><a href="https://lists.w3.org/Archives/Public/www-html/2000Sep/0024.html" rel="noreferrer">Décision du W3C concernant l'ignorance de la DOCTYPE</a>:</p> <blockquote> <p>Le HTML WG a discuté de cette question : l'intention était de permettre aux anciens navigateurs (HTML uniquement) d'accepter les documents XHTML 1.0 en suivant les directives et de les servir en tant que text/html. Par conséquent, les documents servis en tant que text/html doivent être traités comme du HTML et non comme du XHTML.</p> </blockquote> <p>C'est une erreur très courante, car le Validator du W3C ignore largement cette règle, mais les navigateurs la suivent religieusement. Lisez <a href="https://webkit.org/blog/68/understanding-html-xml-and-xhtml/" rel="noreferrer">Comprendre HTML, XML et XHTML</a> du blog de WebKit :</p> <blockquote> <p>En fait, la grande majorité des documents supposément XHTML sur internet sont servis en tant que <code>text/html</code>. Ce qui signifie qu'ils ne sont pas du tout XHTML, mais en réalité du HTML invalide qui passe grâce à la gestion des erreurs des parseurs HTML. Tous ces liens "XHTML 1.0 valide !" sur le web disent en réalité "HTML 4.01 invalide !".</p> </blockquote> <hr /> <p>Pour tester si vous avez du vrai XHTML ou du HTML invalide avec la DOCTYPE de XHTML, mettez ceci dans votre document :</p> <pre><code><span style="color:green"><span style="color:red"/> Si c'est en rouge, c'est du HTML. En vert, c'est du XHTML. </span> </code></pre> <p>Cela est valide, et en vrai XHTML cela fonctionne parfaitement (voir : <a href="https://kornel.ski/1" rel="noreferrer">1</a> vs <a href="https://kornel.ski/2" rel="noreferrer">2</a>). Si vous ne pouvez pas croire vos yeux (ou ne savez pas comment définir les types MIME), ouvrez votre page via un <a href="https://schneegans.de/xp/" rel="noreferrer">proxy XHTML</a>.</p> <p>Une autre façon de vérifier est de voir le code source dans Firefox. Il affichera les barres obliques en rouge lorsqu'elles sont invalides.</p> <p>En HTML5/XHTML5, cela n'a pas changé, et la distinction est encore plus claire, car vous n'avez même pas de <code>DOCTYPE</code> supplémentaire. <code>Content-Type</code> est roi.</p> <hr /> <p>Pour information, la spécification XHTML permet à n'importe quel élément d'être auto-fermant en faisant de XHTML une <a href="https://www.w3.org/TR/REC-xml/#sec-starttags" rel="noreferrer">application XML</a> : [soulignement de ma part]</p> <blockquote> <p>Les balises d'élément vide peuvent être utilisées pour <strong>n'importe quel élément qui n'a pas de contenu</strong>, qu'il soit ou non déclaré en utilisant le mot-clé EMPTY.</p> </blockquote> <p>C'est également explicitement indiqué dans la <a href="https://www.w3.org/TR/xhtml1/#h-4.6" rel="noreferrer">spécification XHTML</a>:</p> <blockquote> <p>Les éléments vides doivent <strong>soit</strong> avoir une balise de fin, soit la balise de début doit se terminer par <code>/></code>. Par exemple, <code><br/></code> ou <code><hr></hr></code></p> </blockquote></x-turndown>
7 votes
Ne cela ne contredit-il pas l'un des buts de XHTML? Je pensais qu'un des avantages de XHTML était que vous pouviez utiliser un générateur XML pour générer du HTML. Pourquoi un générateur XML serait-il au courant des balises autorisées à se fermer automatiquement? Trop bizarre.
6 votes
La raison pour laquelle la réponse "faible", "incorrecte" a été acceptée est parce qu'elle répondait à la question que kamens posait évidemment. Il voulait savoir quels éléments pouvaient être auto-fermés lors de la fourniture de XHTML en tant que texte/html sans causer de problèmes de rendu dans les navigateurs. Beaucoup de pages sont écrites en XHTML et servies en tant que texte/html même si c'est techniquement incorrect. La question pourrait être améliorée avec cette clarification, mais répondre à une question différente (ce qui se passe lorsque vous servez en tant que application/xml, ou si les balises uniques en texte/html doivent avoir un / de fermeture) n'est pas utile dans ce cas.