Jak pou₧φvßm XHTML
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:
...
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
- BohovΘ jsou Üφlenφ: Ji°φ Kosek nerad XHTML - David Grudl (La Trine, 11. 10. 2004)
- Jirka Kosek o XHTML - Jan Bien (Weblog MraveniÜt∞, 11. 10. 2004)
- O v²hodßch XHTML a zakletΘm Yuh∙ovi - Marek Prokop (Sova v sφti, 17. 8. 2003)
- Vnit°nφ sm∞rnice syntaxe HTML - DuÜan Janovsk² (Yuh∙∙v weblog o webu, 12. 10. 2004)
- XHTML mφsto HTML - Petr Weida (About weblog, 11. 10. 2004)
- XHTML nebo HTML - Ji°φ BureÜ (ConBLOG, 12. 10. 2004)
W3C
Rozprava o XHTML a HTML
P°em²Ülφte, zda pou₧φvat Φi nepou₧φvat XHTML, a nem∙₧ete se rozhodnout? Snad vßm pomohou Φlßnky, v nich₧ prezentujφ sv∙j nßzor p°ednφ osobnosti ╚eskΘ republiky, p°φpadn∞ diskuse kolem nich vedenß. Tato sΘrie Φlßnk∙ ji₧ byla uzav°ena, aΦkoli dalÜφ pokraΦovßnφ nelze vylouΦit.
- Jak pou₧φvßm XHTML (prßv∞ Φtete)
- ProΦ pou₧φvßm XHTML
- ProΦ nepou₧φvßm XHTML