195 Stimmen

Was sind alle gültigen selbstschließenden Elemente in XHTML (wie von den wichtigsten Browsern implementiert)?

Was sind alle gültigen selbstschließenden Elemente (z. B. <br/>) in XHTML (wie von den wichtigsten Browsern implementiert)?

Ich weiß, dass XHTML technisch gesehen erlaubt, dass jedes Element selbst geschlossen werden kann, aber ich suche eine Liste der Elemente, die von allen wichtigen Browsern unterstützt werden. Siehe http://dusan.fora.si/blog/self-closing-tags für Beispiele für einige Probleme, die durch selbstschließende Elemente wie <div /> verursacht werden.

186voto

Kornel Punkte 94135

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>

42voto

Erik van Brakel Punkte 22454

Ein Element, mit dem man bei diesem Thema sehr vorsichtig sein sollte, ist die <script > Element. Wenn Sie eine externe Quelldatei haben, wird es Probleme geben, wenn Sie sie selbst schließen. Versuchen Sie es:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

Das funktioniert in Firefox, aber nicht im IE6. Ich weiß das, weil ich das Problem hatte, als ich übereifrig jedes Element, das ich sah, selbst geschlossen habe ;-)

37voto

hsivonen Punkte 7730

Die selbstschließende Syntax funktioniert bei allen Elementen in application/xhtml+xml. Sie wird für kein Element in text/html unterstützt, aber die Elemente, die in HTML4 "empty" oder in HTML5 "void" sind, benötigen ohnehin kein End-Tag. Wenn Sie also einen Schrägstrich an diese Elemente anhängen, sieht es so aus, als ob die selbstschließende Syntax unterstützt würde.

35voto

ConroyP Punkte 39832

De la W3-Referenzseite für Schulen :

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

33voto

Dmitry Osinovskiy Punkte 9779

Die bessere Frage wäre: Welche Tags können auch im HTML-Modus selbst geschlossen werden, ohne den Code zu beeinflussen? Antwort: nur solche, die einen leeren Inhalt haben (void sind). Gemäß HTML-Spezifikationen sind die folgenden Elemente nichtig:

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

Ältere Version der Spezifikation ebenfalls aufgeführt command . Außerdem sind verschiedenen Quellen zufolge die folgenden veralteten oder nicht genormten Kennzeichen ungültig:

basefont, bgsound, frame, isindex

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X