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í.
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.
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.