V poslední době je mezi progresivními webdesignéry stále modernější vytvářet stránky v XHTML, nejlépe ve variantě Strict, ještě lépe pak ve verzi 1.1. Tomu, kdo má stránky v HTML, se už jen vysmějí. Není to dobře. Tito webdesignéři jsou totiž zaslepení standardizací stejně, jako byli před osmi lety zaslepeni možnostmi nových webových technologií jejich o pár let starší kolegové. Web přitom není o nových technologiích, dokonce není ani o standardizaci, ale o dosažení interoperability. Z tohoto ohledu je však XHTML mnohem horší než HTML.

Udělejme si malé historické odbočení pro pochopení souvislostí. Okolo roku 1996 nastal opravdový boom webu a mnoho firem přišlo s technologiemi, které rozšiřovaly funkčnost webu. Z té doby pocházejí technologie jako JavaScript, Java applety, ActiveX nebo Flash. Microsoft i Netscape rozšiřují jazyk HTML o své značky. V roce 1997 oba hráči uvolňují čtyřkové verze prohlížečů, které podporují dynamické HTML (DHTML). Implementace DHTML jsou však navzájem nekompatibilní.

Schopnosti jednotlivých prohlížečů se v té době tolik lišily, že stránka přístupná ve všech prohlížečích používala skutečně jen základní konstrukce HTML. Měla-li být stránka více „barevná a živá“, znamenalo to využití proprietárních technologií dostupných jen v některém z prohlížečů. Stránky se proto vytvářely v několika variantách, určených pro jednotlivé prohlížeče, a některé stránky zkrátka fungovaly jen v jednom prohlížeči.

V té době mnoho webdesignérů chtělo dát světu najevo, že umí, a na stránky umisťovalo různé interaktivní ActiveX komponenty, Java applety nebo alespoň jezdící text pomocí elementu <marquee>. Tím však popřeli základní myšlenku webu, který má umožnit komukoli, odkudkoli a kdykoli snadný přístup k informacím. Interoperabilita webu byla narušena.

Standardizační organizace jako W3C, IETF nebo ECMA vznikly jako instituce, které mají tuto interoperabilitu zajistit. Nástrojem pro zajištění interoperability jsou normy (každá instituce je má formálně pojmenované jinak – například W3C vydává takzvaná doporučení). Budou-li všichni dodržovat standardizované formáty dat a protokoly, mělo by to zaručit možnost vzájemné bezproblémové komunikace. Standardizace je tedy jen nástroj, nikoli cíl.

Od konce devadesátých let jsou webové standardy masivně propagovány a zdá se, že alespoň mezi autory stránek se pomalu stává samozřejmostí jejich dodržování a shoda stránek s některým ze standardů HTML nebo XHTML. To je samozřejmě dobře. Nesmíme však zapomínat, že cílem je pořád interoperabilita. S každou stránkou pracují dva okruhy lidí – její autoři a její čtenáři. Cílem je, aby si čtenáři mohli přečíst stránku vytvořenou jejím autorem. Většina čtenářů, uživatelů webu, však nečte stránky přímo, ale nechává si je zobrazit webovým prohlížečem. Autoři by proto měli stránky vytvářet v souladu se standardy a zároveň tak, aby je mohla korektně zpracovat co největší množina prohlížečů.

Ano, čistě teoreticky by mělo stačit vytvářet stránky podle standardů, čímž by se zaručilo, že se korektně načtou a zobrazí v prohlížeči. Reálná situace je však taková, že prohlížeče nepodporují všechny standardy a obsahují chyby. Dodržování standardů je podmínka nutná, nikoli postačující.

Nedávno jsem sám v plném rozsahu narazil na problematiku (ne)podpory XHTML v prohlížečích. Webové stránky ze zvyku vytvářím pořád nejčastěji v HTML 4.01, protože XHTML ze sémantického hlediska nepřináší nic nového – nabídka elementů je zkrátka pořád stejná. (Snad s výjimkou XHTML 1.1, které standardně přidává značky pro Ruby anotace.) Stále častěji se ke mně však dostávají poznámky typu: „Jak ten Kosek může ještě dneska něco vědět o webu, vždyť vlastní web má v HTML 4 a má tam tabulkový layout?“ Dokonce jsem už mailem dostal dvě nabídky na bezplatnou konverzi mých stránek do XHTML s CSS layoutem. Zdvořile jsem odmítl. Tabulkový layout je jen na úvodní stránce celého webu a v přechodu na XHTML jsem neviděl žádný reálný přínos. (A hlavní důvod je samozřejmě čas. Ročně na údržbu a „další rozvoj“ www.kosek.cz můžu věnovat jen několik hodin. A to tam radši vystavím nějaký nový text, než abych jednu tabulku předělával do CSS.)

Nicméně, moji ješitnost to nahlodalo a řekl jsem si, že musím světu nějak ukázat, že nové technologie jako XHTML 1.1 pro mě nejsou žádný problém. Optimální příležitost se naskytla v podobě knihy o podpoře XML v PHP 5, na které jsem právě začal pracovat. Bylo by přece krásné, kdyby ukázkové PHP skripty generovaly stránky v XHTML 1.1.

