Jazyk HTML nestačí s dechem
Jazyk HTML vznikl v mezinárodním středisku pro jaderný výzkum CERN jako prostředek pro výměnu dokumentů mezi zde pracujícími vědci. Zkratka HTML znamená Hyper Text Markup Language a přesně to HTML je. Nebo spíše byl. Než se ale pustíme do úvah o možném dalším vývoji, věnujme se ještě chvíli historii a současnosti.
HTML je založen na myšlence, že dokumenty mají většinou logickou strukturu a že se mohou vztahovat k jiným dokumentům. Pro popis této struktury HTML zavádí speciální značky (markups), které se umísťují přímo do textu. Výsledný vzhled dokumentu je samozřejmě na jeho logické struktuře závislý, přesto však lze dokument ve formátu HTML prezentovat více způsoby. Tato idea oddělení logické struktury a konečného vzhledu je základem SGML (Standard Generalized Markup Language). SGML je tedy obecný přístup k dokumentům a HTML je jedna z jeho konkrétních implementací (pro milovníky tajemných výroků a zkratek říkáme, že HTML je jeden DTD v SGML). Toto dědictví si HTML nese s sebou a mnohdy obtížně se je snaží překonat.
V čem je vlastně problém? Během několika let a zásluhou geniálního Marca Andreesena se HTML stal snad nejpoužívanějším formátem dokumentů na Internetu. Dnes už lidem nestačí pouze popsat logickou strukturu svého textu, chtějí mít i kontrolu nad tím, jak bude výsledek vypadat. Snaží se tedy různými způsoby HTML využít, někdy až znásilnit (typickým příkladem jsou tabulky, které alespoň částečně umožňují rozhodovat o umístění objektů na stránce), a výrobci WWW prohlížečů jim to usnadňují zaváděním nových a nových, vzájemně málo kompatibilních rozšíření. Řekněte, jaký význam pro strukturu dokumentu má tag <SPACER>? A jak vypadají dokumenty, které tento tag používají, například v MS Internet Exploreru? Příkladů je mnoho. Jazyk HTML se tak stává více a více jazykem pro typografii, jako je například TeX, i když jeho kvalit a možností nejspíš nikdy nedosáhne. Upřímně řečeno, kdyby se tenkrát v CERN prosadil LATeX místo HTML, nástup WWW by se pravděpodobně dosti zpozdil, pokud by k němu vůbec došlo. TeX není jednoduchý nástroj. Nicméně HTML nebo podobný jazyk by asi dříve nebo později stejně vznikl.
Do hry vstupují další technologie. Objevují se formuláře a z pasivních čtenářů se stávají aktivní účastníci, což má pro rozvoj WWW obrovský význam. Výzkumní pracovníci firmy Sun Microsystems si několik let hrají s univerzálním programovacím jazykem Java pro domácí spotřebiče a zjišťují, že tento jazyk je ideální pro rozšířením dosud statických WWW stránek o další prvky, které mohou surfaře upoutat a vtáhnout do světa jejich tvůrců. Vzniká jednodušší JavaScript, konkurence se nenechává zahanbit a přichází s ActiveX. Prohlížeče pomocí plug-in modulů umožňují zobrazovat i dokumenty v jiných formátech, například třírozměrné virtuální světy popsané v jazyce VRML. Tvůrce WWW stránek se tak kromě autora textu musí stát ještě výtvarníkem a programátorem, nebo si je alespoň přivolat na pomoc. Specifikace Cascading Style Sheets umožňuje, téměř v duchu SGML, definovat vzhled jednotlivých prvků dokumentu (například barvu nebo fonty). Pomocí dalšího rozšíření, případně tagu , lze v Netscape Communicatoru umísťovat části dokumentu do okének na přesné pozice a dokonce i přes sebe. Prohlížeče WWW se čím dál tím více stávají operačním systémem poskytujícím stejné prostředí nezávisle na platformě a rozšiřují se do všech zařízení, které mají alespoň procesor, kousek paměti a připojení k Internetu. Jaký tedy bude vývoj HTML?
Jazyk HTML, respektive dostupné prohlížeče, stále má některé nedostatky. Není například možné mít text zarovnaný k oběma okrajům (to by vyžadovalo algoritmus pro dělení slov, který závisí na jazyku, v němž je dokument napsán), v HTML je obtížné psát matematické vzorce (i když na tom už se pracuje), definice HTML nijak nepodporuje jiné znakové sady než ISO-8859-1 a podobně. Je samozřejmě bláhové snažit se předpovídat, jak se bude HTML dále vyvíjet (pokud chcete vědět, na čem se pracuje nyní, podívejte se na stránky World Wide Web Consortium). Pokusím se tedy alespoň naznačit, jaký vývoj by se líbil mně.
Už nyní HTML do jisté míry odpovídá krabičkovému modelu TeX (nebo objektovému modelu, chcete-li). Některé jeho tagy slouží jako kontejnery pro části dokumentů (odstavce, seznamy, tabulky a dokonce pouze k tomuto účelu sloužící tag <DIV>) a u jednoho z těchto kontejnerů () je dokonce možné (respektive nutné) specifikovat obsah odkazem na externí dokument. Současně jsou některé kontejnery dostupné jako objekty v JavaScriptu a tedy i v Javě. Doufám, že tento trend půjde ještě dál a že budeme moci vytvořit na stránce libovolně umístěný kontejner, jehož obsah bude možné určit odkazem na externí dokument a zároveň vlastnosti tohoto kontejneru půjde měnit JavaScriptem nebo Javou. (Mám stránku, kde bych cosi podobného potřeboval.) Také bych uvítal, kdyby pokračoval vývoj Cascading Style Sheets směrem k objektovému modelu, který by umožňoval zařazovat tagy do tříd podle jejich vlastností, tyto třídy navzájem kombinovat a vytvářet nové třídy odvozením od původních. Už teď se pracuje na standardu XML (Extended Markup Language), což by měla být odlehčená verze SGML pro WWW prohlížeče. V XML je možné definovat si vlastní strukturu dokumentů a vlastní tagy. Způsob prezentace (zobrazení) nových tagů potom popisují style sheets. Půjdu-li až do krajnosti, HTML nebo některý z jeho následníků by se mohl stát jakýmsi jazykem nejen pro tvorbu dokumentů, ale i pro popis obecnějších datových struktur, případně grafického rozhraní aplikací. Kód aplikace by pak byl napsán v Javě, zpracování událostí by zajišťoval JavaScript a vše by běželo pod "operačním systémem" prohlížeče. Přáním největším ale samozřejmě zůstává vytvoření závazného standardu HTML, který by rozeznávaly všechny prohlížeče.
Ale dosti planých řečí, počkejme a nechme se překvapit.
Až po dopsání tohoto textu textu jsem zjistil, že přece jen existuje možnost zarovnat text k oběma okrajům pomocí tagu <DIV ALIGN=JUSTIFY>. Nikdo nejsme dokonalý. (Pokud vím, tento tag funguje zatím pouze v Netscape Communicatoru a není součástí DTD pro HTML 3.0, což mne samozřejmě neomlouvá.)