Jak používám XHTML

6. prosince 2004

Nedávná diskuse o XHTML měla poněkud nečekaný efekt – podstatně zvýšila počet amatérských webdesignérů, kteří na diskusních serverech projevují své zmatení, ústící často v úplné odmítnutí XHTML. Tímto článkem bych rád čelil mylnému dojmu, že plně funkční a přístupné stránky nelze vytvořit při dodržování všech pravidel XHTML.

Ještě než se pustíme dále, ujasněme si, čeho chceme dosáhnout. Naším cílem bude vytvořit stránky plně respektující doporučení XHTML, které budou zároveň funkční a přístupné, přičemž jejich vzhled bude v majoritních desktopových prohlížečích takřka shodný.

XHTML 2.0 – experiment budoucnosti

Organizace W3C se doporučením XHTML 2.0 snaží s bezpečným časovým předstihem určit další vývoj této technologie, aby nemohla upadnout do stejného zmatku jako její předchůdkyně v polovině devadesátých let minulého století. Doporučení se momentálně nachází ve stadiu pracovního návrhu (working draft) a jeho konečná podoba je zatím v nedohlednu – slouží spíše jako opora koncepční práce. Neexistuje proto žádný rozšířený webový prohlížeč, který by ho implementoval, v praxi je tak XHTML 2.0 nepoužitelné. Dále se jím nebudeme zabývat, protože stránky podle něj vytvořené nesplňují ani základní požadavky na funkčnost.

XHTML 1.1 – omezená použitelnost

Doporučení XHTML 1.1 vzniklo „očištěním“ předchozí verze od nechtěného dědictví HTML. Implementuje zároveň několik nových myšlenek, z nichž ta nejdůležitější spočívá v takzvané modularizaci. Modularizace dělí XHTML do funkčních skupin, které mohou různá zařízení implementovat nezávisle. Pokud tedy například chcete „nacpat“ prohlížeč XHTML do náramkových hodinek, můžete ho naučit jen tu část jazyka, kterou zvládne, a úplně vynechat jiné části, přesahující technické parametry zařízení (typicky tabulky).

Prohlížeče pro XHTML 1.1 již existují, můžete tedy podle této normy vytvořit funkční stránky. Narazíte ovšem na problém s jejich přístupností. Nejrozšířenější desktopový prohlížeč současnosti, MSIE, totiž neumí přijímat soubory, které jsou ze serveru odesílány s hlavičkou „Content-type: application/xhtml+xml“, jak vyžaduje doporučení W3C (respektive takový soubor přijme a místo zobrazení jeho obsahu ho nabídne k uložení na disk).

Stránky vytvořené podle doporučení XHTML 1.1 tedy budou funkční, ale nebudou přístupné uživatelům některých dosud masově používaných prohlížečů. Uvědomte si ale, že to nemusí být vždy na škodu, záleží na účelu takových stránek a záměrech webdesignéra.

Pravda je, že existují techniky, pomocí nichž lze stránky v XHTML 1.1 zpřístupnit i MSIE4+, jakožto současnému majoritnímu prohlížeči. Spočívají však v záměrném ignorování části doporučení XHTML 1.1, což je ve svém důsledku kontraproduktivní, nesmyslné a vůbec to prozrazuje neschopnost pochopit smysl a cíl normalizace značkovacích jazyků. Osobně takové „falešné“ stránky považuji za větší zlo, než stránky zcela ignorující jakékoli normy.

XHTML 1.0 – bezbolestná alternativa

Doporučení XHTML 1.0 je definováno jako „reformulace HTML 4 podle XML 1.0“. Exponenciální nárůst popularity HTML koncem dvacátého století vedl ke vzkříšení prastarého SGML (což je vynikající sada pravidel pro definici jazyků, bohužel až příliš složitá) a jeho zjednodušení v něco, co se velmi podobalo HTML, ale poskytovalo mnohem vyšší flexibilitu autorům kódu a zároveň přesněji definovalo pravidla, která umožnila bezproblémové strojové zpracování takového kódu. Tím něčím bylo XML, které se objevilo v roce 1999 a jehož popularita rostla ještě rychleji.

Stránky podle XHTML 1.0 nemají problém s funkčností ani přístupností, protože se příliš neliší od HTML 4.01, přesněji řečeno, nepřinášejí žádnou zásadní novou funkčnost, kterou by starší prohlížeče nezvládaly. Toto doporučení má usnadnit přechod od původního samorostlého HTML k přesně specifikovanému XHTML jakožto instanci XML (a SGML). Proto také definuje i řadu zásad zpětné kompatibility, které mimo jiné povolují posílat soubory s hlavičkou „Content-type: text/html“ jako u původního HTML. Tím je vyřešen problém s prohlížeči, které XHTML nezvládají – jednoduše je „přesvědčíme“, že jde o HTML, a ony pak podle toho se soubory zacházejí (a nějak nám je zobrazí).

MSIE 6 – problematické zobrazování

