XHTML -- novß budoucnost pro jazyk HTML

Mo₧nost vytvß°et si v jazyce XML dokumenty, kterΘ budou pou₧φvat vlastnφ sadu tag∙ vyhovujφcφch naÜim po₧adavk∙m, je velice lßkavß a u₧iteΦnß. Na druhou stranu, pokud budou dokumenty zve°ej≥ovßny p°edevÜφm na Webu, nenφ nutnΘ vÜe d∞lat znovu od zaΦßtku. V mnoha p°φpadech bude mnohem jednoduÜÜφ a rychlejÜφ pou₧φt za₧itΘ a Φasem ov∞°enΘ znaΦky, kterΘ znßme z HTML, a pouze je doplnit o pßr nov²ch tag∙, kterΘ naÜim dokument∙m p°idajφ inteligenci.

Konsorcium W3C proto pracuje na novΘm nßvrhu jazyka HTML, kter² bude zalo₧en na XML a p∙jde jej tedy snadno rozÜi°ovat. Nov² jazyk ponese pravd∞podobn∞ jmΘno XHTML (eXtensible HyperText Markup Language). Sl∙vko "pravd∞podobn∞" je velice d∙le₧itΘ, proto₧e vÜe je ve stßdiu p°φprav a nßvrh∙ a nejednß se zatφm o ₧ßdn² oficißlnφ standard. Po₧adavky tv∙rc∙ a u₧ivatel∙ strßnek jsou vÜak jasnΘ, tak₧e je jen otßzkou Φasu, kdy se XHTML stane standardem a jak se bude ve svΘ finßlnφ podob∞ jmenovat.

Strßnky XHTML musφ spl≥ovat mnohem p°φsn∞jÜφ syntaktickß pravidla ne₧ dneÜnφ HTML strßnky. DneÜnφ prohlφ₧eΦe se dokß₧φ vypo°ßdat s mnoha chybami ve strßnkßch, jako jsou p°ek°φ₧enΘ elementy, Üpatn∞ spßrovanΘ tagy apod. XHTML vÜak vy₧aduje, aby vÜechny strßnky byly XML-dokumenty, a musφ proto dodr₧ovat sprßvnou strukturu.

Strßnky musφ odpovφdat jednomu ze t°φ DTD stejn∞ jako v HTML 4.0. Prvnφ DTD (Strict) je urΦeno pro strßnky, kterΘ neobsahujφ ₧ßdnΘ prezentaΦnφ elementy a atributy definujφcφ vzhled dokumentu (jako font, align apod.). Vzhled strßnky je pak upraven pouze pomocφ styl∙. DruhΘ DTD (Transitional) je urΦeno pro vÜechny strßnky -- zahrnuje v sob∞ vÜech elementy a atributy z HTML 4.0, vΦetn∞ t∞ch prezentaΦnφch. Poslednφ DTD (Frameset) se pou₧ije na strßnkßch, kterΘ obsahujφ definici rozd∞lenφ okna prohlφ₧eΦe na n∞kolik rßm∙.

U₧ivatelem definovanΘ elementy mohou b²t snadno p°idßny pomocφ dalÜφho prostoru jmen (namespace). V praxi to znamenß, ₧e v jednom dokumentu m∙₧eme najednou pou₧φt elementy z n∞kolika DTD a kombinovat je dohromady podle naÜich pot°eb.

Krom∞ snadnΘ rozÜi°itelnosti p°inese XHTML jeÜt∞ jednu velkou v²hodu. Po roce 2000 bude Φφm dßl tφm vφce lidφ p°istupovat k Webu z mΘn∞ v²konn²ch za°φzenφ ne₧ jsou dneÜnφ poΦφtaΦe PC. P°φstup k Internetu se stane b∞₧nou zßle₧itostφ a budou se k n∞mu vyu₧φvat r∙znΘ WebTV, mobilnφ telefony, osobnφ komunikßtory, telefony s jednoduch²m terminßlem a dalÜφ pom∞rn∞ primitivnφ za°φzenφ. Tato za°φzenφ nemohou obsahovat slo₧it² k≤d dneÜnφch prohlφ₧eΦ∙, kter² z HTML strßnek odstra≥uje syntaktickΘ chyby autor∙. Tφm, ₧e XHTML dokumenty vyhovujφ XML, je lze velice snadno Φφst pomocφ pom∞rn∞ mal²ch a jednoduch²ch XML-parser∙.

V dalÜφch verzφch XHTML se poΦφtß s tφm, ₧e cel² dneÜnφ jazyk HTML bude rozd∞len do n∞kolika modul∙. Ka₧d² modul bude obsahovat pouze urΦitou skupinu element∙ -- nap°. zßkladnφ elementy, elementy pro tvorbu seznam∙, tabulek Φi formulß°∙.