Zbývalo vytvořit testovací stránku v soulady se standardy a ověřit, zda ji zvládnou zpracovat prohlížeče. Napsal jsem si tedy jednoduchou stránku v XHTML 1.1 a nastavil webový server tak, aby posílal prohlížeči správný MIME typ (application/xhtml+xml). V Opeře i Mozille se stránka zobrazila, ale MSIE mi nabídl soubor k uložení na disk a psal něco o nebezpečnosti dat otevíraných na počítači.

Standardy ještě připouštějí použití typů dat application/xml a text/xml. První varianta v MSIE nefunguje ze stejných důvodů jako application/xhtml+xml. Při použití typu text/xml se MSIE snaží stránku zpracovávat jako XML dokument, ale zpracování stránky se kvůli chybě v Microsoftím parseru XML ukončí ještě během analýzy DTD pro XHTML 1.1. Závěr je jednoduchý – v XHTML 1.1 stránky psát nemůžu, protože je MSIE neumí zobrazit.

Zkusím tedy dokument vytvořit v XHTML 1.0. S MIME typy je však v MSIE stejný problém. Jediná možnost, jak vytvořit stránku v XHTML 1.0 tak, aby ji i MSIE načetl a zobrazil, je využít režim kompatibility s HTML. V tomto případě je možné stránku odesílat s MIME typem text/html. Nicméně měli bychom dodržet řadu pravidel, která zaručí kompatibilitu s prohlížeči, které o XML a XHTML nic nevědí. Jedním z těchto pravidel je neuvádění deklarace XML na začátku dokumentu. Tato deklarace normálně nese informaci o kódování, ve kterém je dokument uložen.

<?xml version=“1.0″ encoding=“utf-8″?>

Samotný jazyk XML umožňuje tuto deklaraci vynechat pouze v případě, že je dokument uložen v kódování UTF-8 nebo UTF-16. To je pro moje potřeby poměrně omezující podmínka, protože jsem v knize chtěl mít i ukázky, jak obcházet nedostatečnou podporu Unicode ze strany PHP na stránkách, jež jsou v kódování jako ISO-8859-2 nebo Windows-1250. Případné progresivní čtenáře mé knihy musím tedy zklamat. Příklady budou generovat stránky podle HTML 4.01.

Z výše uvedeného vyplývá, že v současnosti jediná možnost, jak publikovat v XHTML, vyhovět standardům a zároveň zpřístupnit stránky co nejširší skupině uživatelů, je využít režim kompatibility s HTML, mít stránky v kódování UTF-8 a posílat je klientům s MIME typem text/html.

Otázkou tedy zůstává, zda má publikování v takto svázaném XHTML vůbec nějakou výhodu oproti HTML. Rozdíl XHTML oproti HTML je v tom, že XHTML používá syntaxi jazyka XML. V dnešní době existuje mnoho aplikací, které umožňují snadné načítání a zpracování XML dokumentů. Z XHTML stránek lze tedy mnohem snáze automaticky extrahovat informace než z HTML stránek. Pochybuji o tom, že takové využití stránek jako zdrojů dat je v praxi příliš časté. Navíc existuje několik nástrojů, které jsou schopné klasickou HTML stránku nabízet pomocí standardních XML API, třeba libxml2 nebo JTidy.

Pokud vám tedy jde o snadné a různorodé zpracování informací, je lepší je uložit přímo v XML ve formě, která nejlépe vystihuje význam uložených informací. Můžete si tak vymyslet zcela vlastní formát založený na XML, v mnoha případech lze využít již existují formáty. Já osobně většinu dokumentů, knížek, článků, esejí a prezentací vytvářím v DocBooku. Výhoda tohoto přístupu spočívá v tom, že z XML dokumentu lze velice snadno pomocí XSLT generovat různé výstupní formáty, včetně HTML a XHTML. Změnit výstup XSLT transformace z HTML na XHTML je přitom velmi jednoduché. Takže až se MSIE rozhodne podporovat XHTML, stačí místo řádky…

<xsl:output method=“html“
      doctype-public=“-//W3C//DTD HTML 4.01//EN“/>

…napsat…

<xsl:output method=“xml“
      doctype-public=“-//W3C//DTD XHTML 1.0 Strict//EN“
      doctype-system=“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“/>

..respektive…

<xsl:output method=“xml“
      doctype-public=“-//W3C//DTD XHTML 1.1//EN“
      doctype-system=“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd“/>

…a vaše stránky na webu budou zase moderní.

A na závěr moje doporučení. Neztrácejte čas snahou o publikování svých stránek v XHTML, nehádejte se s ostatními, zda je lepší XHTML nebo HTML. Ušetřený čas věnujte něčemu smysluplnějšímu – třeba se naučte XSLT. To je, na rozdíl od XHTML, užitečné již dnes.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

1 Příspěvěk v diskuzi

Odpovědět