HTML 5 a dědictví minulosti
Nebývá zvykem psát o HTML 5 v jiném než kladném smyslu. Rozhodně ale neplatí, že by byl tento jazyk zcela bez kazu. HTML 5 není projektem stavěným tak říkajíc na zelené louce, ale navazuje na dosavadní praxi při používání HTML, a nevyhnutelně tak přejímá i všechny problematické aspekty.
PAVEL SALVET
Kolem roku 1991 sepsal pracovník CERN (evropské středisko pro výzkum atomových částic) Tim Berners-Lee návrh hypertextového projektu, z něhož později vznikl HTML. Zásadní, ba průlomové na jazyku HTML bylo to, že se v něm daly používat hypertextové odkazy. To umožňovalo uživatelům snadnější pohyb mezi jednotlivými dokumenty uloženými na internetových serverech. Konečně tak odpadlo procházení adresářových struktur, které bylo o to náročnější, čím více síť rostla a čím bohatší byl obsah serverů k síti připojených. Efektivnost hypertextových odkazů se tak stala klíčovým faktorem podílejícím se na fenomenálním nástupu HTML.
HTML budoucnosti
Až do verze 3.2 obsahoval HTML hlavně tagy pro vyznačení struktury a pro popis informací, tedy sémantické značky, které ze své podstaty neumožňovaly autorům webových stránek určovat v dostatečné míře grafickou podobu HTML dokumentů. Vývojáři prohlížečů proto vyšli vstříc a do HTML zakomponovali množství ryze prezentačních (vzhled určujících) tagů, jako např.
Tento krok měl však i svou odvrácenou tvář. Kvůli zneužívání tabulek k formátovacím účelům a nadměrnému používání prezentačních tagů ztrácely HTML dokumenty svou přehlednost. Rovněž sémantická úroveň šla rapidně dolů, jelikož autoři stránek strukturální a deskriptivní tagy částečně vynechávali, resp. nahrazovali je prezentačními. Problém byl i v tom, že web se čím dál tím více stává multimediální záležitostí, zprostředkovatelem webového obsahu se stávají zařízení nejrůznějšího charakteru (tiskárny, mobilní telefony, hlasové čtečky aj.), a ne všechna mají dispozice k interpretaci všech prezentačních tagů.
Standardizační webová organizace W3C (World Wide Web Consortium) tedy zahájila tažení proti nastolenému trendu a v roce 1997 vydala specifikace pro HTML 4, kde se zaměřila na vylepšení struktury dokumentu; pro vzhled stránek měly nadále sloužit především CSS (Cascading Style Sheets). Nový způsob definování vzhledu se díky svým výrazným výhodám (vzhled celého webu bylo možné definovat v externím souboru, což je přehlednější i úspornější) rychle ujal a s přehledem vytlačil tabulkový layout i většinu prezentačních elementů. Nicméně W3C spřádalo mnohem smělejší plány. V roce 1999 uvedlo nový jazyk – XHTML. Ten měl nahradit HTML, jehož vývoj byl oficiálně prohlášen za ukončený. Tento manévr nebyl samoúčelný, ale byl součástí širší strategie. Konsorcium zamýšlelo sjednotit značkovací jazyky pod jedním jednoduchým datovým formátem, kterým se měl stát XML (eXtensible Markup Language).
Cílem bylo dosáhnout maximální konvertibility a umožnit tak snazší práci s daty. Přechod na XHTML také dával naději na překonání chaosu v syntaxi, kterým je zachvácen HTML, a na návrat k čistě strukturovanému kódu. Jenže vývoj XHTML ustrnul hned na samém začátku. První verze byla pouhým reformulovaným HTML a práce na druhé verzi se ujali lidé, kteří se zjevně cítili být povzneseni nad realitu. XHTML 2 tak, jak byl navrhován, byl necitelně inkompatibilní s předchozí verzí, vůbec se nezabýval praktickými potřebami tvůrců webů, zejména se však nedokázal vypořádat s nástupem a rozvojem webových aplikací! Léta ubíhala a zklamání rostlo.
Za této situace přišel opět na řadu zavržený HTML. S myšlenkou na znovuobnovení jeho vývoje vystoupila skupina WHAT WG (Web Hypertext Application Technology Working Group), sdružující zejména řadu tvůrců webových prohlížečů jako Mozilla Foundation, Opera Software či Apple. Nezůstalo jen u myšlenky, přikročilo se i k dílu, které se úspěšně rozvíjelo. V roce 2007 se projekt přesunul "pod křídla" W3C. S XHTML 2 to dopadlo hůře. Ani po bezmála deseti letech se jej nepodařilo dokončit, také se nenašel nikdo, kdo by jevil ochotu ho implementovat.
Zpětná kompatibilita
"Mohli jsme se ještě několik desetiletí mazat s kompatibilitou obtloustlými a těžko použitelnými standardy a házet uživatelům kosti v podobě nových naleštěných funkcí, přišpendlených na zapáchající tělo mrtvoly, a my jsme řekli ano," frustrovaně poznamenal jeden z účastníků internetové diskuse. Narážel tím nepochybně na fakt, že HTML 5 přináší kvantitativní (přidává nové tagy a funkce), nikoliv kvalitativní vylepšení. Fundamentálně se tedy nejedná o změnu, nýbrž o doplnění a rozvoj jazyka. Hlavním přínosem je specifikování javascriptových rozhraní, jako např. Drag and Drop API, Canvas apod. To jistě udělá velkou radost programátorům webových aplikací, ale ke zkvalitnění HTML až tolik nepřispěje. HTML by přitom v jednom ohledu zásadní změnu potřeboval. Dlouhodobě mu totiž schází respektovaná a dodržovaná koncepce. Dosavadní praxí je, že každý si do něj přidává, co chce, a upravuje si jej podle svých potřeb.
Každá vývojová peripetie ale HTML nepříznivě ovlivnila, což si můžeme snadno ověřit porovnáním zdrojových kódů HTML dokumentů z různých období. To vše bylo nutné zohlednit i v návrhu HTML 5. Kvůli zpětné kompatibilitě v něm najdeme vedle nových a důležitých věcí také všechny reminiscence z minula; samozřejmě nemohou chybět prezentační tagy, benevolentní syntaxe ani XHTML. Trochu to připomíná dort, který upekli pejsek s kočičkou. Zažívací potíže z HTML 5 však nikomu, možná s výjimkou parserů, nehrozí, jen se budeme muset smířit s kompatibilitou obtloustlým standardem.
Udržení zpětné kompatibility je ale bohužel něčím, čemu se nedá vyhnout. Bylo nezbytné novou verzi HTML koncipovat tak, aby kontinuálně navazovala na to, co se předtím používalo. Jedině díky tomu totiž mohou prohlížeče implementovat HTML 5 po částech. Jinak by to u tak obsáhlé normy ani nešlo, neboť implementace celé specifikace je práce na mnoho let, navíc ani samotná tato norma ještě není zcela hotova. Jednou z ožehavých věcí, se kterou bylo potřeba se vypořádat, byl například nesoulad mezi platnými normami a současnými implementacemi. Vývojáři prohlížečů totiž standardy příliš úzkostlivě nedodržovali, a tak se stalo, že webové stránky jsou někdy v prohlížečích interpretovány jinak, než by měly být.
Rozpor mezi normami a implementacemi v prohlížečích byl tak velký, že si vynutil důkladné zkoumání toho, jak prohlížeče HTML kód skutečně interpretují, jak ho parsují, jak zpracovávají chyby, jak sestavují objektový model. Toto vše zmapovat, popsat a nakonec promítnout do návrhu HTML 5 nebylo jednoduché i proto, že mezi implementacemi jednotlivých prohlížečů jsou častokrát velké rozdíly a jejich chování není nikde pořádně zdokumentováno.
Syntaxe
Charakteristickým rysem syntaxe HTML je benevolence. Pro kodéra možná příjemná, může si psaní kódu usnadnit různými zkratkami, nebo přímo porušováním pravidel. Prohlížeč si naopak musí to, co v kódu chybí, sám doplnit. Parsování kódu je tím složitější a sestavování dokumentu o to pomalejší.
Dalším charakteristickým rysem syntaxe HTML je nejednoznačnost. Můžeme si to vysvětlit na příkladu elementu s chybějícím koncovým tagem. Zde existují dvě možnosti: buď se jedná o prázdný element (bez obsahu), kam koncový tag nepatří, nebo o neuzavřený element. Aby to prohlížeč správně vyhodnotil a případně si koncový tag doplnil, musí daný element znát. Pokud narazí na neznámý úvodní tag (může jít např. o nový tag, který ještě není podporován, nebo o nestandardní rozšíření jiného prohlížeče), pak nemá šanci podle syntaxe zjistit, zda se jedná o prázdný element, nebo o neuzavřený element.
Typickým příkladem problémů při vývoji HTML může být například deklarace "Doctype". Autoři webových stránek ji pouze opisují, aniž by měli možnost ji nějak smysluplně využít. Mnozí z nich jí ani nerozumí. V HTML 5 se tato deklarace podstatně zkrátí. Teoreticky by bylo lepší deklaraci "Doctype" rovnou odstranit, prakticky by to však bylo dost nešťastné. Z "Doctype", určeného k deklarování DTD, si totiž prohlížeče udělaly přepínač renderovacích režimů. Neuvedení "Doctype" na začátku HTML kódu způsobí, že stránka bude renderována (vykreslena) v tzv. quirk modu. A tak zůstala deklarace "Doctype" v HTML 5 raději ponechána.
Sémantika
Sémantická úroveň současných webových stránek je výrazně neuspokojivá. Převládajícím tagem je sémanticky neutrální
"Rozvoj HTML tagů jako významových značek ustrnul brzo po rozjezdu WWW, takže dnes sice v HTML máme šest tagů pro nadpisy, osm tagů pro seznamy a tři tagy pro citace, ale nemáme tag pro patičku, navigaci, blok odkazů, není značka pro poznámku pod čarou, viditelné shrnutí článku, viditelný popisek obrázku, nemáme tag pro datum, autora ani pro další druhy informací, které se do HTML jaksi ‚nevešly'. Pro skutečný sémantický popis moderní webové stránky by ale údaje o tom, co je třeba patička, co je reklama, co hlavní text a co je nesouvisející informace, byly zásadně důležité."
V HTML 5 se tento stav mírně zlepšuje. Několik zbytečných tagů bylo vypuštěno (např. již zmíněný
Na úrovni sémantiky ale záleží! Elektronické dokumenty mají oproti těm tištěným tu výhodu, že je lze snadno, rychle a prakticky bez nákladů zpracovávat. Zpracování dokumentů zahrnuje i analýzu jejich obsahu. Prospěšnost kvalitní analýzy obsahu jistě netřeba dlouze vysvětlovat nikomu, kdo aspoň občas používá vyhledávač. Vyhledávače fungují na principu hodnocení relevance obsahu stránek k zadaným výrazům. Tomuto hodnocení vydatně napomáhá právě sémantika. Zkvalitnění sémantiky by proto znamenalo i kvalitativní vzestup vyhledávacích služeb. Ovšem aby vyhledávače mohly dokonale analyzovat informace na webových stránkách, musely by tyto informace být perfektně sémanticky popsány, aby i strojům bylo zřejmé, co který kus textu představuje. Koncept, který měl vést k sémanticky zvládnuté formě webových stránek, modulární XHTML, sice nedopadl šťastně, což ale neznamená, že je tento koncept špatný. Myšlenka několika základních modulů (snad by stačil i jeden) s několika málo desítkami obecně používaných tagů, k nimž by se daly připojit podle potřeby další moduly, je docela rozumná, vždy však záleží na realizaci. Aby takový koncept v praxi fungoval, musí být splněny tři důležité podmínky:
a) Spektrum tagů musí být dostatečně široké, aby postihlo všechny zásadní typy informací.
b) Musí existovat ochota webových vývojářů na daný koncept přistoupit.
c) Podpora v prohlížečích.
Výhodou modularizace značkovacího jazyka by bylo přehledné uspořádání tagů do jednotlivých modulů, přičemž každý kodér by se seznámil jen s těmi moduly, jejichž tagy potřebuje, nemusel by se učit stovky tagů.
Směr vývoje
Zatímco jinde se prosazuje princip rozdělení datového modelu, uživatelského rozhraní a řídicí logiky do tří nezávislých komponent tak, aby modifikace některé z nich měla minimální vliv na ostatní, tendence vývoje HTML jde přesně opačným směrem. Z původně jednoduchého textového formátu se stala postupem času sofistikovaná technologie pro tvorbu interaktivních webových aplikací, která integruje všechny výše zmíněné komponenty. Samostatný HTML soubor tak může představovat stejně tak statický dokument jako interaktivní client-side aplikaci nebo obrázek či animaci. V HTML 5 se vzájemná provázanost jednotlivých složek, zejména datové a řídicí, prohlubuje. Některé nové tagy a atributy byly přímo navrženy jako součást určitých API, např.