Jeliko₧ mß ka₧dΘ v²stupnφ za°φzenφ (PC, WebTV, mobilnφ komunikßtor) jinΘ schopnosti, bude zapot°ebφ jednotn² zp∙sob, jak definovat schopnosti urΦitΘ t°φdy v²stupnφch za°φzenφ. Pro skupinu za°φzenφ se stejn²mi schopnostmi proto bude existovat jeden tzv. profil, kter² bude nΘst informace o mo₧nostech za°φzenφ. Profil bude obsahovat v²Φet podporovan²ch modul∙ XHTML a jin²ch DTD, grafick²ch formßt∙ apod. Auto°i strßnek pak budou jasn∞ v∞d∞t, na kter²ch za°φzenφch bude mo₧nΘ jejich strßnky prohlφ₧et. Nenφ ani vylouΦeno, ₧e webovΘ servery budoucnosti budou um∞t na po₧ßdßnφ klienta automaticky p°evßd∞t dokumenty mezi r∙zn²mi profily (pokud to samoz°ejm∞ bude technicky mo₧nΘ).

V nßsledujφcφm textu si m∙₧ete p°eΦφst, jak dneÜnφ strßnky upravit tak, aby vyhovovaly XHTML a zßrove≥ byly stravitelnΘ i pro dnes pou₧φvanΘ prohlφ₧eΦe, kterΘ o XHTML zatφm nic nev∞dφ.

Konverze stßvajφcφch HTML strßnek do XHTML

V p°edchozφm textu jsme vysv∞tlili, proΦ bude v blφzkΘ budoucnosti v²hodnΘ p°evΘst strßnky do XHTML. Podφvejme se proto podrobn∞ji na to, co bude v praxi znamenat p°evedenφ strßnek z HTML do XML (XHTML).

Jeliko₧ strßnky v XHTML jsou XML-dokumenty, musφ spl≥ovat po₧adavky stejnΘ jako ka₧d² XML-dokument. Zßkladnφm po₧adavkem je dodr₧enφ sprßvnΘ struktury (well-formedness). To znamenß, ₧e vÜechny tagy musφ b²t pßrovΘ nebo b²t zapsßny specißlnφm zp∙sobem (viz nφ₧e). Zßrove≥ nesmφ strßnka obsahovat ₧ßdnΘ p°ek°φ₧enΘ tagy, jak je tomu na dneÜnφch strßnkßch zvykem.

<!-- Üpatn² zßpis --> 
<p>Odstavec se <em>zv²razn∞nφm.</p></em>

<!-- sprßvn² zßpis --> 
<p>Odstavec se <em>zv²razn∞nφm</em>.</p>

V XML zßle₧φ v nßzvech element∙ a atribut∙ na velikosti pφsmen. VÜechny elementy a atributy proto musφ b²t zapisovßny mal²mi pφsmeny. V XHTML slou₧φ tag '<li>' pro zahßjenφ polo₧ky seznamu, oproti tomu tag '<LI>' nemß p°i°azen ₧ßdn² v²znam.

DalÜφm omezenφm, kterΘ mß XHTML, je nutnost uvßd∞nφ ukonΦovacφch tag∙ u vÜech element∙, kterΘ nejsou prßzdnΘ. V∞tÜina z nßs je nap°φklad zvyklß, ₧e staΦφ zahßjit odstavec pomocφ tagu '<p>'. V XHTML vÜak musφme odstavec ukonΦit odpovφdajφcφm '</p>'.

Narozdφl od HTML musφme nynφ v₧dy obsah atribut∙ uzavφrat do uvozovek nebo apostrof∙. Krom∞ toho nem∙₧eme pou₧φvat minimalizaci atribut∙. To znamenß, ₧e nap°φklad u p°epφnacφch tlaΦφtek formulß°∙ musφme mφsto

<input type="radio" name="platba" value="hotovost" checked>

pou₧φt

<input type="radio" name="platba" value="hotovost" checked="checked">

Vidφme, ₧e vÜe je pod°φzeno co nejsnazÜφmu automatickΘmu zpracovßnφ dokument∙.

Aby XML-procesor ihned poznal, zda tag je pßrov² Φi nepßrov², musφme vÜechny nepßrovΘ elementy jako br a hr ukonΦovat pomocφ '/>' -- <br/>, <hr/> apod.

