Walidacja

Standardy sieciowe | Wallidacja

Rozwiąż problemy z witryną stosując właściwe nagłówki DOCTYPE!

Zrobiłeś wszystko jak trzeba ale twoja witryna nie wygląda lub nie działa tak jak powinna w najnowszych przeglądarkach.

Napisałeś poprawny kod XHTML i CSS. Zastosowałeś standard W3C Obiektowego Modelu Dokumentu (Document Object Model - DOM) do manipulacji dynamicznymi elementami strony. Pomimo to, w przeglądarkach zaprojektowanych do obsługi tych standardów twoja witryna nie działa jak należy. Odpowiedzialny za to jest najprawdopodobniej niewłaściwy algorytm DOCTYPE.

W tym krótkim artykule zaprezentowane zostaną prawidłowe nagłówki DOCTYPE oraz wyjaśnione zostanie praktyczne zastosowanie tych na pozór abstrakcyjnych znaczników.

PO CO NAM DOCTYPE?

Zgodnie ze standardami HTML i XHTML, DOCTYPE (skrót od "document type declaration") dostarcza walidatorowi informacji o tym, której wersji (X)HTML używasz i musi być on umieszczony na samej górze każdej storny internetowej. Nagłówki DOCTYPE są kluczowym komponentem spełniających standardy stron internetowch: bez nich znaczniki i CSS nie podlegają walidacji.

Jak już wspomniano w poprzednich artykułach ALA (jak również na innych ciekawych stronach) deklaracje DOCTYPE są także niezbędne do prawidłowego wyświetlania i funkcjonowania dokumentów web w zgodnych ze standardami przeglądarkach, takich jak Mozilla, IE5/Mac i IE6/Win.

Najnowszy DOCTYPE zawierający pełny URI (kompletny adres web) nakazuje tym przeglądakom wyswietlenie twojej strony w trybie spełniającym standardy, obchodząc się z (X)HTML, CSS, i DOM tak jak tego oczekujesz..

Użycie niekompletnego lub nieaktualnego DOCTYPE (czy nawet calkowity jego brak) sprawia, że przeglądarki te przełączają się w quirks mode, w którym przeglądarka zakłada, że zastosowałeś przestarzały, nieprawidłowy znacznik i kod, czego przyczyną są zapewne pogarszające sie wciaż normy pracy z poźnych lat 90'.

