Jeder Browser, der XHTML unterstützt (Firefox, Opera, Safari, IE9 ) unterstützt die selbstschließende Syntax bei jedes Element .
<div/>
, <script/>
, <br></br>
sollten alle problemlos funktionieren. Wenn nicht, dann haben Sie HTML mit unangemessen hinzugefügtem XHTML DOCTYPE.
DOCTYPE ändert nichts daran, wie das Dokument interpretiert wird. Nur der MIME-Typ macht .
W3C-Entscheidung über das Ignorieren von DOCTYPE :
Die HTML WG hat dieses Thema diskutiert: die Absicht war es, den alten (HTML-only) Browsern zu erlauben, XHTML 1.0 Dokumente zu akzeptieren, indem sie den Richtlinien folgen und sie als text/html ausgeben. Daher sollten Dokumente, die als text/html serviert werden, als HTML und nicht als XHTML behandelt werden.
Das ist ein sehr häufiger Fallstrick, denn der W3C-Validator ignoriert diese Regel weitgehend, aber die Browser befolgen sie genau. Lesen Sie Verständnis von HTML, XML und XHTML vom WebKit-Blog:
Tatsächlich wird die große Mehrheit der vermeintlichen XHTML-Dokumente im Internet als text/html
. Das bedeutet, dass es sich gar nicht um XHTML handelt, sondern um ungültiges HTML, das mit der Fehlerbehandlung von HTML-Parsern auskommt. All diese "Valid XHTML 1.0!"-Links im Web bedeuten in Wirklichkeit "Invalid HTML 4.01!
Um zu testen, ob Sie echtes XHTML oder ungültiges HTML mit dem DOCTYPE von XHTML haben, fügen Sie dies in Ihr Dokument ein:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
Es wird validiert, und in echtem XHTML funktioniert es perfekt (siehe: 1 gegen 2 ). Wenn Sie Ihren Augen nicht trauen (oder nicht wissen, wie man MIME-Typen einstellt), öffnen Sie Ihre Seite über XHTML-Proxy .
Eine andere Möglichkeit zur Überprüfung ist die Anzeige des Quellcodes in Firefox. Dort werden Schrägstriche rot hervorgehoben, wenn sie ungültig sind.
In HTML5/XHTML5 hat sich das nicht geändert, und die Unterscheidung ist sogar noch klarer, weil man nicht einmal zusätzliche DOCTYPE
. Content-Type
ist der König.
Fürs Protokoll: Die XHTML-Spezifikation erlaubt jedem Element, sich selbst zu schließen, indem sie XHTML zu einem XML-Anwendung : [Hervorhebung von mir]
Tags mit leeren Elementen können verwendet werden für jedes Element, das keinen Inhalt hat unabhängig davon, ob es mit dem Schlüsselwort EMPTY deklariert wird oder nicht.
Es wird auch ausdrücklich in der XHTML-Spezifikation :
Leere Elemente müssen entweder einen End-Tag haben oder der Start-Tag muss mit />
. Zum Beispiel, <br/>
ou <hr></hr>