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

StackOverflow https://stackoverflow.com/questions/97522

Frage

Was sind alle gültigen Selbstschließelemente (z
) in XHTML (wie von den gängigen Browsern implementiert)?

Ich weiß, dass XHTML technisch jedes Element ermöglicht selbst geschlossen zu sein, aber ich bin für eine Liste dieser Elemente von allen gängigen Browsern unterstützt suchen. Siehe http://dusan.fora.si/blog/self-closing-tags Beispiele für einige von selbstschließenden Elemente verursacht Probleme wie

.

War es hilfreich?

Lösung

Jeder Browser, die XHTML (Firefox unterstützt, Opera, Safari, IE9 ) unterstützt selbstschließ Syntax auf jedes Element .

<div/>, <script/>, <br></br> alles sollte gut funktionieren. Wenn sie es nicht tun, dann haben Sie HTML mit zugesetztem unangemessen DOCTYPE XHTML.

DOCTYPE ändert sich nicht, wie Dokument interpretiert wird. Nur MIME-Typ tut .

W3C Entscheidung über DOCTYPE ignorieren:

  

Die HTML-WG hat dieses Thema diskutiert: die Absicht alt war zu ermöglichen   (HTML-only) Browser XHTML 1.0 Dokumente zu akzeptieren, durch die folgenden   Richtlinien und sie als text / html dient. Daher diente Dokumente   text / html sollte als HTML und nicht als XHTML behandelt werden.

Es ist ein sehr häufiger Fehler, weil W3C Validator weitgehend diese Regel ignoriert, aber Browser folgen sie religiös. Lesen   Legendes HTML, XML und XHTML von WebKit Blog:

  

In der Tat, die große Mehrheit der angeblich XHTML-Dokumente im Internet als text/html serviert. Was bedeutet, dass sie überhaupt nicht XHTML sind, aber eigentlich ungültige HTML-Code, indem Sie auf die Fehlerbehandlung von HTML-Parser wird immer. Alle, die „Gültiges XHTML 1.0!“ Links im Web sagen wirklich „Ungültige HTML 4.01!“.


Um zu testen, ob Sie echte XHTML oder ungültiges HTML mit XHTML DOCTYPE, setzen Sie diese in Ihrem Dokument:

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

Es bestätigt und in Echt XHTML es funktioniert perfekt (siehe: 1 vs 2 ). Wenn Sie Ihre Augen nicht trauen können (oder nicht wissen, wie MIME-Typen setzen), öffnen Sie Ihre Seite über XHTML Proxy .

Eine andere Möglichkeit, zu überprüfen, ist Quelltext anzeigen in Firefox. Es wird Schrägstriche in rot markieren, wenn sie ungültig sind.

In HTML5 / XHTML5 hat dies nicht geändert, und die Unterscheidung wird noch deutlicher, weil man nicht einmal zusätzliche DOCTYPE verfügen. Content-Type ist der König.


Für die Aufzeichnung der XHTML-Spezifikation ermöglicht es jedem Element selbstschließend zu sein von XHTML machen ein XML-Anwendung : [Hervorhebung von mir]

  

Leer-Element-Tags können für jedes Element verwendet werden, die keinen Inhalt hat , ob es deklariert wird mit dem Schlüsselwort LEER.

Es wird auch explizit in der XHTML spec :

  

Leeren Elemente muß entweder hat einen End-Tag oder den Start-Tag muss mit /> beenden. Zum Beispiel <br/> oder <hr></hr>

Andere Tipps

Ein Element sehr vorsichtig sein, mit zu diesem Thema ist der <script> -Element. Wenn Sie eine externe Quelldatei haben, wird es Probleme verursachen, wenn Sie selbst es zu schließen. Versuchen Sie es:

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

Dies wird in Firefox funktionieren, aber bricht in IE6 zumindest. Ich weiß, weil ich in diesen lief bei über eifrige Selbst jedes Element zu schließen Ich sah; -)

Die selbstschließenden Syntax funktioniert auf allen Elementen in application / xhtml + xml. Es ist nicht auf ein beliebiges Element in text / html unterstützt, aber die Elemente, die „leer“ in HTML4 oder „Leere“ in HTML5 nehmen Sie nicht ein End-Tag sowieso sind, also wenn Sie einen Schrägstrich auf diejenigen setzen es, als ob erscheint die selbstschließenden Syntax unterstützt wurde.

