Jeder Browser, der XHTML unterstützt (Firefox, Opera, Safari, IE9 ), unterstützt die selbstschließende Syntax für jedes Element .
<div/>
, <script/>
, <br></br>
Sollten alle gut funktionieren. Wenn dies nicht der Fall ist , haben Sie HTML mit unangemessen hinzugefügtem XHTML DOCTYPE.
DOCTYPE ändert nichts an der Interpretation des Dokuments. Nur der MIME-Typ funktioniert .
W3C-Entscheidung zum Ignorieren von DOCTYPE :
Die HTML-Arbeitsgruppe hat dieses Problem erörtert: Alte Browser (nur HTML) sollten XHTML 1.0-Dokumente akzeptieren, indem sie den Richtlinien folgen und sie als Text / HTML bereitstellen. Daher sollten Dokumente, die als Text / HTML bereitgestellt werden, als HTML und nicht als XHTML behandelt werden.
Dies ist eine sehr häufige Gefahr, da W3C Validator diese Regel weitgehend ignoriert, Browser sie jedoch religiös befolgen. Lesen Sie das
Grundlegendes zu HTML, XML und XHTML im WebKit-Blog:
Tatsächlich wird die überwiegende Mehrheit der angeblich XHTML-Dokumente im Internet als bereitgestellt text/html
. Dies bedeutet, dass es sich überhaupt nicht um XHTML handelt, sondern um ungültiges HTML, das bei der Fehlerbehandlung von HTML-Parsern zurechtkommt. Alle diese "Valid XHTML 1.0!" Links im Web sagen wirklich "Ungültiges HTML 4.01!".
Um zu testen, ob Sie mit XHTMLs DOCTYPE über echtes XHTML oder ungültiges HTML verfügen, fügen Sie Folgendes in Ihr Dokument ein:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
Es validiert und in echtem XHTML funktioniert es perfekt (siehe: 1 vs 2 ). Wenn Sie Ihren Augen nicht trauen können (oder nicht wissen, wie MIME-Typen festgelegt werden sollen), öffnen Sie Ihre Seite über den XHTML-Proxy .
Eine andere Möglichkeit zur Überprüfung ist das Anzeigen der Quelle in Firefox. Es werden rote Schrägstriche hervorgehoben, wenn sie ungültig sind.
In HTML5 / XHTML5 hat sich dies nicht geändert, und die Unterscheidung ist noch deutlicher, da Sie nicht einmal zusätzliche haben DOCTYPE
. Content-Type
ist der König.
Für den Datensatz ermöglicht die XHTML-Spezifikation, dass sich jedes Element selbst schließt, indem XHTML zu einer XML-Anwendung gemacht wird : [Hervorhebung von mir]
Tags für leere Elemente können für jedes Element verwendet werden, das keinen Inhalt hat , unabhängig davon, ob es mit dem Schlüsselwort EMPTY deklariert wurde oder nicht.
Es wird auch explizit in der XHTML-Spezifikation gezeigt :
Leere Elemente müssen entweder ein End-Tag haben oder das Start-Tag muss mit enden />
. Zum Beispiel <br/>
oder<hr></hr>