Proč používám XHTML
V poslední době se často mezi špičkovými webdesignéry přetřásá otázka používání dokumentů v jazyce XHTML. Některé názory jsou spíše jen provokativní, jiné se snaží řešit skutečně praktickou stránku věci. Hlavním argumentem je ale nemožnost používat XHTML korektně.
Protože ale jen hrstka zasvěcených ví, o čem je vlastně řeč, nejprve bych se rád zastavil u toho, kde je vlastně onen tak často diskutovaný pes zakopaný. Potíž je především v tom, že XHTML je vlastně odvozenina syntakticky striktního jazyka XML, na nějž je naroubován starší, naopak velmi volný jazyk HTML. Zásadní rozdíl mezi oběma platformami (XML a HTML) je tedy v tom, jak se s jejich dokumenty nakládá. Dokumenty XML zpracovává XML-parser, který velmi přísně kontroluje syntaxi a na jakékoli chybě skončí, zobrazí chybové hlášení a dokument nezobrazí. Zatímco dokumenty HTML zpracovává HTML-parser, jemuž je už historicky dána nadmíra tolerance, jakoukoli chybu se snaží opravit, chybějící značky domyslet, přebývající přehlédnout.
A jazyk XHTML, který stojí oběma nohama současně na obou těchto březích, tak má velké dilema. Na straně jedné nevázané, tolerantní HTML, na straně druhé striktní a přísné XML. V praxi je to ovšem zařízeno tak, že nepracují oba parsery současně, ne že by si dokument nějak bratsky rozdělily a kousek udělá ten a kousek onen. V žádném případě. To, jak se dokument zpracuje, říká jeho MIME-typ.
MIME-typ je přiřazen každému bloku dat, který se posílá po webu. Posílá se v hlavičce HTTP a podle něj se prohlížeč rozhoduje, jak s těmi nulami a jedničkami, které dostává na vstupu, má naložit. Hlavičky HTTP obvykle odesílá webový server, který nejčastěji vychází z přípony souboru – někde v předvolbách má zapsána pravidla, která říkají: je-li přípona souboru .jpg
, odešli hlavičku image/jpeg
, je-li to .htm
nebo .html
, MIME typ bude text/html
atd. Dokumenty XML mají několik možných MIME typů – především text/xml
nebo application/xml
. Pro „hybrid“ XHTML pak byl definován další typ application/xhtml+xml
.
A teď k tomu hlavnímu. Pokud stránku v jazyce XHTML pošlete s korektním MIME typem (tedy jedním z těch typů odpovídajících jazyku XML), prohlížeč „na něj pustí“ parser XML. Zpracuje jej striktně, bez tolerance chyb. Jenže nejpoužívanější prohlížeč světa, MSIE, obsahuje několik závažných chyb. Především typy začínající „application
“ (tedy např. application/xhtml+xml
) nezpracuje vůbec a nanejvýš vám nabídne, že si stahovaný soubor můžete uložit na disk (podobně, jako když na webu kliknete třeba na soubor .zip
). A u typu text/xml
kvůli chybám zkolabuje hned na začátku. Takže jako XML se dokumenty XHTML (zatím) zobrazovat nedají. Aspoň v MSIE ne.
Zbývá druhá možnost, použít typ text/html
, a tedy parser HTML. Ty ale mají moderní prohlížeče v zásadě dva – či přesněji řečeno jeden, ale se dvěma odlišnými režimy práce. Z důvodů zpětné kompatibility se starými stránkami jsou jednak schopné pracovat tak, jak stránky zpracovávaly staré prohlížeče (MSIE5 či NN4) – a s novými (striktními) dokumenty pak pracují v tzv. standardním režimu, který chyby bývalých prohlížečů už nemá a více či méně dodržuje platné standardy. Nu, a problém je v tom, že každý XHTML dokument (stejně jako každé jiné XML) by měl začínat XML prologem, neboli značkou ve tvaru:
<?xml version=“_verze_“ encoding=“_kódování_“?>
Jenže závažná chyba v HTML parseru MSIE 6 způsobí, že pokud na tento prolog narazí, bez diskuse se přepne do onoho starého, historického režimu a stránky zpracuje stejně jako MSIE 5. Tedy chybně a nestandardně, bez ohledu na to, zda je dokument HTML či XHTML, Transitional nebo Strict. Pokud ale na začátku kódu XML prolog není, MSIE 6 už pracuje korektně a striktní dokumenty zpracuje v režimu standardním. Bohužel ale specifikace jazyka XHTML říká, že tento prolog se může vynechat jenom tehdy, když je použito kódování UTF-8
. V opačném případě (tedy u nás tak častých kódování windows-1250
a iso-8859-2
) prolog být uveden musí.
Máme tudíž dvě možnosti. Buďto mít korektní striktní dokument, ale vědět, že nejpoužívanější prohlížeč jej zpracuje stejně jako prohlížeče osm let staré, tedy špatně, nestandardně a zobrazí ho nejspíš chybně – anebo vytvořit XHTML s úmyslnou chybou, vynechat povinný XML-prolog (pokud ovšem použijeme kódování UTF-8
, chyba to nebude), a pak se stránky zpracují správně.
Proč tedy (i přes to všechno) preferuji XHTML?
Narozdíl od zastánců striktního dodržování standardů jsem přesvědčen, že v tomto případě je menším zlem porušit normu jazyka XHTML a používat novější, modernější jazyk i za cenu toho, že jeho dokumenty vytvářím úmyslně a vědomě s chybou (neuvádím onen XML prolog, i když použiji kódování jiné než UTF-8
). A pochopitelně jen proto, že mám ověřeno, že i s touto chybou stránka ve všech prohlížečích funguje.
Je těžké (téměř nemožné) polemizovat, zda používání XHTML přináší nějaké objektivní výhody. Osobně jsem přesvědčen, že všechna tvrzení o tom, že dokumenty XHTML jsou menší nebo rychlejší nebo že se snáze zpracovávají, jsou jen akademická a v praxi mají téměř nulový efekt. Moje důvody jsou jiné, čistě subjektivní – a tedy nepřenosné a nemůžu je nikomu nutit. Přesto jsou (pro mě) pádné, neoddiskutovatelné a jednoznačné ve prospěch XHTML.
Možná skoro dvouleté a téměř výhradní používání jazyka XHTML mi totiž přineslo mnoho dobrého. V prvé řadě jsem se naučil, a to už úplně automaticky, vytvářet syntakticky zcela korektní stránky. Z jediného prostého důvodu: XHTML mě k tomu, narozdíl od HTML, nutí.
Nejspíš to bude i povahou. Nejsem totiž konzervativní a mám-li na vybranou mezi dvěma technologiemi, jednou spolehlivou a zavedenou a druhou novou, progresivní, tak si – ovšem za předpokladu, že jsem si jist, že jí patří budoucnost a tu starší jednou nahradí – vyberu tu druhou. Když si budu jistý, že digitální televizní vysílání v brzké době nahradí to stávající analogové, při koupi televize nebudu váhat a koupím si digitální – i když to bude třeba znamenat, že se stávajícím analogovým vysíláním to budu mít možná složitější, méně komfortu a ne-digitální televizi bych koupil za babku. Ale přesto to udělám. A až začne digitální vysílání, budu na ten přístroj zvyklý, budu s ním umět pracovat, nebudu se muset převratně učit něco nového, protože jsem si na to vyhradil dostatečně dlouhý čas v předstihu.
To samé platí pro XHTML. Jsem hluboce přesvědčen, že budoucnost nepatří HTML, ale XML a předpokládám, že jednou s ním budu denně pracovat. Budu se muset odpoutat od (zlo)zvyků, které si zakořenilo HTML, naučit se dělat kód bez jediné chybičky, naučit se rozlišovat <p>
a <P>
a mnoho dalších věcí. Díky XHTML jsem se to naučil už teď. Zopakuji ten hlavní důvod: XHTML mě k tomu nutí.
V HTML můžu psát všechny značky a atributy malými písmeny, v XHTML musím. V HTML můžu všechny značky uzavírat, ale když v HTML neuzavřu odstavec, nic se nestane – v XHTML musím. Když se rozhodnu, můžu v HTML zásadně uzavírat všechny hodnoty atributů do uvozovek, ale bez nich to taky projde – v XHTML prostě musím. A díky tomu můžu k svému prospěchu taky používat validátor. Zatímco v případě HTML vše, co nemusím, validátorem projde bez připomínek, u striktního XHTML se dozvím všechny detaily – že jsem zapomněl uzavřít položku seznamu, že v atributu chybí uvozovka atd. Zatímco v případě HTML se dozvím jen to, že stránku prohlížeč nejspíš „nějak zpracuje“, u XHTML jsem si jistý, že je syntakticky správně a je-li se stránkou nějaký problém, mám hledat chybu jinde, ale syntaxí už se zdržovat nemusím.
Chápu, že pro leckoho to nemusí být vůbec pádný argument pro používání XHTML, pro mě ale je – a velmi důležitý. Používáním XHTML se mi výrazně změnil styl práce. Častěji se můžu spolehnout na svůj editor, který mi umí označit bloky kódu (protože v XHTML jsou všechny značky párové a vždy uzavřené). Často používám validátor a když se ujistím, že kód je syntakticky bez chyby, hledám chyby jinde. Je to podstatně efektivnější. Musím-li někdy pracovat s XML, není ve stylu mé práce žádný výrazný rozdíl (což dřív, když jsem častěji tvořil v HTML, byl celkem zásadní).
A konečně – mám lepší pocit. Vědět, že pracuji s technologií, jejíž vývoj byl oficiálně ukončen a která nemá další budoucnost, je pro mě docela deprimující.
Ovšem jak jsem psal výše, všechny tyto důvody jsou velmi subjektivní a najít nějaký objektivní, všeobecně platný je obtížné, ne-li nemožné. Mně to však za to stojí, a to i když jsem nucen občas dělat stránky obsahující chybu oproti standardu. Poslední dobou však už čím dál víc stránek dělám v UTF-8
, takže i tento bod se postupně redukuje. Časem zmizí úplně a budu mít náskok před všemi, kteří se budou XHTML teprve učit. Pro mě je to důležité, pro jiného nemusí.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Co je to DNSSEC, jak funguje a jak si ho nastavit?
14. srpna 2024 -
Jak lze snadno upravovat soubory v PDF?
14. září 2023 -
inPage AI: Jak na generování obsahu
18. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
dsfds
Dub 17, 2012 v 12:03efsd