V této chvíli vstupuje do hry prohlížeč Microsoft Internet Explorer 6. Firma Microsoft ho vytvořila tak, aby uchovala zpětnou kompatibilitu se staršími verzemi (MSIE4+), které obsahovaly chybné mechanismy renderování některých obrazovkových prvků HTML stránek. Prohlížeč MSIE6 tedy pracuje ve dvou režimech – quirk a standards-compliant. Ten první imituje chování starších verzí, ten druhý se chová podle požadavků příslušných doporučení W3C.

Bohužel, Microsoftu se nezadařilo a také do MSIE6 vnesl několik zásadních chyb. Tou nejdůležitější je, že do quirk režimu se prohlížeč přepne nejen tehdy, když narazí na stránku v HTML, ale také tehdy, když narazí na stránku v XHTML 1.0, která v souladu s doporučením uvádí na prvním řádku dokumentu takzvanou XML deklaraci, například:

<?xml version=’1.0′ encoding=’windows-1250′?>

Co je XML deklarace a k čemu slouží? Obecně řečeno tato deklarace určuje typ a verzi dokumentu. Nese tři informace. Fragment xml říká, že jde o dokument v XML, fragment version='1.0' určuje verzi doporučení XML, podle které byl dokument vytvořen. Oba tyto fragmenty jsou povinnou součástí XML deklarace. Třetí fragment, encoding='windows-1250', určuje, v jakém kódování je dokument vytvořen. Podle doporučení XML 1.0 je tento fragment volitelný a jeho přítomnost je vyžadována jen tehdy, pokud dokument používá jinou znakovou sadu, než je UTF-8 nebo UTF-16.

V čem je problém? Doporučení XML 1.0 praví, že XML deklarace může ale nemusí být uvedena na prvním řádku XML dokumentu. Zároveň ale praví, že XML deklarace musí být uvedena, pokud dokument používá jinou znakovou sadu než UTF-8 nebo UTF-16. A zde je kámen úrazu. Dokument XHTML 1.0 je zároveň XML 1.0 dokumentem a pokud používá jinou znakovou sadu, musí tuto skutečnost uvádět v XML deklaraci, která donutí MSIE6 přejít do quirk režimu, takže se na obrazovce objeví něco jiného, než v případě ostatních desktopových prohlížečů.

Zde bych chtěl zdůraznit, že chyba MSIE6 nijak nesnižuje funkčnost nebo přístupnost XHTML 1.0 dokumentů. Tato chyba ovlivňuje pouze jejich zobrazování, což většinou irituje spíše pořádkumilovné webdesignéry než návštěvníky stránek.

Jak na XHTML 1.0 v MSIE 6

Výše popisovaný problém má v zásadě jen dvě řešení, chceme-li dodržet to, co jsme si předsevzali na začátku tohoto článku. První řešení je používat ve všech XHTML dokumentech kódování UTF-8 nebo UTF-16. To nás zbaví nutnosti uvádět XML deklaraci a tudíž se bude MSIE6 chovat podle doporuční W3C a vytvářet stránky vzhledově takřka identické s ostatními desktopovými prohlížeči. Toto řešení je však nepraktické, protože některé programy a prostředí stále ještě UTF nezvládají, a je také v rozporu s filozofií XML, potažmo XHTML.

Druhým řešením je akceptovat popisovanou chybu MSIE6 jako jeho přednost. Tento logický kotrmelec vám připadne méně podivný, pokud do svých úvah zahrnete i prohlížeč MSIE5+. Tento prohlížeč žádný standards-compliant režim nemá a vždy bude zobrazovat dokumenty XHTML v rozporu s požadavky W3C. Protože však jde o velmi rozšířený desktopový prohlížeč, musíme ho respektovat a připravit pro něj specifický předpis pro vzhled stránky. Tento předpis pak lze využít i pro MSIE6, pokud ho použitím XML deklarace „shodíme“ do quirk režimu. Výhodou pro nás je, že si takto uvolníme ruce pro použití libovolné znakové sady, takže budeme moci využít například oblíbenou národní znakovou sadu, čímž rozšíříme přístupnost stránek i na programy bez podpory UTF.

Vyšší přístupnost s XHTML 1.0

Možná si teď říkáte, že za stávající situace je režie XHTML natolik vysoká, že je lepší použít HTML 4.01 s několika soukromými pravidly, která zajistí do budoucna snadný převod do XHTML, třeba pouhou změnou hlaviček dokumentů. V zásadě máte pravdu, ale vzpomeňte si znovu na to, co jsme si předsevzali na úvod článku. Mám teď na mysli tu část o přístupnosti. Fakt je totiž ten, že nově vznikající elektronická zařízení neimplementují HTML pro jeho přílišnou náročnost (a to jak hardwarovou, tak i softwarovou). Pokud tedy vytvoříte své stránky podle doporučení XHTML 1.0 v režimu zpětné kompatibility, budou přístupnější širšímu spektru uživatelů, než kdybyste je vytvořili podle jakéhokoli jiného doporučení!

Odkazy a zdroje

Česká blogosféra

W3C

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

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

Předchozí článek demo
Další článek E-podpis za lidovku?
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *