Inhaltsleere Elemente in HTML5
Nick
- html
Hallo,
sollten in HTML5 inhaltsleere Elemente als solche gekennzeichnet werden oder nicht? Valide ist ja beides.
Nein: <img src="bild.png" alt="ein Bild">
Ja: <img src="bild.png" alt="ein Bild" />
Viele Grüße
Nick
Hallo Nick,
sollten in HTML5 inhaltsleere Elemente als solche gekennzeichnet werden oder nicht? Valide ist ja beides.
Nein:
<img src="bild.png" alt="ein Bild">
Ja:
<img src="bild.png" alt="ein Bild" />
Da beides valide ist, ist es wurscht.
Es ist aber sinnvoll, sich selber zu überlegen, wie man es denn besser findet. Es darf ja auch <img alt=""></img> sein - ist auch valide. Nur sollte man sich für eine Schreibweise entscheiden, um sich nicht selber zu verwirren.
Nur der Vollständigkeit halber: <IMG aLt=""></IMG> ist auch valide... oder, oder, oder
Die Regeln von XHTML strict kennen keine Ausnahmen und sind daher leicht zu lernen. Daher meine Empfehlung, wenn du dir nicht sicher bist: schließe alles und fertig!
Viele Grüße,
Marc.
Danke für deine Antwort, Marc. Das klingt vernünftig.
Wünsche dir ein schönes Pfingstfest!
Grüße dich, Marc,
Da beides valide ist, ist es wurscht.
Es ist aber sinnvoll, sich selber zu überlegen, wie man es denn besser findet. Es darf ja auch <img alt=""></img> sein - ist auch valide. Nur sollte man sich für eine Schreibweise entscheiden, um sich nicht selber zu verwirren.
Die Regeln von XHTML strict kennen keine Ausnahmen und sind daher leicht zu lernen. Daher meine Empfehlung, wenn du dir nicht sicher bist: schließe alles und fertig!
Du irrst dich, HTML verbietet <img></img>, während es XHTML ausdrücklich erlaubt (aber nicht empfiehlt).
XHTML hat zwar eine strenger definierte Syntax, aber die Ausnahmen sind an anderer Stelle durchaus vorhanden. Das fällt nur kaum auf, da es sich um kleine Stellschrauben handelt und fast alle XHTML-Quelltexte ohnehin als HTML verarbeitet werden.
Ich denke nicht, das eine Variante der anderen überlegen ist. Von daher sollte bei der Wahl der Schreibweise ausschlaggebend sein, ob man seinen Quelltext später einmal als XML wiedergeben möchte oder nicht.
Gruß, Daniel
@@Daniel.S:
nuqneH
Du irrst dich, HTML verbietet <img></img>, während es XHTML ausdrücklich erlaubt (aber nicht empfiehlt).
Hier geht es aber weder um HTML noch um XHTML, sondern um HTML5.
Der Validator kreidet </img>
eigenartigerweise nicht an, obwohl es nicht erlaubt ist.
Qapla'
Grüße dich, Gunnar,
Hier geht es aber weder um HTML noch um XHTML, sondern um HTML5.
Das macht keinen Unterschied. Meine Aussage ist für HTML 4.01, XHTML 1.x, sowie (X)HTML 5 richtig.
Der Validator kreidet
</img>
eigenartigerweise nicht an, obwohl es nicht erlaubt ist.
Wenn auf HTML 4.01 geprüft wird, ist das tatsächlich der Fall, obwohl auch diese Version den Endtag bereits verbietet.
Gruß, Daniel
Hallo zusammen,
Der Validator kreidet
</img>
eigenartigerweise nicht an, obwohl es nicht erlaubt ist.Wenn auf HTML 4.01 geprüft wird, ist das tatsächlich der Fall, obwohl auch diese Version den Endtag bereits verbietet.
Also im Working Draft steht:
"Void elements can't have any contents (since there's no end tag, no content can be put between the start tag and the end tag)."
Da img ein void Element ist, heißt das, Bilder können keine Inhalte haben, weil es bei ihnen kein schließendes Tag gibt.
Daraus den Umkehrschluss zu ziehen, dass ein schließendes Tag verboten ist, ist nicht logisch.
Weil es keinen Sinn macht, ein leeres Element mit einem End-Tag zu versehen ist diese Diskussion hier aber ohnehin etwas - naja - praxisfern. :-)
Was den Validator betrifft: entweder er bemängelt ein schließendes </img> nicht, weil HTML5 ja weitestmöglich abwärts-kompatibel zu HTML 4.01 UND XHTML sein soll. Oder aber das ist einer der Gründe, warum der validator die HTML5-Validierung noch als ein experimentelles Feature bezeichnet.
Interessant übrigens, dass die Seite mit den specs selber nciht valide ist. Ein Blick in den Quellcode zeigt, dass dort zwei verschiedene DOCTYPEs angegeben sind (HTML 4.01 strict und HTML5) :-)
Interessant ist auch die Sprachangabe (ich habe mir schon immer gedacht, dass Ian Hickson nur sich selber versteht).
Wer mehr wissen will: lang="[link:http://ian.hixie.ch/bible/english@title=en-US-x-Hixie]"
Viele Grüße,
Marc.
Interessant übrigens, dass die Seite mit den specs selber nciht valide ist. Ein Blick in den Quellcode zeigt, dass dort zwei verschiedene DOCTYPEs angegeben sind (HTML 4.01 strict und HTML5) :-)
Ist mir auch aufgefallen.
Hallo,
Interessant übrigens, dass die Seite mit den specs selber nciht valide ist. Ein Blick in den Quellcode zeigt, dass dort zwei verschiedene DOCTYPEs angegeben sind (HTML 4.01 strict und HTML5) :-)
Ist mir auch aufgefallen.
Wohl nur eine Unachtsamkeit - wirklich lustig ist eh die Sprachangabe. Denn die ist Absicht! :-)
Viele Grüße,
Marc.
Grüße dich, Marc,
Also im Working Draft steht:
"Void elements can't have any contents (since there's no end tag, no content can be put between the start tag and the end tag)."
Bitte gibt deine Quelle an, das verursacht weniger Verwirrung. :)
Da img ein void Element ist, heißt das, Bilder können keine Inhalte haben, weil es bei ihnen kein schließendes Tag gibt.
Daraus den Umkehrschluss zu ziehen, dass ein schließendes Tag verboten ist, ist nicht logisch.
Dein Zitat stammt aus "The HTML syntax", betrifft also nur HTML. Wenn es kein schließendes Tag gibt, wie kann es dann erlaubt sein (was ja die logische Folge deiner Aussage ist).
Weil es keinen Sinn macht, ein leeres Element mit einem End-Tag zu versehen ist diese Diskussion hier aber ohnehin etwas - naja - praxisfern. :-)
Nun, der Ausgangspunkt der Diskussion war ein anderer. Zudem ist es nicht gesund, sich jeden Tag über die wirklich großen Probleme Gedanken zu machen ;-)
Was den Validator betrifft: entweder er bemängelt ein schließendes </img> nicht, weil HTML5 ja weitestmöglich abwärts-kompatibel zu HTML 4.01 UND XHTML sein soll. Oder aber das ist einer der Gründe, warum der validator die HTML5-Validierung noch als ein experimentelles Feature bezeichnet.
Jetzt bist du verwirrt.
HTML 4.01 verbietet das Endtag ausdrücklich, aber der Fehler wird vom Validator nicht gefunden. HTML5 sagt zwar nicht explizit, dass ein Endtag verboten ist, aber der Parser verursacht einen Parse error, siehe "Any other end tag" am Ende von 8.2.5.4.7 The "in body" insertion mode. Der HTML5-Parser wirft dir auch eine Fehlermeldung aus, wenn du </img>
schreibst.
XHTML 1.x und XHTML5 erlauben dir <img></img>
, aber selbstverständlich nicht <img>content</img>
(das bestätigt dir auch der Validator).
Gruß, Daniel
Hallo Daniel,
Da img ein void Element ist, heißt das, Bilder können keine Inhalte haben, weil es bei ihnen kein schließendes Tag gibt.
Daraus den Umkehrschluss zu ziehen, dass ein schließendes Tag verboten ist, ist nicht logisch.
Dein Zitat stammt aus "The HTML syntax", betrifft also nur HTML. Wenn es kein schließendes Tag gibt, wie kann es dann erlaubt sein (was ja die logische Folge deiner Aussage ist).
Ein anderes Beispiel (nicht um unbedingt Recht zu haben, sondern nur so zum Spaß):
Wenn es auf einer Insel keine Autos gibt und die Regierung beschließt, keine Geschwindikeitsbeschränkungen festzulegen, weil es sowieso keine Autos gibt, muss das doch nicht heißen, dass ich Autos nicht importieren darf, oder?
:-)
Weil es keinen Sinn macht, ein leeres Element mit einem End-Tag zu versehen ist diese Diskussion hier aber ohnehin etwas - naja - praxisfern. :-)
Nun, der Ausgangspunkt der Diskussion war ein anderer. Zudem ist es nicht gesund, sich jeden Tag über die wirklich großen Probleme Gedanken zu machen ;-)
Eine sehr gesunde Einstellung! :-D
Was den Validator betrifft: entweder er bemängelt ein schließendes </img> nicht, weil HTML5 ja weitestmöglich abwärts-kompatibel zu HTML 4.01 UND XHTML sein soll. Oder aber das ist einer der Gründe, warum der validator die HTML5-Validierung noch als ein experimentelles Feature bezeichnet.
Jetzt bist du verwirrt.
HTML 4.01 verbietet das Endtag ausdrücklich, aber der Fehler wird vom Validator nicht gefunden. HTML5 sagt zwar nicht explizit, dass ein Endtag verboten ist, aber der Parser verursacht einen Parse error, siehe "Any other end tag" am Ende von 8.2.5.4.7 The "in body" insertion mode. Der HTML5-Parser wirft dir auch eine Fehlermeldung aus, wenn du</img>
schreibst.
Hoppla, woher hatte ich das denn, dass der HTML5-Validator das nicht bemängelt?
Ausgehend von der Annahme, dass <img></img>
in HTML5 valide ist, hab eich dann hier lauter Blödsinn verzapft. Sorry...
XHTML 1.x und XHTML5 erlauben dir
<img></img>
, aber selbstverständlich nicht<img>content</img>
(das bestätigt dir auch der Validator).
Das wiederum ist klar.
Viele Grüße,
Marc.
Grüße dich, Marc,
Wenn es auf einer Insel keine Autos gibt und die Regierung beschließt, keine Geschwindikeitsbeschränkungen festzulegen, weil es sowieso keine Autos gibt, muss das doch nicht heißen, dass ich Autos nicht importieren darf, oder?
Entschuldige, aber auf Auto- und Fußballmetaphern reagiere ich allergisch. Hatschi.
Hoppla, woher hatte ich das denn, dass der HTML5-Validator das nicht bemängelt?
Vielleicht hatte ich mich ein paar posts vorher undeutlich ausgedrückt. :)
Gruß, Daniel
Hoppla, woher hatte ich das denn, dass der HTML5-Validator das nicht bemängelt?
Ausgehend von der Annahme, dass
<img></img>
in HTML5 valide ist, hab eich dann hier lauter Blödsinn verzapft. Sorry...
Vielleicht hierher!?
@@Marc:
nuqneH
Also im Working Draft steht:
"Void elements can't have any contents (since there's no end tag, no content can be put between the start tag and the end tag)."
[…] Daraus den Umkehrschluss zu ziehen, dass ein schließendes Tag verboten ist, ist nicht logisch.
Etwas weiter oben steht:
“Void elements only have a start tag; end tags must not be specified for void elements.”
Wer lesen kann … ;-)
Qapla'