Aus der W3 Schools Referenzstelle :

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

bessere Frage wäre: Welche Tags können selbst geschlossen, auch im HTML-Modus sein, ohne Code zu beeinflussen? Antwort: nur diejenigen, die leeren Inhalt haben (sind ungültig). Nach HTML-Spezifikationen die folgenden Elemente sind ungültig:

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

ältere Version der Spezifikation auch aufgeführt command. Außerdem nach verschiedenen Quellen die folgenden veraltet oder nicht-Standard-Tags sind ungültig:

basefont, bgsound, frame, isindex

Hope, das hilft jemand:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

Was ist <meta> und <link>? Warum sind sie nicht auf dieser Liste?

Schnelle Faustregel nicht selbst schließt jedes Element, das Inhalt haben sollte, weil es definitiv Browser Probleme früher oder später verursacht.

diejenigen, die von Natur aus selbstschließend, wie <br> und <img> sind, sollte klar sein. Diejenigen, die nicht ... nur nicht selbst schließen sie!

Das letzte Mal habe ich geprüft, wurden die folgenden die leeren / Leere Elemente aufgelistet in HTML5.

Gültig für Autoren: Bereich, Basis, br, col, Befehl, einbetten, Eventsource, hr, img, input, Link, meta, param, Quelle

Ungültige für Autoren: basefont, bgsound, Rahmen, Spacer, wbr

Neben den wenigen, die in HTML5 neu sind, dass sollten Sie eine Vorstellung davon, diejenigen geben, die unterstützt werden können, wenn XHTML als text / html dient. (Sie einfach testen, indem Sie den DOM produziert untersuchen.)

Wie für XHTML als application / xhtml + xml bedient (die es XML macht), XML-Regeln gelten und jedes Element kann leer sein (auch wenn die XHTML DTD dies nicht ausdrücken kann).

Sie sollten sich auch die xHTML DTDs , sie sind alle aufgelistet . Hier ist eine schnelle Überprüfung alle die wichtigsten sind:

<br />
<hr />
<img />
<input />

Sie sind als "ungültig" Elemente in HTML 5. Sie sind in der offizielle W3 spec .

  

Ein Hohlraum Element ist ein Element, dessen Inhaltsmodell nie erlaubt es Inhalte unter keinen Umständen zu haben.

Ab April 2013 sind sie:

  

Fläche, Base, br, col, Befehl, einbetten, hr, img, input, keygen, Link, meta, param, source, Spur, WBR

Ab Dezember 2018 (HTML 5.2), sie sind:

  

Fläche, Base, br, col, einbetten, hr, img, input, Link, meta, param, source, Spur, WBR

Ein weiteres selbstschließenden Tag Problem für IE ist der Titel-Element. Wenn IE (nur versucht, es in IE7) das sieht, wird dem Benutzer eine leere Seite. Jedoch Sie „Quelltext anzeigen“ und alles ist da.

<title/>

ich ursprünglich das sehe, als mein XSLT den selbstschließenden Tag erzeugt werden.

Ich werde nicht zu overelaborate auf, dies versuchen, zumal die Mehrheit der Seiten, die ich schreibe, sind entweder erzeugt oder der Tag-Inhalt hat. Die beiden einzigen, die jemals gegeben haben mir Schwierigkeiten, wenn sie selbstschließend zu machen sind:

<title/>

Dazu habe ich Zuflucht einfach immer ihm einen separaten schließenden Tag zu geben, da, sobald es in den <head></head> da oben ist es nicht wirklich Code jeden messier macht mit ohnehin zu arbeiten.

<script/>

Das ist die große, die ich vor kurzem in Probleme lief mit. Seit Jahren hatte ich immer selbstschließ <script/>-Tags verwendet, wenn das Skript von einer externen Quelle kommt. Aber ich vor kurzem begonnen, JavaScript-Fehlermeldungen über eine Null-Form recieving. Nach einigen Tagen der Forschung, fand ich, dass das Problem war (angeblich), dass der Browser nie wurde den <form> Tag bekommen, weil es nicht ahnte dies das Ende des <script/> Tages ist. Also, wenn ich es in separate <script></script> Umbauten gemacht, alles hat funktioniert. Warum unterscheiden sich in verschiedenen Seiten, die ich auf dem gleichen Browser gemacht, ich weiß es nicht, aber es war eine große Erleichterung, die Lösung zu finden!


ist ein weiteres

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top