Popularny mit mówi, że poprawnie wyświetlająca się strona przechodzi pozytywnie walidację W3C. Czy rzeczywiście jest to jednoznaczne z interpretacją strony przez przeglądarki?
Wśród webmasterów od lat panuje przekonanie, że poprawnie napisana strona musi pozytywnie przechodzić test przeprowadzany przez walidator W3C (http://validator.w3.org). Poprawny wynik, pokazany na zielonym pasku, oznacza według nich, że strona jest dobrze napisana i poprawnie wyświetli się we wszystkich przeglądarkach.
Jako przykład weźmy kod jak poniżej.
Żółć
Kod wygląda na czyste szaleństwo: nie ma elementów
,
ani
, tagi
li
są niezamknięte, wartość atrybutu
href
nie jest otoczona nawiasami, po „gęślą” występuje tajemniczy znacznik
>
, a fragment
<= />
jest pozbawiony sensu. Żaden rozsądnie myślący webmaster nie powiedziałby, że ten kod jest poprawny. Tymczasem… przechodzi on pozytywnie test przeprowadzony przez walidator! W dodatku jako HTML 4.01 Strict.
Czy ta strona jest poprawna?
Walidator informuje co prawda o nieokreślonym kodowaniu i zastosowaniu tagu skróconego
>
, ale nie uznaje tego za błąd. Problem w tym, że takie nieścisłości mogą być interpretowane przez przeglądarki na różne niespodziewane sposoby, a strona wyświetli się błędnie.
Niestety praktyka pokazuje, że nawet stare standardy, takie jak. HTML 4.01 (z 1999 roku) nie są w 100 procentach poprawnie obsługiwane przez żadną popularną przeglądarkę. Walidator nie sprawdzi ponadto, czy zawartość elementów odpowiada ich semantyce. Oznacza to, że można zrobić stronę przechodzącą test, ale jednocześnie błędnie wyświetlaną u dużej części internautów (brak kodowania, stosowanie tagów skróconych) lub niezgodną ze standardem (zła semantyka).
Jak działa walidator?
Walidator oparty jest o parser SGML (język, na którym bazują HTML i XML). W popularnym walidatorze W3C parserem jest SP (http://www.jclark.com/sp/). Parser analizuje składnię wczytanego dokumentu i sprawdza czy jest zgodny z gramatyką zadeklarowaną w definicji typu dokumentu. Walidator wczytuje stronę, przepuszcza ją przez parser i przekształca zwrócone błędy do formy bardziej przyjaznej twórcom stron – pokazuje błędy w kodzie, dodaje wskazówki jak je usunąć itp.
Czy zła strona może wyświetlać się poprawnie?
Z drugiej strony, witryny, które wyświetlają się poprawnie na setkach nietypowych przeglądarek nie przechodzą walidacji. Najlepszym przykładem jest strona google.com, która według walidatora W3C ma 35 błędów, ale działa w każdych warunkach. Programiści Google postanowili ograniczyć liczbę wysłanych danych i jednocześnie sprawić, aby jeden dokument działał tak samo w najnowszym Chrome jak i przeglądarce w telewizorze sprzed kilku lat, ignorując przy tym zalecenia W3C i opierając się stanie praktycznym.
Mit obalony!
Wniosek jest prosty: walidator może uznać za poprawną stronę, która nie będzie działać zgodnie z oczekiwaniami, a witryna dostosowana do przeglądarek nieprzestrzegających standardu nie zostanie uznana za poprawną. Jako wisienkę na torcie weźmy cytat z pomocy W3C (http://validator.w3.org/docs/help.html#validandquality ): „przejście walidacji przez stronę nie znaczy, że W3C ocenia ją jako dobrą strona”. Mit obalony!