W takiej sytuacji przeglądarka podejmie próbę analizy składni twojej strony zpunktu widzenia kompatybilnosci wstecznej , wyświetlając CSS tak, jak mógł on wyglądac w IE4 i odwołując się do zastrzeżonego i specyficznego dla danej przeglądarki DOM. (IE powraca do IE DOM; jeśli chodzi o Mozille i Netscape'a 6 to nie wiadomo dokładnie do czego się odwołują.)

Oczywiście nie tego oczekujemy, lecz często właśnie to otrzymamy z powodu przeważającej ilości niewłaściwych lub niekompletnych informacji zawartych w DOCTYPE, którą to przewagę niniejszy artykuł ma nadzieję zmniejszyc.

(Uwaga: przeglądarka Opera nie stosuje się do wymienionych wyżej reguł i zawsze próbuje wyświetlic strone w trybie zgodnym ze strandardami. Oby tak dalej! Z drugiej storny, Opera nie zapewnia jeszcze pełnej zgodności z W3C DOM, jednak prace nad tym trwają. {Od edytora: od czasu pierwszej publikacji tego artykułu Opera wypuściła zgodną ze standardem DOM przeglądarkę Opera 7.}

GDZIE SIĘ PODZIAŁY WSZYSTKIE DEKLARACJE DOCTYPE?

Ponieważ deklaracje DOCTYPE są niezbędne do prawidłowego funkcjonowania standardów internetowych w przeglądarkach, a skoro W3C jest wiodącym twórcą tych standardów można by oczekiwac, że na witrynie W3C znajdzie się wykaz prawidłowych DOCTYPE, a informacje na ten temat będą szybko i łatwo dostępne w jednym miejscu. Jednak na dzień dzisiejszy nie ma takiej możliwości. {Od edytora: Częściowo dzięki sugestiom zawartym w tym artykule witryna W3C udostępnia już spis standardowych DOCTYPE. Spis ten można znaleźc przeglądając przewodnik W3C "My Web site is standard. And yours?"

Witryna W3.org to nie A List Apart, WebReference czy Webmonkey. Nie została stworzona aby pomagac projektantom stron internetowych, deweloperom i dostarczycielom kontentu aby być na bieżąco z najnowszymi zaleceniami i praktykami technologicznymi. Nie takie jest jej zadanie.

W3C opublikowało mimo wszystko serię przewodników, chociaż większośc developerów nie jest tego faktu świadoma. Jedak przede wszystkim witryna W3C zawiera zbiór sugestii, zaleceń i wersji roboczch napisanych przez jednych maniaków komputerowych dla drugich, a pisząc maniak komputerowy wcale nie mam na myśli typowych zawodowców w branży internetowej, takich jak ty czy ja. Mam na myśli maniaków, przy których my wyglądamy jak kompletni amatorzy.

Możesz przetrząsac witryne w3.org w poszukiwaniu deklaracji DOCTYPE przez cały dzień i nie znaleźc żadnej pojedyńczej strony z wykazem ich wszystkich, a kiedy już uda ci sie upolowac jakiegoś (zwykle związenego z konkretną Rekomendacją czy Kopią Roboczą) najczęściej będzie to taki, który nie zadziała na twojej witrynie.

Rozrzucone po całej witrynie W3C znaleźc można nagłówki DOCTYPE z brakującymi URI lub takie posiadające relatywne URI, które wskazują na dokumenty umieszczone na witrynie W3C. Owe URI kiedy zostaną usunięte z witryny W3C i zastosowane na twoich własnych stronach wzkazywac będą na nieistniejące dokumenty w rezultacie niwecząc wysiłek i twój i przeglądarki.

Dla przykładu, wiele wtryn obnosi się z takim oto DOCTYPE, skopiowanym i wklejonym bezpośrednio z w3.org:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">


Gdy spojrzymy na ostatnią częśc DOCTYPE ("DTD/xhtml1-strict.dtd") zobaczymy, że jest to odnośnik względny do dokumentu znajdującego się na witrynie W3C. Skoro więc dokument ten znajduje się na witrynie W3C zamiast na twojej, adres URI staje się bezużyteczny dla przeglądarki.


DOCTYPE, którego w rzeczywistości trzeba użyc wyglada tak:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Zauważ, że w drugim z przykładów DOCTYPE zawiera pełny URI na końcu tagu. Ponieważ ten tag prawidłowo odnosi się do miejsca w sieci przeglądarka wie jak je odnaleźc i wyświetli twoj dokument w trybie zgodnym ze standardami.


DZIAŁAJĄCE DOCTYPE

Zatem jakiego nagłówki DOCTYPE należy używac? Dobre pytanie. Poniżej przedstawione kompletne DOCTYPE są dokładnie tymi, których nam trzeba:


HTML 4.01 Strict, Transitional, Frameset

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
	
	
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
	
	
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 Strict, Transitional, Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1 DTD

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

CO DALEJ?

Jak możesz pomóc w podniesieniu poziomu zgodności ze standardami w sieci? Poza dodaniem tej strony do zakładek (oraz skopiowaniem i wklejeniem zawartych tu DOCTYPE do własnego użytku) za każdym razem kiedy twoj edytor stron wstawi gdzieś DOCTYPE sprawdź i porównaj go z tymi wymienionymi powyżej.

Wielu twórców oprogramowania o dobrych chęciach wycięło niekompletne DOCTYPE ze strony W3C i wkleiło je do własnych programów. W rezultacie, kiedy używasz takich programów z wbudowaną opcją wstawiania DOCTYPE na twoich stronach przeglądarka przełącza sie w tryb quirk niwecząc całą twoja ciężka pracę.

Warto skontaktowac się z ludźmi tworzącymi twoje ulubione pakiety autorskie, zaprezentowac im właściwe DOCTYPE i grzecznie poprosic o wzięcie tej sprawy pod uwagę przy wypuszczaniu następnej wersji. (W niektórych przypadkach istnieje też możliwośc samodzielnej modyfikacji edytora.)


Tytuł oryginału:
Fix Your Site
With the Right DOCTYPE!
Autor: Jeffrey Zeldman
Data publikacji:
12 kwiecień 2002
Data tłumaczenia:
24 październik 2006