Hallo,
nachdem ich nun meine neu designeten Seiten durch den W3C-Validator (http://validator.w3.org/) gejagt habe, bin ich nicht mehr so ganz sicher, was ich vom W3C halten soll. Zwar wurden mir einige tatsächliche Fehler klargemacht, aber anderes halte ich für ziemlich unsinnig. Als Fehler bezeichne ich hier, was beide großen Browser korrekt darstellen, aber vom W3C als falsch markiert wird - und wofür es offenbar keine Lösung gibt. Folgendes fiel mir auf:
- Im <frameset> werden border, frameborder und framespacing angemeckert. Ja wie soll ich denn den Rahmen wegkriegen?
- <noframes> scheint auch falsch zu sein. Muß man das durch <body> ersetzen?
- Bei <img> wird der Parameter name beanstandet. Ist der wirklich falsch? Ich brauche das für wartungsarme JavaScript-Funktionen (images[x] fällt flach, weil ich das ggf. in vielen Seiten ändern müßte).
- Ziemlich krass: Bei Countergrafiken wird jedes "&" angemeckert (z.B. <img src="count.pl?id=cheatah&counter=test">, da ist ein "&" drin...). Begründung: "general entity 'counter' [in diesem Fall] not defined and no default entity". Die Erklärung dazu ist folgende (http://www.cs.duke.edu/~dsb/kgv-faq/errors.html#bad-entity):
--- snip ---
A URL for a CGI program that uses `&' as a separator, such as "http://host/prog?x=1&y=2". Gerald writes:
This is a common problem: the inventors of CGI didn't think things through very carefully when they decided to use the '&' character as a separator between CGI arguments, because '&' has special status in HTML.
The only way to get around this is for the author of the CGI program to use a different value between arguments, like ';' or '', which would allow the link to be coded as <img src="http://site/cgi?opt1=val1;opt2=val2"> or whatever.
Please contact the maintainer of the CGI program you are linking to, and ask them to use a different character for their separator. (Normally this is extremely easy to add to the CGI program; multiple characters can also be used so existing links using the '&' character will still work.)
--- snip ---
Mit anderen Worten: Die Erfinder von CGI waren zu blöd, um über ihren Tellerrand zu schauen. So lange ich CGI kenne sind mir aber fast ausschließlich "&"s als Trennung zwischen Parametern untergekommen, deswegen kann man den Fehler wohl kaum den Programmierern von Scripts anlasten. Das W3C glaubt hier offenbar, die "älteren Rechte" zu haben, weil HTML vor CGI da war. Aber war HTML 4 auch vor CGI da?
Weiter im Text:
- <table height="100%"> ist offenbar nicht erlaubt. Wie kriege ich den Seiteninhalt sonst an den unteren Bildschirmrand, und zwar so, daß es auch zu HTML 3.2 (zumindest) bzw. der Interpretation der Browser kompatibel bleibt?
- Mit <script> hat W3C offenbar arge Probleme... man sehe sich nur mal http://validator.w3.org/check?uri=http%3A%2F%2Fcheatah.net%2Ftest%2Fwerbung.htm an! Die entsprechende Seite erzeugt mit JavaScript eine Tabelle, die soweit ich das sehe HTML 4 ready ist. Die Fehlermeldungen aber "beweisen" das Gegenteil...
Fazit:
Nur eine einzige Seite von denen, die bei http://cheatah.net/test angezeigt werden, ist HTML 4 ready, nämlich http://validator.w3.org/check?uri=http%3A%2F%2Fcheatah.net%2Ftest%2Fsubmenu.htm (die Hauptseite habe ich gar nicht erst geprüft, die ist sowieso "alter Schrott"). Dort mußte ich aber auch erst die Reihenfolge <table><form>...</form></table> umkehren, obwohl sich das für manche Fälle als unvermeidbar erwies. Naja.
Meine Meinung:
Ich werde weiterhin versuchen, HTML 4 einzuhalten. So wie ich das sehe, hat aber das W3C noch einiges an ihrem aktuellen Standard zu tun.
Ich bin gespannt, was andere dazu meinen :-) Testet doch mal eure Seite mit dem Validator! Vermutlich werdet ihr überrascht sein...
Cheatah