ZßhadnΘ <!DOCTYPE>

Ji°φ Kosek ml.

Kdy₧ se podφvßm na zdrojov² k≤d n∞kter²ch webov²ch strßnek, naleznu na jeho zaΦßtku podivnou °ßdku obsahujφcφ zßhadnou znaΦku <!DOCTYPE>. Rßd bych v∞d∞l, k Φemu je tato znaΦka dobrß a zda ji mßm na sv²ch strßnkßch pou₧φvat?

Asi jste ji₧ n∞kde slyÜeli o tom, ₧e jazyk HTML je aplikacφ jazyka SGML (Standard Generalized Markup Language). Pomocφ jazyka SGML m∙₧eme vytvß°et definice libovoln²ch znaΦkovacφch jazyk∙, kter²m °φkßme DTD (Document Type Definition). TakovΘto definice samoz°ejm∞ existujφ i pro jazyk HTML. ZnaΦka <!DOCTYPE> urΦuje jakΘmu DTD dan² dokument odpovφdß a °φkß se jφ prolog.

Jeliko₧ existuje vφce verzφ HTML, mß ka₧dß verze vlastnφ DTD. Pomocφ znaΦky <!DOCTYPE> pak m∙₧eme urΦit, kterou verzi HTML v dokumentu pou₧φvßme. Na zaΦßtku strßnek, kterΘ pou₧φvajφ HTML 3.2, bychom tedy mohli nalΘzt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">

Rozeberme si podrobn∞ji jednotlivΘ Φßstu prologu. Za slovem DOCTYPE nßsleduje HTML. Toto slovo urΦuje nßzev pou₧itΘho znaΦkovacφho jazyka pro dokument. V naÜem p°φpad∞ se samoz°ejm∞ jednß o jazyk HTML.

DalÜφ Φßst prologu jednoznaΦn∞ identifikuje pou₧itou verzi DTD. K dispozici jsou dv∞ mo₧nosti. Bu∩ DTD definumeme pomocφ ve°ejnΘho identifikßtoru (jako v naÜem p°φpad∞) nebo pomocφ odkazu na soubor obsahujφcφ DTD.

╚ast∞jÜφ je pou₧itφ ve°ejnΘho identifikßtoru, kdy za slovo PUBLIC zapφÜeme °et∞zec oznaΦujφcφ pou₧itΘ DTD. Druhou mo₧nostφ je pou₧itφ klφΦovΘho slova SYSTEM nßsledovanΘho URL adresou, kterß ukazuje na p°φsluÜnΘ DTD.

Poslednφ mo₧nostφ je kombinace obou p°echozφch metod. Za klφΦov²m slovem PUBLIC uvedeme ve°ejn² identifikßtor a za nφm URL ukazujφcφ na DTD.

Prolog tedy urΦuje, jakou verzi HTML jsme pou₧ili. JakΘ to mß v²hody? Pravdou je, ₧e dneÜnφ prohlφ₧eΦe zcela ignorujφ pou₧itou verzi HTML. Existuje vÜak mnoho dalÜφch nßstroj∙ pro prßci s HTML a obecn∞ SGML dokumenty, kterΘ prolog velice efektivn∞ vyu₧ijφ. Tyto nßstroje v∞tÜinou spadajφ do svou skupin podle toho, jakou nabφzejφ funkci. K dispozici je n∞kolik program∙, kterΘ umo₧≥ujφ kontrolovat syntaktickou sprßvnost strßnek. Druhß skupina program∙ umo₧≥uje HTML dokumenty p°evßd∞t do jin²ch formßt∙ nebo je formßtovat pro tiÜt∞n² v²stup. Podle pou₧itΘ verze HTML mohou tyto nßstroje m∞nit zp∙sob formßtovßnφ.

Pro vyzkouÜenφ mo₧nostφ kontroly sprßvnosti dokument∙ nemusφme pracn∞ shßn∞t ₧ßdn² software. Konsorcium W3C na adrese http://validator.w3.org provozuje slu₧bu, kterß nßm umo₧nφ kontrolu libovolnΘ strßnky umφst∞nΘ na Internetu. V∞tÜinou ji vyu₧ijeme pro kontrolu vlastnφch strßnek, ale m∙₧eme si ji pustit na strßnky n∞kterΘho znßmΘho serveru a zjistit, zda jeho auto°i dodr₧ujφ standardy.

Aby mohla slu₧ba zkontrolovat naÜi strßnku, musφme na zaΦßtek strßnky umφstit prolog. Pro HTML 4.0 mß tento prolog tvar:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

DTD, kterΘ odpovφdß tomuto prologu, obsahuje pouze definici element∙ a atribut∙ pro vyznaΦovßnφ struktury. Neobsahuje vÜak definici element∙ jako je nap°. FONT pro zm∞nu pφsma nebo atribut∙ ALIGN a VALIGN °φdφcφch zp∙sob zarovnßnφ. V dokumentech, kterΘ vyhovujφ tomuto striktnφmu DTD, pro definici vzhledu strßnky pou₧φvßme kaskßdovΘ styly.

Pokud na strßnce pou₧φvßme formßtovacφ elementy a atributy, musφme pou₧φt odliÜnΘ DTD, kterΘmu odpovφdß prolog:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Standard HTML 4.0 definuje jeÜt∞ t°etφ DTD, kterΘ se pou₧φvß pro strßnky, kterΘ obsahujφ definici rozlo₧enφ rßm∙ (element FRAMESET). Odpovφdajφcφ prolog je:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">

Pou₧itφ slu₧by si ukß₧eme na jednoduchΘ strßnce, ve kterΘ pou₧ijeme neexistujφcφ atribut a p°ek°φ₧φme elmenty. P°i zßpisu strßnky musφme dbßt na to, aby byl prolog prvnφm °ßdkem dokumentu.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Pokusna stranka</TITLE>
</HEAD>
<BODY>
<P VALIGN=TOP>
<EM><STRONG>Text, ktery se prekrizi</EM></STRONG>
</BODY>
</HTML>

ValidaΦnφ slu₧b∞ staΦφ zadat URL strßnky a za chvφli se objevφ v²sledek anal²zy (viz obrßzek).

Obr.: V²sledek validace naÜφ strßnky
V²sledek validace naÜφ strßnky

Vidφme, ₧e validßtor s p°ehledem odhalil vÜechny chyby. Oznßmil pou₧itφ nep°φpustnΘho atributu VALIGN u tagu <P>. Rovn∞₧ odhalil p°ek°φ₧enφ element∙ EM a STRONG.

© Ji°φ Kosek 1999