Hallo,
Das mit den Tags, die nicht geschlossen werden müssen/dürfen, musst du einfach hinnehmen. Ich habe da die Logik auch noch nicht verstanden.
die ist aber eigentlich ganz einfach. Es gibt Elemente, die per definitionem keinen Inhalt haben _dürfen_, etwa br, hr, input oder img. Diese Elemente werden daher in HTML ohne schließendes Tag notiert. Wenn man nicht auf XHTML eingehen möchte, ist die Geschichte damit schon abgehakt.
XHTML ist von XML abgeleitet, und XML ist streng systematisch und kennt keine Extrawürste für die genannten Beispiele leerer Elemente - sie _müssen_ geschlossen werden, obwohl sie gar keinen Inhalt haben _dürfen_. In XHTML wäre <input></input> daher formal korrekt, aber problematisch - siehe unten.
XML kennt eben für leere Elemente auch die Kurznotation <element />, die öffnendes und schließendes Tag zugleich ist. Genau diese Form wird in XHTML empfohlen für Elemente, die keinen Inhalt haben dürfen - weil wohl so mancher Tagsoup-Parser mit <br></br> auf die Klappe fällt und zwei br-Elemente erkennt.
Umgekehrt sollte man bei Elementen, die einen Inhalt haben dürfen, die Kurzschreibweise auch dann nicht verwenden, wenn das Element ausnahmsweise mal leer ist, weil die einfachen HTML-Parser dann kein End-Tag finden. Also beispielsweise <script ...></script> immer ausschreiben, weil sonst der gesamte nachfolgende Dokumentinhlat von manchen Browsern noch als Teil des Scripts interpretiert wird.
Wichtig sind hier auch die feinen Unterschiede bei den doctypes:
html 4.1: <input ...>, <br>
Es gibt kein HTML 4.1, du meinst vermutlich 4.0 und 4.01.
html (5): egal
Die Klammer bitte weglassen! Nur bei HTML ist wirklich beides ausdrücklich erlaubt.
Ciao,
Martin
Der Sinn einer Behörde besteht in ihrer Existenz.
(alte Beamtenweisheit)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(