Popsali jsme si v∞tÜinu zm∞n, kterΘ je pot°eba v naÜich strßnkßch ud∞lat, aby vyhovovaly XHTML. RuΦnφ provßd∞nφ t∞chto zm∞n by bylo jist∞ zdlouhavΘ a pracnΘ. Konsorcium W3C proto zdarma nabφzφ program Tidy, kter² umφ odstranit mnoho chyb ze stßvajφcφch HTML strßnek a p°evΘst je do XML. Program je dostupn² na adrese http://www.w3.org/Status.html#TIDY. Hodφ se i pro mnoho dalÜφch ·Φel∙. Nap°φklad umφ krßsn∞ zaΦistit HTML k≤d vygenerovan² r∙zn²mi textov²mi editory -- nap°. MS Wordem.

Kompatibilita XHTML se stßvajφcφmi prohlφ₧eΦi

Strßnky vytvß°enΘ pomocφ XHTML p°inßÜejφ mnoho nov²ch mo₧nostφ jak autor∙m, tak u₧ivatel∙m strßnek. Nem∙₧eme vÜak Φekat, ₧e jako mßvnutφm kouzelnΘho proutku budou vÜechny pou₧φvanΘ prohlφ₧eΦe podporovat XHMTL. V nßsledujφcφch odstavcφch naleznete rady, jak psßt strßnky v XHTML tak, aby byly ΦitelnΘ i pro dnes b∞₧n∞ pou₧φvanΘ prohlφ₧eΦe.

V XML jsou nepßrovΘ tagy ukonΦeny znaky '/>'. S touto dvojicφ znak∙ vÜak v∞tÜina prohlφ₧eΦ∙ nepoΦφtß. P°ed ukonΦovacφ znak bychom proto m∞li psßt mezeru -- starÜφ prohlφ₧eΦe pak lomφtko ignorujφ jako neznßm² atribut. P°φklad:

<br />
<hr />
<img src="logo.gif" width="320" height="160" alt="Logo" />

Pokud pot°ebujeme pou₧φt element, kter² je normßln∞ pßrov², pouze jako nepßrov², nem∞li bychom pou₧φvat minimalizovanou formu. P°φklad:

<p><p/>                <!-- sprßvnΘ odd∞lenφ textu -->
<p />                  <!-- ÜpatnΘ odd∞lenφ textu -->

V XML majφ znaky '<', '&' a ']]>' specißlnφ v²znam. Pokud tyto znaky obsahujφ skripty nebo kaskßdovΘ styly vlo₧enΘ ve strßnce, je lepÜφ tyto skripty a styly ulo₧it do samostatnΘho souboru.

V XML jsou v obsahu atribut∙ vÜechny zbyteΦnΘ mezery a konce °ßdk∙ nahrazovßny mezerou jedinou. Toto chovßnφ je odliÜnΘ od praxe dneÜnφch prohlφ₧eΦ∙. V obsahu atribut∙ bychom se proto m∞li vyhnout opakovßnφ vφce mezer za sebou a konc∙m °ßdek.

Pokud u n∞jakΘho elementu urΦujeme jazyk jeho obsahu, m∞li bychom krom∞ atributu xml:lang pou₧φt i lang, kter² je podporovßn prohlφ₧eΦi.

Pokud se v XML odkazujeme na Φßsti dokumentu pomocφ fragmentu (za URL je p°idßno '#nßv∞stφ'), vztahuje se fragment k elementu oznaΦenΘmu pomocφ atributu id. V∞tÜina prohlφ₧eΦ∙ vÜak atribut id nepodporuje a musφme pou₧φt i starÜφ atribut name u elementu a. P°φklad:

<h2><a name="nadpisx" id="nadpisx">Ukßzkov∞ oznaΦen² nadpis</a></h2>

Pokud mßme v dokumentu urΦeno k≤dovßnφ pomocφ

<?xml version="1.0" encoding="iso-8859-2"?>
m∞li bychom k≤dovßnφ urΦit i v HTML hlaviΦce, odkud jej Φtou dneÜnφ prohlφ₧eΦe:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">

P°i tomto urΦovßnφ zp∙sobu k≤dovßnφ bychom se m∞li ujistit, ₧e na serveru neb∞₧φ n∞jak² modul pro automatickou zm∞nu k≤du, kter² p°i p°ek≤dovßnφ dokumentu nezm∞nφ p°φsluÜnß jmΘna k≤du v hlaviΦkßch.

Poslednφ v∞cφ, kterou si musφme uv∞domit, je neschopnost n∞kter²ch prohlφ₧eΦ∙ korektn∞ ignorovat instrukce pro zpracovßnφ (processing instructions) -- '<? ... ?>'. Tyto instrukce se v XML pou₧φvajφ nap°φklad pro p°ipojenφ stylu definujφcφho vzhled dokumentu.

© Ji°φ Kosek 1999