Hallo,
Habe nicht alles gelesen, dieser Jendryschik z.B. behauptet
sagenhaften Blödsinn:
Nicht wirklich. Man kann zwar der Auffassung sein, dass seine Argumente die anderen Argumente nicht wettmachen, aber Blödsinn sind sie deswegen noch lange nicht.
"Konstrukte, die falsch zu sein scheinen (wie <p/Absatz/ statt <p>Absatz</p>, um ein wenig vorzugreifen), aber syntaktisch richtig sind"
Sowas ist nur dann syntaktisch gültiges SGML (wenn SHORTTAGs aktiviert sind, was in der Regel nicht so ist) und ist sicher kein gültiges HTML.
Doch. HTML ist eine SGML-Applikation, siehe HTML 4.01 § 4.2 SGML:
| HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language SGML (defined in [ISO8879]).
Ferner ist SHORTTAG aktiviert, siehe die SGML-Deklaration zu HTML (http://www.w3.org/TR/html401/HTML4.decl):
| SHORTTAG YES
Und Michael Jendryschik schreibt selbst, dass:
| [Konstrukte, die] aber syntaktisch richtig sind und dennoch von keinem
| modernen Browser richtig verstanden werden. Webautoren verwenden diese
| Konstrukte zumeist unabsichtlich und wundern sich dann über eine falsche
| Darstellung, die aus »Fehlern« resultiert, die sie auch mithilfe von
| Werkzeugen wie Validatoren nicht aufspüren können, weil es sich rein
| syntaktisch nicht um Fehler handelt.
Die Kritik ist also nicht so gemeint, dass irgendjemand tatsächlich <p/bla/ versucht zu benutzen, sondern dass man derartige Konstrukte, sollten sie sich aus Versehen in den Code schleichen, nicht mit automatisierten Tools wie Validatoren finden kann, die andere Syntaxfehler problemlos finden.
Ferner: Genau diese Features machen es auch so schwierig, einige Validator-Fehlereldungen zu verstehen. Siehe z.B. folgende Links:
http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.christian-seiler.de%2Ftemp%2Ftest-hr-1.html
http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.christian-seiler.de%2Ftemp%2Ftest-hr-2.html
Einziger Unterschied zwischen beiden Seiten ist, dass in der einen <hr> steht, in der anderen <hr /> (also XHTML-Syntax, obwohl HTML4 im DOCTYPE steht). Was passiert hier? Das /-Zeichen beendet den <hr>-Tag im zweiten Beispiel, da das hr-Element in HTML leer ist, ist das auch sofort wieder zu. Damit bleibt ein > als Textknoten direkt innerhalb von <body> und das ist in HTML4 Strict nicht erlaubt.
Gut, die Entwickler vom Validator haben zusätzliche Informationen zu der Fehlermeldung hinzugefügt, dass man zumindest jetzt eine Ahnung hat, was diese Fehlermeldung verursacht, allerdings bleibt sie dennoch ziemlich obskur.
Andererseits erkennt ein Validator z.B.
<p>Hallo<br /
Test</p>
nicht als falsch an (er sieht <p>Hallo<br>Test</p>), ein Browser wird jedoch Probleme haben, das korrekt zu interpretieren.
"Die Schreibweise <p>ä</p> ist ebenso gültig wie <p>ä</p>"
Ist sie nicht. Die Browser sind zwar sehr fehlertolerant und verstehen das, aber dadurch wird es noch lange nicht gültiges HTML.
http://www.christian-seiler.de/temp/test-entity-inv.html ->
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.christian-seiler.de%2Ftemp%2Ftest-entity-inv.html&charset=(detect+automatically)&doctype=Inline&ss=1&group=0&verbose=1
Woher nimmst Du die Auffassung, dass das kein gültiges HTML sei?
Eben. IEs sind leider am meisten verbreitet, und genau diese können die Vorteile von XHTML nicht nutzen. Man muss ihnen txt/html anbieten, was sie angesichts XHTML-Syntax in den Quirks-Modus bringt und das XHTML somit wertlos macht.
Nein. XHTML ist nicht wertlos - auch wenn es als text/html ausgeliefert wird, sind zwar die Vorteile im Browser komplett verloren, jedoch gibt es diverse andere Vorteile, die bleiben:
* Validatoren können trotz des Content-Types einen XML-Parser statt eines
SGML-Parsers verwenden und somit viel mehr Syntaxfehler finden, als in
HTML.
* Man kann HTML-Seiten - wenn sie XHTML sind - viel leichter weiter-
verarbeiten. Zum Beispiel kann man ja innerhalb eines Scriptes durchaus
explizit sagen "hol Dir folgende Seite, speichere den Inhalt in einen
String und jage den durch einen XML-Parser" - die gibt's wie Sand am
Meer, dann kann man auch noch XSLT und Gedöns drüberjagen und hat eine
GANZE Menge Möglichkeiten - bei normalem HTML wird das dann schon etwas
schwieriger (wenn es auch inzwischen relativ viele HTML-Parser gibt, die
man einigermaßen brauchbar verwenden kann).
Viele Grüße,
Christian