pomsta na nevinných
Když si prohlížíte zdrojáky různých stránek, můžete si na prvním řádku všimnout zápisu, který začíná nějak takhle:
<!doctype html ...
Jedná se o takzvanou deklaraci typu dokumentu. Jde o evoluční relikt (něco jako slepé střevo) z doby SGML (předchůdce HTML). Tehdy bylo potřeba klientským programům sdělit, co za dokument se bude zpracovávat.
Slepé střevo by mohlo evolučně odumřít, kdyby se programátoři prohlížečů kolem roku 1999 nerozhodli, že deklaraci <!doctype vrátí aspoň částečně jeho funkci. Totiž že se pomocí <!doctype bude přepínat vykreslovací režim (takzvané CSS módy). Ach, jak nešťastné rozhodnutí! Měli to udělat přímo v CSS nebo aspoň meta tagem.
Dnes se doctype používá jenom kvůli přepínání vykreslovacích módů. (Ani v XHTML nemá doctype žádný jiný vliv. Například pokud někdo v doctype deklaruje, že stránka je v XHTML, stejně na ni prohlížeče pravidla XML syntaxe neuplatňují.)
Vykreslovací módy (režimy) určují, jak se budou interpretovat některé CSS vlastnosti. Hodně se módy navzájem liší například v počítání rozměrů prvků (CSS vlastnosti width, height, do kterých quirk mód Exploreru započítá padding), ale i v dalších věcech. Vždycky než se pustím do kódování nějaké nové stránky, tak se rozhodnu, v jakém módu ji nakóduju. Obvykle dnes volím standardní mód, ale kdysi dávno byly doby, kdy jsem raději kódoval ve quirk módu.
Internet Explorer verze 6 a 7 má dva vykreslovací režimy:
Mezi těmito režimy se přepíná pomocí doctype. Internet Explorer 8 má dokonce tři vykreslovací režimy:
| když například uvedete | bude stránka v Internet Exploreru v módu |
|---|---|
| žádný doctype | quirk |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | quirk |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> | standardní |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | standardní |
| <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | standardní |
| <!DOCTYPE html> | standardní |
Ve všech ostatních prohlížečích, tedy hlavně ve Firefoxu (Mozilla), Chrome (Webkit) a v Opeře sice také existují quirk módy, ale od standardního vykreslování se liší mnohem méně. Quirk mód v Exploreru je tedy nepraktický, protože stránka bude vypadat v IE jinak než ve všech ostatních prohlížečích. (Někteří profíci ovšem quirk mód používají.)
Jediné, na čem záleží, je to, aby se stránka vykreslila v IE stejně jako v jiných prohlížečích. Toho se dosáhne tím, že se do stránky přidá libovolná doctype deklarace, která Explorer přepne do standardního módu. Já mám v oblibě zejména
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
nebo v poslední době
<!doctype html>
Zápis <!doctype html> je dokonce oficiálně označen za správný doctype pro HTML 5 (to je pátá verze jazyka HTML).
Pokud někdo používáte pro kontrolu stránek validátory, může se stát, že budou nadávat. Může jim vadit, že v doctype deklaraci chybí odkaz na DTD (to je ten dlouhý odkaz v uvozovkách) nebo že stránka DTD neodpovídá. S tím můžete udělat tři věci.
Ale je fakt, že pro skutečnou validaci je DTD potřeba. Já jsem nikdy nebyl příznivcem validace stránek, protože mě skutečnost naučila, že to je jenom snadná zbraň v rukou šťouralů a reptalů, kteří jenom rychle potřebují na něčem najít chyby.
Pokud budete chtít přidat odkaz na DTD, budete muset využít jiný informační zdroj než Jak psát web. Nebaví mě to hledat, sám to nepoužívám.
V jazyce HTML nezáleží na velikosti písmen, ale v zápisech <!doctype, které různě nacházím, se tak podivně střídají malá a velká písmena, že to raději vždycky kopíruju. Specifikace říká, že na velikosti záleží, ale pokusy mě vedly k přesvědčení, že tam je dost volnosti.
Jinak řečeno: nevím, zda zápisy <!doctype a <!DOCTYPE jsou rovnocenné. A už vůbec netuším, jak je to se slovy HTML, PUBLIC a dalšími. Pouze u uvedených URL je jasné, že u těch na velikosti písmen záleží (jako u každé URL).
Příklady doctype, které uvádím, jsem testoval na standardní mód ve všech dostupných prohlížečích.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt. Poslední aktualizace 01. února 2012.