Doctype deklarace

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ě nějakou 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.

Doctype se používá jenom kvůli přepínání vykreslovacích módů. Přesněji řečeno: užívá se k tomu, aby prohlížeč vykresloval stránku v tak zvaném standardním režimu a nepoužíval tak zvaný quirk režim.

Rychlá rada

Jestli se vám nechce nic studovat, zapište si za uši toto:

Na začátku každé HTML stránky, na prvním řádku, se vždy píše

<!doctype html>

Pokud tohle dodržíte, máte stránku ve standardním režimu a od přepínání módů máte navždy pokoj. Nemusíte nic víc řešit. Pokud to nedodržíte, vítejte ve 13. komnatě. Pak si musíte nastudovat, co se stane.

Přepínání módů

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.

Módy v Internet Exploreru

Internet Explorer verze 6 a 7 měl 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> standardní
<!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í

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, které se zapnou neuvedením jakéhokoli <!doctype>.

Na doctype tolik nezáleží

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).

Validátory krafají

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.

  1. Buďto přestat používat valitátory,
  2. nebo do doctype odkaz na DTD přidat
  3. nebo ty hlášky ignorovat (to je podobné tomu prvnímu řešení).

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.

Má záležet na velikosti písmen

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.

Přepsáno 13.9.2010, aktualizováno v září 2014

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Základy Prvky stránek Tvorba webu

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.