Rolf B: Vervendung von <br>

Beitrag lesen

Hallo Tanja,

die Antwort lautet, wie so oft: kommt drauf an.

<br> ist ein inhaltsleeres Element, das eigentlich nur das Start-Tag benötigt. Davon gibt es einige.

Inhaltsleere Elemente verursachen Probleme, wenn man das HTML Dokument von einem XML-Parser verarbeiten lassen möchte. In XML muss jedes Element aus Start- und Ende-Tag bestehen, oder die Kurzfassung <bla /> verwenden.

Zu HTML 4 Zeiten unterschied man zwei HTML Dialekte: HTML und XHTML. Mit HTML 5 macht man das nicht mehr, allerdings gibt es die XML-Form nach wie vor, man nennt sie aber einfach "HTML in XML-Schreibweise". Oder anders gesagt: man formuliert das HTML so, dass es für einen XML-Parser verständlich ist. Dazu gehört unter anderem die <bla />-Schreibweise für inhaltsleere Elemente und der Grundsatz, alle Attributwerte in Anführungszeichen zu setzen.

Die Meldung des HTML-Checkers ist deshalb mit einem Löffel Salz zu genießen.

Trailing slash on void elements has no effect

Für einen HTML-Parser ist das richtig. Aber wenn ein XML Parser verwendet werden soll, dann gibt es einen Effekt. Und zwar der, dass das Parser überhaupt erst verwendbar ist.

and interacts badly with unquoted attribute values.

Diesen Teil finde ich sehr merkwürdig formuliert. In HTML sind Attributwerte ohne Anführungszeichen zulässig. In XML hingegen nicht. D.h. wenn man die Absicht hat, sein HTML Dokument auch für XML Parser verständlich zu machen, sind „unquoted attribute values“ schlichtweg unzulässig. Eine Schreibweise wie <br id=foo /> wäre kompletter Unsinn. Entweder will man XML-Verarbeitung, dann muss foo in Anführungszeichen, oder man will nur HTML, dann kann man das / weglassen.

Vielleicht fragst Du jetzt noch, wann man denn überhaupt einen XML Parser für ein HTML Dokument verwenden sollte. Antwort: solange Du das HTML von Hand oder mit einem HTML-Tool erzeugst und in einem Browser anzeigen lassen willst, gar nicht. Aber wenn Du XML-basierende Daten oder Arbeitsabläufe hast, dann kann die Verarbeitbarkeit als XML Vorteile haben.

Rolf

--
sumpsi - posui - obstruxi