Nach all den Jahren, in denen sich XHTML 1 größter Beliebtheit erfreute, sieht für viele Webworker so etwas aus wie ein einziger Syntaxfehler:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Hallo Welt!</title>
<p class="welt">Hallo Welt!
<ul>
<li>Lorem
<li>Ipsum
<li>Dolor
</ul>
Da fehlen zwar einige Start- und End-Tags, aber tatsächlich ist das ein absolut gültiges HTML(5)-Dokument. Man kann das gleiche Dokument natürlich auch so schreiben …
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Hallo Welt!</title>
</head>
<body>
<p class="welt">
Hallo Welt!
</p>
<ul>
<li>Lorem</li>
<li>Ipsum</li>
<li>Dolor</li>
</ul>
</body>
</html>
… aber hat man etwas davon? Der Browser (jeder Browser) baut aus beiden HTML-Schnipseln das exakt gleiche DOM und damit die exakt gleiche Website zusammen. Tags wie <body> und </li> werden vom HTML-Parser auf eigene Faust an den richtigen Stellen eingebaut, so dass es im Endeffekt völlig egal ist, ob man HTML in der Spar-Variante schreibt, das XHTML-Lookalike nimmt oder sich seine eigene Mischform zusammenkombiniert. Welche Tags man unter welchen Umständen auslassen kann erklären unter anderem die HTML5-Spezifikationen.
Die Präsentation des ersten HTML-Schnipsels sorgt manchmal für erhebliches Gruseln, doch wenn man mal die ersten Abwehrreflexe sieht unaufgeräumt aus
und kenne ich nicht
überwunden hat, wird klar, dass minimales HTML durchaus seine Vorteile hat: man tippt schließlich weniger und transferiert weniger Bytes zum Browser des Users. Das Einzige, auf das man manchmal aufpassen muss, sind die Inhalte an den Grenzen ausgelassener Tags. Angenommen dies wäre unser HTML:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Hallo Welt!</title>
<script>alert("Hello World!")</script>
<p class="welt">Hallo Welt!
<!-- Saluton Mondo! -->
Wo werden hier </head> und </body> eingefügt? Landen der Kommentar und das <script>-Element außerhalb oder innerhalb des Bodys? Die Antwort: das Script landet im Head und der Kommentar als letztes Element im Body. Der Parser schließt den Head erst, wenn er das erste Element antrifft, dass keinesfalls im Head vorkommen kann, was in diesem Fall das <p> wäre. Gleiches gilt beim Kommentar, denn der könnte zwar auch erst nach dem Body kommen, aber der Parser hat keinerlei Anlass, den Body vor dem Kommentar zu schließen. Wenn es bei solchen zweideutigen Elementen wie Scripts und Kommentaren mal wirklich wichtig ist, was in solchen Grenzgebieten wo landet sind die optionalen Tags von unter anderem <html>, <body> und <li> das Mittel der Wahl, aber sonst? Kann man machen, muss man nicht.
Update: Lest das hier um zu verhindern, dass euch fehlende Body-Starttags im IE in den Hintern beißen.




Rodney Rehm ¶
8. November 2010, 13:34 Uhr
Hallo Peter,
"muss man nicht" bedeutet aber nicht "sollte man nicht".
Man spart sich bei dieser minimalistischen Schreibweise doch bestenfalls 10 Sekunden Tipparbeit und vielleicht ein bisschen Traffic (wohoo!). Man verliert aber an Eindeutigkeit. Habe ich einen und einen muss ich nicht lange Denken um zu wissen in welchem Kontext das nun ausgeführt wird.
Valides xHTML5 kann von jeden dahingerotzten XML-Parser interpretiert werden. minimalistisches HTML5 nicht. Die Fehlerkorrektur des Browsers fehlt hier in aller Regel. Was dazu führt, dass WebScraping-Dienste einen (massiven) Mehraufwand fahren müssen, um ihre Daten extrahieren zu können.
Wir sprechen bspw. von Microformats und ähnlichen tollen Sachen, vergessen aber, dass sich auch andere Tools als Browser, und andere Services als Google und Yahoo an eben diesen Informationen erfreuen könnten. Wer seine Seiten semantisch (html+) auszeichnet, sollte auch dafür sorgen, dass diese Daten von simpler gestrickten Maschinen gelesen werden können.
Obwohl du natürlich recht hast, das minimalistische HTML durchaus legitim ist, halte ich es für fahrlässig dafür zu werben.