Hi Detlef
Er hat das zugehörige HTML da er sowohl das style-Element als auch die style-Attribute berücksichtigt.
Aber nicht immer, er prüft auch reines CSS, als Datei oder Textschnipsel.
Meine Aussagen beziehen sich nur auf HTML-Dokumente welche CSS verwenden.
Oder willst du ihm vorwerfen, dass er so freundlich ist, den Inhalt des style-Elements selbst aus dem HTML zu fädeln, statt dich zu zwingen, es selbst zu tun? ;-)
Das hast Du falsch verstanden. Ich sagte das im Bezug zur Aussage von Sven "Er bräuchte allerdings sowohl das zugehörige HTML...". Ich wollte nur deutlich machen das dem Validator das HTML zur Verfügung steht.
Eine Rendering-Engine brauch ein CSS-Validator nicht, da zuerst das CSS interpretiert und dann gerendert wird (das macht wohl jeder Browser so) ;-)
Aber auch nicht viel weniger.
Er müsste den DOM-Baum aufbauen und das CSS zuweisen, um alle Vererbungen zu erfassen, dann anhand aller möglicher Viewport- und Schriftgrößen die resultierenden Werte für Größen, Positionen und Ebenen aller Elemente bestimmen,...
Genau das sollte ein Validator machen.
..feststellen welches Element (auch nur teilweise) den Hintergrund eines anderen bildet.
Warnungen zu Hinter/Vordergrundfarben bräuchte er nur bei absolut positionierten Elemente ausgeben. Ansonsten greift die Vererbung etc?!
Erst dann könnten zuverlässige Aussagen über die Notwendigkeit der Zuweisung einer Farbe oder Hintergrundfarbe erfolgen.
Das wäre dann mehr, als ein Browser leisten muss, der jeweils nur die gerade aktuelle Viewport- und Schriftgröße berücksichtigen muss.
Korrigiere mich wenn ich falsch liege, aber laut CSS-Specs. ist es überhaupt nicht notwendig eine Hinter/Vordergrundfarbe anzugeben, wozu dann die Warnungen?
Der CSS-Validator kann (oder eher könnte) also auf jeden Fall anders, er ist nur Mangel und Fehlerhaft programmiert.
Bestes Beispiel ist folgendes:
p { color:red; }
p { background-color:blue; }
Einmal meckert er die fehlende Vordergrund- und einmal die Hindergrundfarbe an...OK, so intelligent könnte er sein, identische Selektoren zusammenzufassen.
Das würde aber auch einen höheren Aufwand bedeuten, weil er das CSS dann nicht einfach Zeile für Zeile durchgehen könnte, sondern _alles_ komplett zuordnen müsste.
Richtig, aber genau das erwarte ich von einen Validator.
Weiterhin berücksichtigt er überhaupt keine HTML-Attribute wie z. B. color, face, size, background usw. obwol diese laut CSS-Specs. als "CSS-Daten" verarbeitet werden müssen:
Steht in der Spec. auch, dass ein CSS-Validator HTML-Attribute verarbeiten muss?
In keiner Spec. der Welt steht wie sich ein Validator verhalten muss (auch nicht bei HTML). Dafür müsste man erst einmal spezifizieren was ein "Validator" überhaupt ist. Meiner Ansicht nach sollte ein Validator ein Dokument dahingehend überprüfen ob es den Angaben einer Spec. entspricht. Deswegen ist der W3C-Validator für mich auch kein Validator sondern ein Syntaxchecker mit DTD-Überprüfung. Das dumme Teil erkennt ja nicht mal falsche Farbwerte in Attribute.
Wenn er ein CSS-HTML-Validator wäre.
Ist er es nicht? Warum berücksichtigt er dann CSS-Angaben in HTML-Dokumenten, s.o.?
Prüft er das CSS nicht auf korrekten Syntax?
Ok, nennen wir das Teil Syntaxchecker, aber bitte nicht Validator.
Von welchem HTML-Validator oder XML-Parser wird verlangt, dass er ein entsprechendes Dokument nicht nur entsprechend der DTD prüft, ...
Gegenfrage, von welchen Validator wird verlangt das er gegen eine DTD validieren muss?
Diesbezüglich existieren keine Vorschriften, nur "könnte", "sollte" etc.
Warum nicht gegen ein Schema validieren oder mit eigenen Heuristiken?
Lese mal http://edition-w3.de/TR/1999/REC-html401-19991224/sgml/intro.html#h-19.1
Die Warnungen des CSS-Validators sollten als das genommen werden, was sie sind, lediglich ein Hinweis, dass eine notwendige oder empfehlenswerte Angabe vergessen sein _könnte_.
Ich habe nichts gegen vorsorgliche Meldungen, aber schlicht falsche Aussagen sollte so ein Teil nicht liefern und das tut es Sehrwohl.
Viele Grüße
Thomas