Sven Rautenberg: warum HTML pervers ist und XHTML nicht...

Beitrag lesen

Moin!

ich hab' mir mal überlegt, was passiert, wenn ein ganz sturer Parser auf eine gültige HTML- oder XHTML-Datei stößt. Da kommt bei HTML sicherlich als erstes die Frage, ob das eine oder andere Attribut nun Anführungszeichen haben muss, oder nicht. Wer ist eigentlich beim W3C auf den Bolzen gekommen, dass man die Dinger manchmal weglassen kann? Imho wird's dadruch wahnsinnig chaotisch...

Naja, viel schlimmer als die Tatsache, daß man die Anführungszeichen bei Zahlen weglassen darf ist die Tatsache, daß real existierende Parser in Browsern es sogar erlauben, sie bei eigentlich allen Situationen wegzulassen. Trennzeichen der Attribute ist das Leerzeichen, und Trennzeichen zwischen Attribut und Wert ist das Gleichheitszeichen. Anführungsstriche optional (auch wenn der Standard das anders sagt). Sehe ich nicht also chaotisch an. Man muß nur wissen, daß dann Leerzeichen ein Problem machen.

Noch schöner sind die optionalen oder ganz fehlenden End-Tags - woher soll der Parser (der ja noch nichts von der Bedeutung der Tags weiß!) wissen, ob ein nicht vorhandenes Endtag nun ein Fehler ist oder so ok..? Sicher kann er in der DTD nachsehen, aber dafür muss er erstmal die komplette Dateio gelesen haben - es könnte ja sein, dass das Tag (z.B. ein <li>) doch noch irgendwo geschlossen wird... Somit kann also ein stur nach HTML arbeitender Browser auch erst etwas anzeigen, wenn alles geladen ist - vorher weiß er ja nichtnur nicht, ob die Datei gültigt, noch wo nun das eine oder andere Tag nun zu Ende ist. Insbesondere bei einem <li> stellt sich dann auch noch auf der Darstellungs-Ebene die Frage, wo man das Ding nun als "zu Ende" annehmen kann (oder muss).

Tja, die Frage ist doch: Wenn man sich als Parser in einer Liste befindet, was kann man erwarten?

Zwingend zu erwarten ist das erste <li>. Dann kann allerhand Stoff kommen, welcher zwingend in Tags einzuschließen ist wie z.B. <b>. Dinge wie <p> haben innerhalb von <li> nicht unbedingt etwas verloren. Aber egal: Wenn ein weiteres <li> kommt, ist genau vorher ein </li> anzunehmen und der <li>-Block somit geschlossen. Es gibt keine weitere Möglichkeit, denn <li> kann nicht geschachtelt werden - dazu müßte eine neue Liste eröffnet werden.

<p> ist genauso ein Kandidat: Wenn eines kommt, ist vorher einfach </p> anzunehmen.

Ok, es vereinfacht die Sache natürlich nicht, und die Browser geraten schonmal darüber in Streit, wie denn eine nicht abgeschlossene Tabellenstruktur auszusehen hat. Ich schließe alle schließbaren Tags immer.

Bei XHTML ist dagegen eindeutig geregelt, wo ein Tag zu Ende ist - wenn es mit /> endet sofort, sonst eben erst, wenn ein </li> kommt (um mal bei dem Beispiel zu bleiben.

Ja, es macht die Parserarbeit einfacher. HTML ist da etwas interpretationsfähiger. Umso mehr sollte man sich Tag-Schließen angewöhnen. :)

Was ich damit sagen will, ist, dass HTML nicht wirklich logisch ist, es ist eine Aneinanderreihung von Ausnahmen von Ausnahmen, die man kaum verstehen kann, soetwas muss man als Browser eigentlich falsch interpretieren.

HTML ist logisch. Wäre es nicht logisch, könnte es von einer Programmlogik ja nicht ausgewertet werden. Abgesehen davon ist HTML, wenn man es schön schreibt, genauso toll oder untoll wie XHTML. Mit Dem Unterschied, daß in XHTML noch ein paar zusätzliche Bedingungen für die Schreibweise gelten, die von XML hereingekommen sind.

Wie haltet ihr das, benutzt ihr alle "normales" HTML oder wird lieber in XHTML geschrieben?

HTML ist vollkommen ausreichend. Von meiner eigenen Homepage gibts irgendwo auf der Platte sogar eine Strict-Version, für Kunden schreibe ich transitional wegen Netscape 4 (der macht sonst z.B. Rahmen um verlinkte Bilder, die man mit CSS nicht abstellen kann), aber möglichst strict.

Ich persönlcih versuch' immer XHTML1.1 zu schreiben, wenn das - warum auch immer - nicht geht zumindest innerhalb der XHTML-Syntax zu bleiben.

Mir ist XHTML 1.1 noch ziemlich schnuppe. Ich hab noch nicht mit XML/XSLT/etc zu tun gehabt, und mein Lieblingseditor Phase 5 unterstützt bei seinen klugen Hilfsfunktionen nur HTML, aber kein XHTML. Das ist IMO ein guter Grund, erstmal bei HTML zu bleiben.

Abgesehen davon denke ich, daß XHTML überschätzt wird. Natürlich ist es gut, wenn das W3C an der Entwicklungsfront etwas Druck macht, um neue Standards zu etablieren. Riesige Sprünge wird es im HTML-Bereich dort aber IMO demnächst nicht geben. Viel wichtiger hingegen ist, daß die Browserunterstützung hinterherkommt. Bei Mozilla sehe ich da keine Probleme, Opera bleibt auch am Ball - viel schlimmer ist der IE. Bin gespannt, was Microsoft da in der nächsten Version einbaut - und was wieder einmal ignoriert wird.

- Sven Rautenberg