květen 2005
Anotace
Cílem této práce je vytvoření nástroje pro validaci dokumentů značkovaných v jazyce HTML. Takovýto nástroj jde za hranice běžně používané validace oproti DTD definicím. Díky využití moderních validačních jazyků, je možné formalizovat dodatečná omezení vycházející ze specifikací jazyka HTML, které přitom není možné vyjádřit s využitím jazyka DTD. Takovýto validační nástroj pak může pomoci autorům HTML dokumentů v lepším dodržování obecně uznávaných standardů, a tím může přispět ke zlepšení celkové dostupnosti těchto dokumentů a k použitelnosti této technologie vůbec.
První kapitola této práce se zabývá jednotlivými standardy a doporučeními, které vymezují používání jazyka HTML a kladou na něj některá zásadní omezení. Cílem této části je základní zmapování oblasti standardizace jazyka HTML a rozbor jednotlivých typů omezení, která jsou na tento jazyk jednotlivými standardy kladena. Takováto analýza pak slouží jako výchozí bod pro kapitolu druhou.
Cílem druhé kapitoly této práce je výběr několika v praxi používaných validačních jazyků a posouzení jejich vhodnosti pro popis dodatečných omezení vycházejících ze standardů HTML. Výsledkem je pak volba konkrétního jazyka nebo kombinace jazyků, která je dále použita pro formalizaci těchto omezení.
Třetí kapitola popisuje implementaci dodatečných omezení ve vhodném validačním jazyce. Zabývá se tím, jaké přístupy a jaká architektura byla zvolena a jaké jsou její slabé a silné stránky. Popisuje strukturu a modularitu zvoleného formálního zápisu a metodiku jeho implementace.
Čtvrtá kapitola detailně popisuje implementaci a architekturu prototypové aplikace pro validaci HTML dokumentů, která využívá dříve definované formalizace. Zabývá se nejen použitou technologií, ale i uspořádáním jednotlivých komponent a podporovanou funkcionalitou. Posuzuje i využitelnost této aplikace v praxi.
Annotation
The aim of this thesis is to create a tool able to validate HTML documents. Such a tool goes beyond the limits of the commonly used DTD-based validation. Additional restrictions specified in the HTML standards may be expressed, thanks to modern advanced validation languages. Such a validation tool may then help authors of HTML documents adhere better to commonly recognized standards and thereby improve the accessibility of those documents and the usability of this technology in general.
The first chapter of this thesis describes various HTML standards and recommendations and some fundamental restrictions of this language defined in those standards. This chapter analyses the scope of HTML standardization and various types of restrictions involved in those standards. Such analysis will serve as a starting point for the second chapter
The objective of the second chapter is to select an eligible subset of commonly used validation languages. Different characteristics of those languages are considered to choose the right language or combination of languages suitable for formalization of additional restrictions resulting from the HTML standards.
The third chapter describes the particular implementation of the aforementioned restrictions using the chosen validation solution. This chapter discusses the selected approaches, their architecture and relative pros and cons. It describes the modularity of the definition as well as the implementation methodology.
The last fourth chapter is a detailed description of the implementation and architecture of a prototype HTML validating application, which makes use of the validation definitions that have been formely defined. It deals with the used technology as well as different organization of the different components and supported functionality. It also investigates the practical utilization of the application.
Prohlášení
Prohlašuji, že jsem bakalářskou práci vypracoval samostatně a použil pouze literaturu uvedenou v přiloženém seznamu. Nemám námitek proti půjčení práce se souhlasem katedry ani proti zveřejnění práce nebo její části.
V Praze dne 6. května 2005
Petr Nálevka
Obsah
Seznam obrázků
Seznam tabulek
Seznam příkladů
tabindex<area>
v závislosti na hodnotě atributu shape<area>
v závislosti na hodnotě atributu shape<ul>
v modulu seznamů<ul>count
onclick, měla by být ošetřena i událost
onkeypress.
S dramatickým rozvojem Internetu v posledním desetiletí rostla stejně dramaticky i obliba jazyka HTML, který se stal de facto standardem pro publikování elektronických dokumentů na této síti. Tak jak je stále více informací publikováno právě v tomto formátu, roste i přirozená potřeba zpřístupnit tyto dokumenty co nejširšímu okruhu uživatelů. HTML tedy musí umožnit autorům vytvářet dokumenty v libovolném přirozeném jazyce tak, aby byly přístupné uživatelům z různých zemí světa. Důležitou otázkou je jistě i dostupnost pro handicapované uživatele. Například pro nevidomé je typická grafická interpretace dokumentů vyloučena. V poslední době výrazně roste na významu také potřeba dostupnosti z alternativních platforem (hardware/operační systém). Toto je pravděpodobně dáno vzrůstající diverzifikací aplikačního prostředí na pracovních stanicích, které jsou právě typicky využívány pro přístup k HTML dokumentům, a také možnostmi přístupu z mobilních zařízení, jakými jsou například mobilní telefony nebo PDA. Tato zařízení jsou vzhledem k omezeným systémovým zdrojům výrazně citlivá na správné dodržování syntaxe jazyka HTML.
Zmíněné trendy vedou nejen k rostoucí potřebě standardizace jazyka HTML, ale hlavně vyvíjí tlak na dostupnost efektivních nástrojů, které mají napomoci dodržování standardu v praxi. Teprve s dostupnými a široce použitelnými validačními nástroji je možné efektivně podporovat autory HTML stránek v dodržování standardů, a zlepšovat tak dostupnost těchto dokumentů nezávisle na použité technologii, jazyku a schopnostech uživatelů.
Za validační nástroj přitom v žádném případě není možné považovat internetový prohlížeč schopný zobrazovat HTML dokumenty (dále jen prohlížeč). Ten totiž nemá standardně definovaný způsob ošetření chyb viz. [HTML4]. Většina všeobecně rozšířených prohlížečů se snaží nějakým způsobem zobrazovat i dokumenty, které nevyhovují standardu, a to dokonce i po stránce struktury dokumentu a nebo základní syntaxe značek. Jde přitom o logický krok. Měřítkem použitelnosti daného prohlížeče pro běžného uživatele jistě bude jeho schopnost zobrazit co nejvíce různých dokumentů v čitelné podobě. V praxi je tedy internetový prohlížeč vhodný pro odladění dokumentů pouze v rámci vizuálního uspořádání. Pro tvorbu dokumentů splňujících standardizační specifikace je nezbytně nutné validovat příslušné dokumenty oproti těmto standardům. S validací mohou výrazně pomoci právě automatické validační nástroje. Ty sice většinou nedokáží kontrolovat všechna omezení, ale s rostoucími schopnostmi a komplexností validačních jazyků, jsou jich schopny popsat stále více. Vynechání validace, jakožto součásti publikačního procesu, může vést k produkci nestandardních dokumentů, které jsou čitelné pouze pro úzký okruh masově používaných prohlížečů.
Tímto mechanizmem zde postupně vzniká jakýsi začarovaný kruh. Kromě standardního HTML jazyka existuje ještě jakýsi pseudo-jazyk, jehož podpora v prohlížečích byla vynucena z historických důvodů a ze snahy zpřístupnit autorům dokumentů některé nadstandardní funkce, které zvyšují atraktivitu daného prohlížeče oproti konkurenci. Podpora takového pseudo-jazyka je stále nutnou součástí každého prohlížeče, který si klade za cíl zpřístupnit maximální množství dokumentů. Takováto podpora je pak velkou zátěží pro vývoj nových použitelných prohlížečů. Výrazně ztěžuje například implementaci odlehčených verzí pro mobilní zařízení a obecně se dá říci, že zhoršuje ve všech směrech dostupnost HTML dokumentů. Zhoršuje také konkurenci na tomto poli, a výrazně tak zpomaluje implementaci nových standardů pro tvorbu a zobrazování HTML dokumentů, což vede k ustrnutí celé oblasti na mrtvém bodě.
Zmíněné nepříznivé vlivy zasahují přitom celou oblast informačních technologií. V případě HTML nejde dnes jen o dokumenty v klasickém slova smyslu. Dynamická podoba HTML se v podstatě stala hlavním prostředkem pro tvorbu distribuovaných uživatelských rozhraní pro Klient/Server aplikace ve firemním, ale i domácím a státním prostředí. Prohlížeč se tak stává jakýmsi univerzálním klientem pro přístup k libovolným datovým zdrojům a službám. V tomto kontextu je důležitá multiplatformnost, jako jedna z klíčových výhod tohoto řešení. Data i aplikační logika pak může být dostupná z libovolného terminálu, třeba i z mobilního zařízení, bez potřeby dalších implementačních úprav. Tato skutečnost potom pomalu spěje k naplnění známé vize IT, že „síť je počítač“ (the network is the computer). Ovšem dosažení této vize pomocí HTML bude možné jen za předpokladu dostatečného prosazovaní standardizace tohoto jazyka v praxi.
Pomoci v tomto procesu se ostatně snaží i tato práce. Jejím cílem je vytvoření validačního nástroje, který by sloužil autorům HTML dokumentů k automatizovanému a jednoduše použitelnému odhalovaní nesouladů těchto dokumentů se standardy HTML. Oproti již existujícím aplikacím (například DTD validátor od W3C...), přináší nástroj popsaný v této práci validaci některých dodatečných omezení popsaných ve standardech jazyka HTML. Z historických a jiných důvodů je struktura jazyka HTML popsána v jazyce DTD (Document Type Definition). K výhodám tohoto jazyka patří výborná čitelnost, stručnost a jednoduchost užívání. Ovšem jeho vyjadřovací schopnosti nedosahují zdaleka možností, jakými disponují moderní validační jazyky postavené na bázi XML. Jejich vyjadřovací schopnost je daleko za hranicí pouhého definování vzájemných strukturálních vazeb jednotlivých elementů, jak je známe z DTD. Pomocí těchto jazyků lze popsat i složitější omezení definovaná ve standardech, a poskytnout tak autorům jednoduchou cestu, jak dosáhnout většího souladu s nimi. Cílem této práce (hlavně kapitoly dvě) je provést analýzu možností dostupných jazyků a vybrat z nich jeden konkrétní nebo případně jejich kombinaci, která bude nejvhodnější pro formalizaci omezení kladených na HTML dokumenty. V další fázi budou vybrané validační jazyky použity k implementaci této formalizace tak, aby pouze rozšiřovaly omezení, která jsou již popsána stávajícími DTD definicemi. Bude tedy platit, že dokument, který je validní vůči těmto omezením, musí být pokud možno validní i proti oficiálním DTD definicím. Naopak to ovšem zdaleka platit nemusí.
V konečné fázi se tato práce zabývá návrhem a implementací prototypové validační aplikace, která umožňuje uživatelům automatickou validaci dokumentů prostřednictvím webového rozhraní. Poskytuje jim maximum informací o nalezených chybách, včetně čísla řádky a popisu problému, s možným nastíněním postupu k jeho odstranění. Některá testovaná omezení jsou volitelná ze strany uživatele. Je tak možné zvolit si stupeň striktnosti a vybrat skupiny omezení, které mají být zahrnuty do validačního procesu.
Obsah
Existuje několik zdrojů omezení, která jsou kladena na dokumenty v jazyce HTML. Hlavním zdrojem standardizačních aktivit je v dnešní době W3C (World Wide Web Consorcium), které vydává tzv. doporučení v podobě specifikací jazyka HTML. Standardizací HTML se zabývá i Mezinárodní organizace pro standardizaci (ISO) spolu s Mezinárodní elektrotechnickou komisí (IEC). Jejich specifikace ISO/IEC 15445 viz. [ISO15445], známá též jako ISO-HTML, vychází z HTML 4.01 od W3C. ISO-HTML je v podstatě podmnožinou HTML 4.01, neboť tuto specifikaci dále omezuje, ale nerozšiřuje. Dá se tedy říci, že dokument, který je validní podle ISO-HTML, bude validní i podle specifikace W3C (nemusí platit obráceně). Kromě zmíněných standardů existuje ještě celá řada dalších, které se snaží nějakým způsobem vést autory k psaní kvalitnějších dokumentů a vývojáře prohlížečů k jejich lepšímu zobrazování. Jedním z nich je i směrnice WCAG, která se snaží o zpřístupnění HTML stránek co nejširšímu okruhu uživatelů. Touto směrnicí se budeme také dále zabývat.
Doporučení W3C definují celou škálu variant jazyka HTML. Pokud pomineme starší verze, které není doporučeno používat, je v dnešní době aktuální HTML 4.01, které je díky dobré kompatibilitě s prohlížeči velice rozšířené. Z tohoto jazyka dále vychází jazyk XHTML 1.0, který není v podstatě ničím jiným než restrikcí HTML 4.01 tak, aby splňoval omezení jazyka XML. To přináší celou řadu výhod. Zpracování takového dokumentu je o poznání jednodušší. Navíc lze využít bohatou škálu nástrojů vyvinutých pro jazyk XML, jako jsou různé parsery, transformační nástroje nebo validační jazyky. Další verze XHTML pak přináší modularizaci jednotlivých konstruktů jazyka, což umožňuje vytvářet libovolné podmnožiny jazyka HTML podle potřeby. V této práci se zaměříme hlavně na XHTML 1.0 a HTML 4.01. Důvodem je jejich široké používání v praxi. Také platí, že HTML 4.01 je v podstatě poslední verzí, kde došlo ke změně množiny elementů a atributů jazyka. Další verze postavené na XML totiž samotný jazyk nijak závažně nemění. Specifické modifikace jazyka, jako je například XHTML Print, XHTML Basic a další, jsou nad rámec této práce.
Doporučení W3C rozeznávají v zásadě dva hlavní adresáty definovaných omezení. Jedni jsou lidé implementující prohlížeče HTML dokumentů. Ti musí vědět, jaký význam přikládat jednotlivým elementům jazyka HTML a jakým způsobem tyto elementy a jejich obsah interpretovat. Těchto omezení se bude tato práce dotýkat pouze okrajově. Už z principu nemohou být předmětem validace HTML dokumentů, a proto ani předmětem validace doplňkové. Druhou skupinou jsou autoři dokumentů. Omezení týkající se autorů budou dále podrobně rozebrána. Právě ta z nich, která nejsou podchycena v oficiálních DTD definicích, budou předmětem doplňkové validace.
Některá doporučení adresovaná autorům dokumentů se zabývají tím, jakým způsobem mají autoři ošetřit některé prezentační aspekty dokumentů ve stylových definicích. Tato omezení nebudou předmětem této práce, protože je není možné automaticky validovat na základě validace samotných HTML dokumentů.
Oproti starším verzím jazyka HTML přidává verze 4.01 viz. [HTML4] některé multimediální funkce, skriptování, podporu stylových definic, podporu tisku a lepší dostupnost dokumentů pro handicapované uživatele. Stejně jako dřívější verze je i tato odvozena z jazyka SGML (Standard Generalized Markup Language).
SGML je v zásadě soubor pravidel, které by měly splňovat značkovací jazyky odvozené ze SGML. K definici odvozených jazyků se používá jazyk DTD. Ten vymezuje jednotlivé elementy (ty definují jednotlivé značky) a vazby mezi nimi. Takovými vazbami rozumíme například vymezení množiny subelementů pro daný element a jednoduchá pravidla jejich výskytu. Dále pak jednoduché definice obsahu elementů, jejich atributů a obsahu těchto atributů.
HTML umožňuje autorům značkovat dokumenty tak, aby vedle obsahu
těchto dokumentů vyznačili ještě další strukturální, prezentační a
sémantické informace. Základním konstruktem SGML je element. Ten
vyznačuje v dokumentu určité struktury s příslušným chováním.
Jako příklad můžeme uvést třeba element <p>
označující odstavec a nebo elementy popisující tabulkové struktury.
Typicky platí, že každá deklarace elementu vymezuje tři základní části.
Je to počáteční značka, koncová značka a obsah. Některé elementy
v HTML dovolují vynechat počáteční značku, a některé dokonce i koncovou.
V tomto ohledu je HTML syntaxe postavená nad SGML velice volná.
Některé elementy nemají obsah. Jde o elementy, u kterých by
obsah neměl žádný význam. Příkladem je
element <br>, který slouží pro označení
zalomení řádky. Všechna tato pravidla jsou
vyjádřena v DTD definici. SGML definuje i další
pravidla pro elementy, například pravidla týkající se jejich
vzájemného vnořování. Dále platí, že koncová značka
ukončuje i všechny neukončené elementy až zpět
k počáteční značce.
Počáteční značka může obsahovat více atributů, které se zapisují za jménem elementu. Atributy se mohou vyskytovat v libovolném pořadí a mohou (nebo nemusí) mít nějakou hodnotu. Ovšem typicky platí, že atribut je dvojice jméno-hodnota. Hodnotu je možné uzavřít ve dvojici dvojitých, nebo jednoduchých uvozovek. Pokud obsahuje jen alfanumerické znaky a některá interpunkční znaménka, není ji nezbytně nutné takto ohraničovat. Dále platí, že na velikosti písmen ve jménech atributů ani elementů nezáleží.
Příklad 1.2. Příklad zápisu elementu s atributy
<a href="http://www.firmaxy.cz"> <img src="/images/logo_xy.gif" width=150 height=55 alt="Logo firmy XY"> </a>
Některé znaky, které může být žádoucí zobrazovat v HTML dokumentu, mají specifický význam v rámci HTML/SGML. Abychom se vyhnuli konfliktům, je možné takové znaky vyjádřit jako numerickou, nebo symbolickou zkratku uvozenou znakem „&“ a ukončenou znakem „;“. Takovému vyjádření se říká znaková entita. Například < representuje znak „<“ a podobně. HTML definuje množinu znakových entit, které je možné používat v dokumentech. Kromě entit, které představují lidsky srozumitelnější možnost vkládání znaků, lze libovolný znak ze znakové sady používané dokumentem vyjádřit za pomoci číselné pozice tohoto znaku v této znakové sadě.
Krom běžných značek lze do dokumentů vkládat i komentáře viz. následující ukázka.
Komentáře nemají mít žádný vliv na výsledné zobrazení. Po vykřičníku musí neprodleně následovat dvě pomlčky. Není zde povoleno žádné volné místo. Naopak po obou ukončovacích pomlčkách volné místo povoleno je. Uvnitř textu komentáře se nesmí vyskytovat další dvě a více pomlček za sebou.
Každý element jazyka HTML je společně se svými atributy deklarován v DTD. Tam je také popsáno jaké subelementy může daný element obsahovat. Pro tyto subelementy je možné vyznačit jednoduchá pravidla výskytu:
element je povinný a vyskytuje se právě jednou,
element je povinný a vyskytuje se jednou, nebo vícekrát
element se vyskytuje jednou, nebo vůbec,
element se vyskytuje jednou, vícekrát, nebo vůbec,
element se může vyskytnout,
element se nesmí vyskytnout,
dva elementy se nesmějí vyskytovat vzájemně,
oba elementy jsou povinné v předepsaném pořadí,
oba elementy jsou povinné, ovšem mohou se vyskytovat v libovolném pořadí.
Ke každému elementu je možné přiřadit definice jeho atributů. Každý atribut je specifikován svým jménem, datovým typem nebo případně výčtem možných hodnot (enumerací). Navíc je nutné určit, zda je tento atribut povinný, nebo nepovinný. V případě vynechání nepovinného atributu přiřazuje klientská aplikace takovému atributu implicitní hodnotu. Atributy mohou mít i pevně definované hodnoty.
V DTD je možné vymezit i booleovské atributy. Jejich jediná možná hodnota odpovídá názvu atributu. Takové atributy lze potom v HTML zapisovat v jejich zkrácené formě. Stačí napsat pouze samotný název bez hodnoty. Pokud se booleovský atribut v elementu vyskytuje, je mu přiřazena hodnota „pravda“ (a naopak).
Každý validní HTML dokument se musí skládat alespoň ze tří částí. Jedná se o řádek s informací o verzi jazyka, deklarativní hlavičku a tělo dokumentu. Informace o verzi jazyka zahrnuje i odkaz na DTD, vůči kterému lze dokument validovat. Hlavička slouží k vyjádření dodatečných informací o dokumentu. Jedná se v podstatě o metadata. Typickým příkladem informací, které se mohou vyskytovat v hlavičce, je jméno autora dokumentu, klíčová slova pro využití indexovacími službami, ekvivalenty parametrů HTTP hlaviček pro využití webovými servery a podobně.
V těle dokumentu se pak nalézá samotný obsah. Ten může být různým způsobem reprezentován jednotlivými prohlížeči, ať už jde o grafické, textové nebo jiné prohlížeče. V těle dokumentu se v zásadě mohou vyskytovat dva různé druhy elementů. Jde o elementy blokové (block-level), nebo řádkové (inline). Tyto dva modely vystihují dva základní typy chování elementů v rámci těla dokumentu. V zásadě platí, že blokové elementy mohou obsahovat buď další blokové elementy, nebo řádkové elementy, zatímco řádkové elementy mohou obsahovat pouze text, nebo jiné řádkové elementy. Odlišnosti najdeme i v jejich formátování. Zatímco výskyt blokového elementu sám o sobě determinuje nový řádek, řádkové elementy tuto vlastnost nemají (pokud není jejich klasické chování přepsáno ve stylové definici).
Z důvodů podpory světových jazyků je důležité, aby HTML dokumenty uměly zobrazovat text i zprava doleva. V tomto případě dochází k odlišnému chování blokových a řádkových elementů.
Omezení obsahu blokových a řádkových elementů je plně deklarováno v DTD. Některé elementy obsahují navíc další restrikce. DTD tak v některých případech neumožňuje blokovým elementům obsahovat některé další blokové či řádkové elementy a řádkovým elementům některé jiné řádkové. Takováto pravidla je možné plně postihnout v DTD pomocí hierarchických množin elementů, které lze v definicích libovolně skládat a kombinovat.
Klasickým představitelem blokového elementu je element
<div> a řádkového <span>.
Tyto elementy tvoří v kombinaci se stylovými definicemi
obecný mechanizmus přidávání struktur do HTML dokumentů. Jejich
jedinou vlastností je to, že dodržují blokový, nebo řádkový
model. Všechny další (hlavně prezentační) vlastnosti mohou být
volně definovány ve stylových definicích. Ty je pak možné jednoduše
měnit (například vytvořit více verzí), což přináší
značnou flexibilitu v prezentační rovině dokumentu.
Specifikace HTML 4.01 definuje jazyk ve třech mutacích a pro každou z nich existuje samostatná DTD definice. Jejich vzájemný vztah přibližuje obrázek 1.2 – „Vztah mutací jazyka HTML“. Tento vztah neplatí úplně do důsledku, ale s trochou tolerance můžeme říci, že se v podstatě jedná o podmnožiny. Nejmenší množina se nazývá strict. Vymezuje HTML tak, jak jej jeho tvůrci skutečně zamýšleli. Oproti dřívějším verzím jazyka odpadla celá řada konstruktů, hlavně v důsledku oddělení většiny prezentačních informací, které se z praktických důvodů staly součástí stylových definic. Tato verze zahrnuje také nejvíce omezení a klade největší nároky na autory, kteří jsou zvyklí používat některé konstrukty z předešlých verzí jazyka. Tyto konstrukty pak většinou obsahuje množina s názvem transitional. Ta umožňuje autorům plynulý přechod k HTML 4.01, protože z důvodu kompatibility některé konstrukty zachovává. Ty jsou ovšem často označeny jako depricated. Takovým elementům budeme dále říkat potlačené. Potlačené elementy není doporučeno v nových dokumentech používat. Poslední množina zvaná frameset obsahuje navíc podporu rámů, které umožňují zobrazovat více HTML segmentů v rámci jednoho dokumentu.
Hlavní důraz je kladen právě na dodržování syntaxe v rámci množiny strict. Ta má zaručit správné oddělení prezentační vrstvy od zbytku dokumentu. To přináší řadu výhod. Například možnost jednoduché změny vzhledu dokumentu bez zásahu do jeho zdroje. Děje se tak pouze v důsledku změny stylové definice.
V DTD definicích jazyka HTML je možné používat pouze primitivní datové typy vycházející ze SGML. Následující seznam ukazuje nejdůležitější z nich.
Vybrané datové typy jazyka SGML používané v DTD definicích jazyka HTML
Parsed Character Data – V DTD definici jazyka HTML se takto označují elementy, které obsahují čistý text (čili posloupnost znaků). Pokud jsou navíc deklarovány nějaké subelementy, mohou být míchány s tímto textem.
Character Data – V HTML se takto označují hlavně atributy obsahující dále neomezený text (posloupnost znaků). Případné značky obsažené v atributech s tímto datovým typem nejsou nijak dále interpretovány. Ovšem znakové entity jsou nahrazeny příslušnými znaky. Konce řádek a tabulátory jsou nahrazeny mezerou.
Atribut typu MNTOKEN může obsahovat libovolná písmena, číslice nebo speciální znaky. Jde například o pomlčku, podtržení, dvojtečku a nebo tečku.
Hodnota omezená tímto datovým typem musí splňovat omezení kladená na datový typ MNTOKEN, navíc musí začínat malým, nebo velkým písmenem.
Musí splňovat stejná omezení jako datový typ NAME, ovšem navíc lze na takovýto identifikátor odkazovat pomocí dalšího datového typu IDREF. Proto musí platit, že hodnota atributu s datovým typem ID musí být jedinečná v rámci celého dokumentu.
Sekvence číslic, která obsahuje minimálně jednu číslici.
Relativně expresivní je datový typ definovaný výčtem možných hodnot (enumerace). Hodnota atributu je tedy omezena na některou z deklarovaných hodnot.
Ne všechna omezení je možné zachytit v DTD. Některá z nich jsou pouze slovně vyjádřena v textu specifikace. V zásadě existují dva stupně volnosti dodržování těchto omezení. Specifická klíčová slova vyjadřují, zda je popisované omezení závazné a nebo zda jde pouze o doporučení, jehož nedodržení může sice působit komplikace, ale neznamená nutně nesoulad se standardem. Taková klíčová slova a jejich významy vymezuje [RFC2119].
Důležitou oblastí, kde se rozchází text specifikace a definice v rámci DTD, jsou datové typy viz. sekce „Datové typy“. Je to dáno hlavně vyjadřovací silou jazyka DTD. Ten umožňuje přiřazovat elementům a atributům pouze jednoduché datové typy ze SGML a enumerace. Další omezení kladená na jazyk HTML je možné vyjádřit pouze slovně v textu specifikace. Tím je v podstatě znemožněna automatická kontrola dodržování těchto omezení.
Například atributy typu „univerzální identifikátory zdrojů“ (URI – uniform resource identifier), které slouží k identifikaci různých externích zdrojů v rámci různých druhů odkazů v dokumentu, mají přesnou syntaxi viz. [RFC2396]. DTD ovšem jejich formát dále nevymezuje. Umožňuje zadat libovolný text splňující omezení kladená na datový typ CDATA.
V mutacích trasitional a frameset se občas vyskytuje atribut popisující barvu některého z elementů. Mutace strict již počítá s tím, že takováto informace je čistě prezentační, a jako taková bude tedy zanesena ve stylové definici. Zatímco DTD popisuje tyto atributy jako CDATA, specifikace jasně definuje povolené hodnoty. Barva může být vyjádřena třemi hexadecimálními čísly (00 až FF, čili celkem 6 znaků) určujícími podíl červené, zelené a modré (RGB). Těmto číslům předchází znak „#“. Dále je možné jako hodnotu atributu zapsat jméno barvy. Pod jménem je rozeznáváno 16 základních barev (Black, Silver, Aqua ...).
Dalším datovým typem používaným v HTML jsou délky. DTD je opět specifikuje pouze jako CDATA. Délka nějakého elementu zobrazovaného v rámci HTML dokumentu může být vyjádřena pomocí procent a nebo v bodech. Délka musí být tedy zapsána jako kladné celé číslo. Pokud je toto číslo navíc zakončeno znakem „%“, pak se jedná o délku v procentech. Některé délky je možné specifikovat i relativně. Pokud máme více elementů, které spolu soupeří o nějaký volný prostor na stránce, může být jejich délka zapsána relativně k tomuto volnému prostoru. Takovou informaci zapisujeme kladným celým číslem následovaným znakem „*“. Pokud zapíšeme pouze znak „*“, automaticky se chápe jako „1*“. Číslo před hvězdičkou udává kolik dílů volného prostoru zaplní element s tímto atributem. Tak jako v předešlých případech i zde platí, že případné chyby v zápisu takových atributů není možné automaticky detekovat pomocí validace oproti DTD.
Pokud chceme do HTML dokumentu vnořit nějaký externí objekt nebo na něj odkazujeme, je potřeba specifikovat typ jeho obsahu. Toho je docíleno atributem, který obsahuje tzv. MIME (Multipurpose Internet Mail Extention) typ. Takový typ by měl odpovídat některému z typů registrovaných a spravovaných organizací IANA. Jméno typu se skládá z jména příslušného média odděleného lomítkem od jména formátu, ve kterém je toto médium uloženo.
Ukázka některých často používaných typů obsahu
HTML dokument.
Obrázek ve formátu PNG.
Kaskádové styly.
Dalším druhem informace, která se vyskytuje v atributech elementů jazyka HTML, je informace o kódování znaků. Ta je vyjádřena jako jméno příslušné kódové tabulky. Tato jména jsou spravována v registru organizace IANA.
Podobně fungují i atributy popisující přirozený jazyk použitý pro obsah určitého elementu nebo jazyk, ve kterém je psán celý dokument. Takový atribut potom obsahuje příslušný kód přirozeného jazyka. Doporučení [RFC3066] se zabývá kódy jazyků, které je možné používat v rámci HTML dokumentů. V zásadě se kód jazyka skládá z povinného primárního kódu a libovolného množství nepovinných sekundárních kódů oddělených vzájemně pomlčkou. Primární kódy jsou rezervované pro zkratky jazyků podle [ISO639]. Každý sekundární kód je chápán jako kód země podle [ISO3166].
Zajímavým prvkem HTML jsou přístupové klávesy, které umožňují přímou aktivaci některých prvků dokumentu pomocí klávesnice. Takto lze označit elementy, jako jsou různé formulářové prvky a nebo odkazy. Hodnotou takového atributu je jeden libovolný znak, který odpovídá příslušné aktivační klávese. Další možností je specifikovat tuto hodnotu jako znakovou entitu. DTD definuje pro tyto atributy datový typ CDATA.
Pro některé elementy HTML je možné specifikovat datum a čas. Jedná
se o elementy <ins> a <del>,
které umožňují zachovávat přehled o změnách při revizích dokumentů.
Každá zachycená změna tak může obsahovat informaci o datu a čase,
kdy k této změně došlo. Takováto časová informace musí být
zapsána v následujícím formátu:
YYYY-MM-DDThh:mm:ssTZD
Rok zapsaný čtyřmi číslicemi.
Dvouciferné pořadové číslo měsíce v roce, čili 01 odpovídá měsíci lednu a podobně.
Dvouciferné pořadové číslo dne v měsíci.
Dvouciferné označení hodiny.
Dvouciferné označení minuty.
Dvouciferné označení sekundy.
Určení časové zóny. Například velké „Z“ označuje UTC Coordinated Universal Time. „+hh:mm“ specifikuje o kolik je lokální čas před časem UTC a „-hh:mm“ naopak o kolik je za ním.
Tento formát je (kromě jiných) popsán v [ISO8601]. Tato struktura časové značky je definována pouze v textu specifikace. V DTD se jedná o typ CDATA.
Pro odkazy v dokumentech lze specifikovat o jaký typ odkazu se jedná. Tuto informaci potom mohou využívat prohlížeče nebo indexující algoritmy vyhledávacích služeb. Takovéto informace lze vyjádřit v atributech jako seznam jednotlivých typů oddělených mezerami. Kompletní seznam možných typů je vyjádřen v textu specifikace.
Některé vybrané typy odkazů definovaných v HTML dokumentech
Alternativní verze dokumentu. Může jít například o verzi přeloženou do jiného jazyka nebo verzi v jiném formátu než je HTML.
Odkazuje na stylovou definici. V kombinaci s typem Alternate ukazuje alterativní styl dokumentu, který může být vybrán uživatelem.
Ukazuje na první dokument v kolekci dokumentů.
Ukazuje na další dokument z lineární sekvence dokumentů.
Ukazuje na předchozí dokument z lineární sekvence dokumentů.
Ukazuje na dokument sloužící jako obsah.
Autoři dokumentů mohou definovat i další typy odkazů nad rámec těch typů, které jsou vyjmenované ve specifikaci. Hodnotu takových atributů nelze tedy omezit výčtem.
Odkazy v HTML dokumentech mohou obsahovat atribut definující média, pro která je tento odkaz určen. Tímto způsobem se dá například přiřadit dokumentu různý styl podle toho, je-li například určen k tisku a nebo se bude zobrazovat na obrazovce. HTML explicitně definuje seznam klíčových slov, které lze použít pro definici vhodnosti pro dané médium. V atributech je potom vhodnost vyjádřena jako seznam těchto klíčových slov oddělených čárkou. Povolené názvy médií jsou následující.
Neodstránkovaná počítačová obrazovka.
Médium s neproporcionálními znaky. Jde například o terminál.
Médium podobné televizi. Má nízké rozlišení a limitovaný posun stránek.
Projektory.
Kapesní počítače.
Odstránkované dokumenty určené k tisku.
Dokument je čten pomocí zařízení, které interaguje s uživatelem pomocí Braillova písma.
Dokument je čten zařízením syntetizujícím lidskou řeč.
Dokument je vhodný pro všechny typy médií.
DTD definuje pro takovéto atributy datový typ CDATA. I když je množina povolených označení médií pevně dána, specifikace nezakazuje do atributu zapisovat i jiné hodnoty, které nejsou definovány. Obsahuje-li atribut nějaký název média, který není definován ve specifikaci, má být prohlížečem ignorován. Pokud název média obsahuje nějaké jiné znaky než písmena, čísla nebo pomlčku, je zbytek názvu ignorován. Takže například „handheld with resolution 320x320“ má být interpretováno jako médium „handheld“.
V dokumentech, kde používáme rámy, je možné pro odkazy specifikovat, v jakém rámu se má odkazovaný dokument zobrazit. Jména takových rámů mohou obsahovat pouze písmena. To se ovšem netýká několika rezervovaných jmen, které mají specifický význam.
Odkaz se otevře v novém okně.
Odkaz se otevře ve stejném rámu.
Odkaz se otevře v přímém předkovi aktuálního rámu.
Zruší se rámová struktura a odkaz se otevře v aktuálním okně.
V hlavičce HTML dokumentů je zajímavý element
<title>. Tento element je povinný.
Specifikace jasně vyzývá autory dokumentů, aby kvůli dostupnosti
používali titulky, které budou popisovat co nejpřesněji obsah
těchto dokumentů. V tomto případě se jedná o příklad
omezení, které nebude možné kontrolovat automatizovaně ani
s využitím expresivnějších validačních jazyků než je DTD.
Specifikace totiž v tomto případě neposkytuje exaktnější
definici vhodnosti příslušného titulku.
Elementy obsažené v těle dokumentu mají určitou společnou
skupinu atributů. Mezi tyto atributy patří i atribut
class. Ten definuje společnou třídu několika
elementů v dokumentu. Pokud je takových tříd více, jsou
jejich jména oddělena mezerou. Takovým třídám může být později
přiřazen specifický způsob prezentace v rámci stylové definice.
DTD definuje tento atribut jako CDATA.
V části věnované textu se specifikace zabývá pravidly pro zobrazování a zápis mezer. Autoři dokumentů by neměli spoléhat na prohlížeče, že zobrazí mezeru, která je zapsána bezprostředně po počáteční značce, nebo bezprostředně před značkou koncovou. Proto je důležité, aby autoři pro vnořené řádkové elementy raději psali mezery mezi slovy vně těchto elementů (nikoli uvnitř). Takovéto mezery by nemusely být zobrazeny. Tento požadavek nelze zachytit v DTD.
Autoři dokumentů jsou odrazováni od toho, aby využívali prázdných
elementů <p>. Elementy
<p> slouží k definici odstavce textu.
V tomto případě se nejedná o striktně vyžadované omezení,
jde pouze o doporučení.
Element <q> označuje řádkové citace
v textu dokumentu. Vizuální prohlížeče by měly označit takový
text příslušným citačním znaménkem podle toho, jaký přirozený jazyk je
aktuálně používán. Z tohoto důvodu je potřeba, aby se autoři
zdrželi označování textu vlastními citačními znaménky, které by se
tak objevovaly duplicitně. Toto omezení není formalizováno
v DTD.
Elementy <ins> a <del>
slouží k uchování historie změn provedených v HTML
dokumentech. Zajímavostí těchto elementů je, že nejsou jednoznačně
vymezeny. Podle místa jejich použití se chovají jako blokové,
nebo jako řádkové elementy. To je ovšem v rozporu s DTD.
Podle něj mohou tyto elementy vždy obsahovat jak blokové, tak
i řádkové prvky. Následující příklad tedy bezchybně projde
validací vůči DTD, ale specifikace takové použití zakazuje.
Příklad 1.4. Ukázka komentářů
<p> text ... <ins> <div> ...obsah blokového elementu... </div> </ins> ... text </p>
Oblast specifikace zabývající se textem obsahuje ještě mnoho dalších omezení. Ta jsou však převážně adresována autorům HTML prohlížečů a zabývají se způsobem zobrazení textu v HTML dokumentech. Tato omezení jsou nad rámec této práce.
Pro seznamy je typické, že obsahují řadu potlačených atributů. Ty není doporučeno nadále používat. Týkají se prezentace seznamů a jejich místo je tedy ve stylové definici. Specifikace pro seznamy neuvádí žádná dodatečná omezení, která by nebyla podchycena v DTD.
Tabulky obecně umožňují řadit data do řádků a sloupců. Specifikace nám radí, abychom nepoužívali tabulky k definici rozvržení stránek. K tomuto účelu by měla sloužit stylová definice. Tabulka by skutečně měla sloužit pouze pro reprezentaci tabulkových dat.
HTML specifikace doporučuje autorům, aby vytvářeli vystihující shrnutí obsahu tabulek. Tato shrnutí by měla pomoci uživatelům nevizuálních prohlížečů k lepšímu pochopení obsahu tabulek. To platí zvláště pro tabulky bez specifikovaného titulku.
Zajímavé je, že autoři dokumentů mohou správným zápisem tabulek v HTML pomoci zefektivnit jejich zobrazování pomocí prohlížečů. Například vyžadované umístění zápisu patičky tabulky před vlastním obsahem těla tabulky a nebo pevné vymezení počtu řádek a sloupců umožňuje prohlížečům vygenerovat tabulku najednou a pak ji jen postupně doplňovat daty. Prohlížeče takto tedy nemusí čekat s vykreslováním až na kompletní načtení všech dat týkajících se příslušné tabulky. Mohou tabulku vykreslovat postupně a umožnit uživatelům co nejrychlejší přístup k datům. Tento princip se nazývá inkrementální vykreslování.
Inkrementální vykreslování tabulek je obtížné i v případě, že definujeme velikost sloupců proporcionálně vzhledem k šířce tabulky a tabulka nemá pevně danou velikost. Stejně problematická je i situace, pokud autor nespecifikuje šířku sloupce vůbec. Řešení tohoto problému je však možné i na straně prohlížečů (hlavně grafických). Ty mohou při inkrementálním vykreslování jednotlivé sloupce postupně roztahovat podle potřeby.
Specifikace exaktně definuje, jakým způsobem mají prohlížeče stanovovat počet sloupců v tabulkách. V zásadě existují dva přístupy. Pokud autor HTML dokumentu definuje explicitně sloupce a skupiny sloupců, je možné určit tento počet z nich. V opačném případě je celkový počet sloupců určen jejich maximálním počtem v řádce. Podstatné je, že je považováno za chybu, pokud si v případě definování sloupců obě zmíněná čísla neodpovídají. Tento požadavek není zachycen v DTD.
Atribut označující šířku jednotlivých sloupců a skupin sloupců tabulek může (oproti klasickým atributům označujícím šířku) obsahovat i zápis „0*“. Takový zápis by za normálních okolností znamenal vyčlenění prostoru nulové šířky. Prohlížeče ovšem zobrazí takovéto sloupce s minimální šířkou tak, aby se do nich vešel celý jejich obsah. V této chvíli je nutné podotknout, že přiřazení takovéto hodnoty tomuto atributu může znemožnit prohlížečům zobrazovat tabulku inkrementálně. Je to dáno tím, že minimální šířku pro udržení obsahu je možné zjistit až po přečtení všech položek ve sloupci.
Přestože atribut určující šířku tabulek není potlačen, specifikace nedoporučuje jeho používání. Šířka i ostatní prezentační informace mají své místo ve stylové definici.
Za chybu se považuje i definování překrývajících se buněk.
Toho je možné dosáhnout například s použitím atributů
rowspan a colspan.
Ten určuje roztažení určité buňky
tabulky přes více buněk. Mohou se tak navzájem křížit buňky
roztažené přes více sloupců s těmi roztaženými přes více
řádek.
Odkazy jsou v podstatě spojením jednoho webového zdroje s jiným. Pomocí odkazů spolu můžeme asociovat různé zdroje různých typů.
Pomocí mechanizmů souvisejících s odkazy je možné označit nějaké místo v dokumentu, ke kterému se chceme v rámci stejného dokumentu odkazovat. Takové místo označujeme jako zakotvení. Jméno takového místa musí být podle specifikace unikátní v rámci celého dokumentu, a to nezávisle na malých a velkých písmenech ve jméně. Tento požadavek není zachycen v DTD. Zde se jedná o datový typ CDATA. Také platí, že autoři by měli chápat odkazy na taková místa v dokumentech jako citlivá na velikost písmen, aby se vyvarovali případných komplikací při použití některých prohlížečů.
Pokud autoři dokumentů odkazují na cizojazyčný zdroj, je pro lepší zacházení s takovým zdrojem ze strany prohlížečů možné specifikovat přirozený jazyk, ve kterém je tento zdroj napsán. Tento atribut je možné použít pouze v případě, že je nastaven i jiný atribut odkazu, který specifikuje to, na jaký zdroj vlastně odkaz ukazuje. Tento podmíněný výskyt atributu je za hranicemi vyjadřovací schopnosti DTD.
Zakotvení může být v dokumentech definováno na libovolném
elementu pomocí atributu id. Na některých
elementech, jako je třeba <a>, lze
zakotvení definovat i pomocí atributu name.
Pro oba tyto atributy platí, že sdílejí stejný jmenný prostor a musí
být tedy společně unikátní v rámci dokumentu.
Elementy, které mohou obsahovat atribut name,
mohou obsahovat zároveň i atribut id,
ovšem jejich hodnota musí být stejná. Tento požadavek nelze
postihnout v DTD.
Tato část se bude zabývat elementy umožňujícími vkládat prvky
multimediálního rázu do HTML dokumentů. V dřívějších verzích
HTML se používal element <img> pro
vkládání obrázků a element <applet> pro
vkládání java-appletů
(specifických aplikací běžících na klientské straně). Element
<applet> byl nyní potlačen ve prospěch
obecnějšího elementu <object>, kterým
je možné vkládat kromě obou zmíněných médií i celou řadu
jiných objektů.
V zásadě se dá říci, že nároky kladené specifikací na
vkládané objekty je možné automaticky validovat pomocí DTD.
Výjimkou je snad jen atribut archive.
Ten vyžaduje seznam URI identifikátorů, zatímco
jeho datový typ v DTD je omezen pouze na CDATA.
V HTML dokumentech je možné definovat mapy oblastí (typicky oblasti obrázku) a přiřazovat jim specifické akce pro případ, že je příslušný region aktivován uživatelem. HTML rozeznává dva druhy takovýchto obrázkových map. První je mapa na straně klienta. Při použití této mapy jsou souřadnice aktivované uživatelem předány prohlížeči, který na základě nich vybere příslušný odkaz. V případě map na straně serveru jsou souřadnice posílány serverovému agentovi, jehož umístění je specifikováno jedním z atributů takové mapy. Způsob interpretace souřadnic je pak dán implementací tohoto agenta.
Pro obrázkovou mapu definuje specifikace zajímavé omezení, které
je třeba zmínit. Pokud definujeme souřadnice některého
z regionů mapy, formát těchto souřadnic se liší podle toho,
jaký tvar oblasti specifikujeme v atributu shape.
Například pro kružnici zadáváme souřadnice středu a poloměr. Polygon
naopak vyžaduje sérii dvojic souřadnic, kde poslední
dvojice odpovídá souřadnicím dvojice první. Tím je dosaženo řádného
uzavření polygonu. Ovšem odpovědnost za uzavření polygonu leží na
bedrech prohlížečů. Takováto omezení nelze specifikovat v DTD.
Pro obrázkové mapy i pro vkládané objekty jsou důležité alternativní popisy. Ty zlepšují dostupnost pro uživatele nevizuálních prohlížečů. Ovšem obecně platí, že pokud není možné obsah nějakého objektu zobrazit, může alternativní popis výrazně zlepšit orientaci v dokumentu. Proto jsou tyto popisy většinou povinné a specifikace navíc ukládá autorům následující doporučení pro jejich používání. V některých případech je lepší vyplnit jako alternativní popisek pouze prázdný řetězec. Například v případech, kdy obrázek slouží pouze jako určitý dekorativní prvek bez dalšího významu. Alternativní popis by tedy vždy měl přinášet nějakou smysluplnou informaci. Popis typu „bla bla“ nebo „bezvýznamný obrázek“ by mohl být matoucí pro uživatele nevizuálních prohlížečů.
HTML dokumenty mohou obsahovat stylové informace přímo v sobě. Lze je zapsat v některém ze stylových jazyků, jako je například kaskádový styl (CSS). Mohou také odkazovat na styly externí. Druhý zmíněný způsob přináší jistě větší flexibilitu, neboť umožňuje dynamicky měnit styl dokumentu, aniž bychom museli do dokumentu zasahovat. Navíc je možné sdílet určitý styl mezi více dokumenty.
V prvním případě ovšem specifikace vyžaduje, aby autoři
určili použitý stylový jazyk. Pokud se v dokumentu vyskytuje
alespoň jeden atribut style, který umožňuje
zapsat vnitřní stylovou definici pro daný element, je nutné
nastavit použitý stylový jazyk v deklarativní hlavičce, a
nebo je nutné, aby tuto informaci poskytoval
webový server
v HTTP hlavičce.
Dokument, který tuto informaci neposkytuje, je chybný. To platí
i přesto, že prohlížeče by měly implicitně předpokládat
stylový jazyk CSS (kaskádový styl).
Většina elementů a atributů, která byla dříve užívána k vizuálnímu formátování obsahu HTML dokumentů, byla nyní potlačena ve prospěch stylů. I přesto bude dobré zmínit některá omezení, která na ně klade specifikace a která není možné automaticky validovat s využitím DTD. Takové je například i omezení týkající se atributu určujícího velikost písma.
Tuto velikost je možné specifikovat relativně, nebo absolutně. V druhém případě označuje symbol „+“ a „-“ to, zda se má velikost písma zvětšit či zmenšit o hodnotu za tímto symbolem. Výsledné velikosti ovšem vždy náleží do intervalu 1 až 7. Relativní změna velikosti se váže k základní velikosti písma, která je definována pro celý dokument. Pokud tato hodnota není autorem explicitně nastavena, automaticky se předpokládá hodnota 3.
Formuláře přinášejí HTML dokumentům možnost interakce s uživatelem. Formuláře mohou kromě jiného obsahovat i ovládací prvky. Těmi jsou různá textová pole, výběry, tlačítka a další. Takto je možné implementovat určitý druh uživatelského rozhraní přímo v HTML dokumentech.
Základním elementem pro definici ovládacích prvků je element
<input>. Ten může definovat více typů
různých ovládacích prvků. Specifikace explicitně vyžaduje (na rozdíl
od DTD), aby byla v případě prvků typu
„checkbox“ a
„radio“ povinně
specifikována jejich hodnota. Pro ostatní typy
ovládacích prvků je tato hodnota dobrovolná. Existují ještě další
pravidla, kde výskyt některých atributů elementu <input>
závisí na zvoleném typu ovládacího prvku. Ovšem specifikace
nezakazuje přímo autorům tyto atributy v takovém případě použít,
ale naopak nařizuje HTML prohlížečům tyto atributy ignorovat.
Tlačítka lze kromě elementu <input>,
definovat i pomocí elementu <button>.
Ten přináší další možnosti, a to hlavně možnost vkládat do takového
tlačítka další HTML obsah. Například obrázky s textem a podobně.
Ne všechny elementy uvnitř takového tlačítka jsou povolené. Jejich
vymezení je definováno v DTD. Ovšem jedno pravidlo v DTD
podchyceno není. Pokud tlačítko obsahuje nějaký obrázek,
tak tento obrázek nesmí být asociován s žádnou obrázkovou
mapou.
Element <select> specifikuje výběr
z určitého seznamu možností. Každá možnost může být definována
jako implicitně vybraná. Jelikož není jasně specifikováno, jakým
způsobem se prohlížeče mají chovat, pokud není žádný prvek
implicitně vybrán, specifikace doporučuje
(nepřikazuje) autorům označit alespoň jednu možnost jako výchozí.
Chybou ovšem je, pokud je v seznamech bez možnosti
mnohonásobného výběru označeno více prvků jako vybrané.
Zajímavou problematikou je navigace mezi jednotlivými ovládacími
prvky ve formulářích. Jednou z možností, jak lze aktivovat některý
prvek, je klávesa „tabulátor“. Pořadí aktivace
jednotlivých prvků při opětovném stisku této klávesy závisí na
atributu tabindex. Specifikace jasně deklaruje,
že hodnota tohoto atributu musí být z intervalu 0 až 32767.
Toto omezení není zachyceno v DTD.
Skriptování umožňuje dynamický přístup k objektovému modelu HTML dokumentů a v některých případech i dynamické generování obsahu dokumentů. Skripty mohou být volány při načtení dokumentu a nebo při nějaké specifické události, jako je například stisknutí tlačítka. HTML je samo o sobě nezávislé na použitém skriptovacím jazyce. Jeho podpora je dána konkrétním prohlížečem. Pokud je v dokumentu použito skriptování v závislosti na události, je nutné, aby autoři specifikovali implicitní skriptovací jazyk pro daný dokument v jeho hlavičce. Tuto informaci může poskytovat i webový server v HTTP hlavičce. Pokud ovšem tato informace není dostupná v některé z těchto forem, jedná se o chybný dokument.