Dennoch ist eine HTML-Suppe schwieriger zu lesen (für einen Menschen) als ein XML-kompatibles Dokument.
Für Menschenlesbarkeit sind Lints zuständig, weniger Dokumenttypen und Validierung. Klar, bei XML ist das ein nützliches »Abfallprodukt«.
Die Verarbeitungsregeln sind einfacher da die Fehlerbehandlung einfach sehr drakonisch ist - das hat imho. den essentiellen Vorteil, dass parser weniger komplex sein müssen und dadurch Fehler einfacher zu vermeiden sind.
Das sehe ich nicht so. XML ist sehr komplex, vielseitig und allgemein, HTML5 ist hingegen sehr speziell. Zwar sind die Parser-Algorithmen bei HTML5 teilweise komplexer, weil verschiedene Syntaxen möglich sind. Dafür gibt es bei XML eine Menge an Features und Eigenheiten, die bei einfachen HTML5 nicht möglich sind. XML ist ein ganzes Ökosystem an verbundenen Techniken, selbst wenn diese in konventionellem XHTML 1.0 wenig Verwendung finden. Es hat schon seine Gründe, warum sich die HTML5-Macher gegen Features wie Namensräume wehren, die die Komplexität unglaublich erhöhen.
Der HTML5 Tokenizer und Tree Builder ist vergleichsweise überschaubar. Ersterer hat 1.698 Zeilen C++-Code in Webkit, letzterer 2.811 Zeilen. Die Java-Implementierung (Basis für Gecko) hat 6.946 bzw. 5.557 Zeilen. Die PHP-Implementierung 2.421 bzw. 3.840 Zeilen. (Es kommen jeweils noch kleinere Helferklassen hinzu und z.B. die ellenlange Entity-Liste.)
parser.c aus libxml2 umfasst 14.982 Zeilen C-Code. Sicher ließe sich einfaches XML, z.B. XHTML 1.0 Strict ohne funky Markup aus anderen Namensräumen und ohne Sperenzchen, auch einfach parsen. Einen total dummen, aber für diese Zwecke ausreichenden Parser, der XML nicht vollständig implementiert, könnte man sicher in ein paar tausend Zeilen schreiben. xmlparse.c aus Expat umfasst bspw. 6.291 Zeilen C-Code.
Parser wie libxml2 implementieren nicht nur einfach XML-Grundlagen, sondern sämtliche Sonderfälle und ein dutzend Zusatztechniken aus dem XML-Umfeld. Im Vergleich dazu kann man einen HTML5-Parser »mal eben« in ein paar dicken, aber in weitesgehend geschlossenen Ruby-, PHP- oder Python-Klassen schreiben. XML ist mehr die eierlegende Wollmilchsau. Das ist ja erst einmal ein Vorteil, wenn man DOM, XPath, XSLT, DTD-/Schema-/Relax-Validierung usw. frei Haus bekommt. Aber unter dem Strich ist das selbstverständlich komplexer als HTML5 mit seinem bewusst sehr beschränkten Aufgabenbereich.
Mathias