XHTML v praxi

16. července 2002

Standard XHTML je podle mě jeden z nejvýznamnějších kroků konsorcia W3C. Tento článek by vás měl přesvědčit, že i pomocí XHTML se dá vytvořit kvalitní web, kompatibilní se staršími prohlížeči, který bude správně zobrazován v mnoha různých prohlížečích na mnoha platformách.

Stále více se ukazuje, že používání standardů je velmi důležité a do budoucna dokonce nutné. Je sice pravda, že i nové generace prohlížečů jsou pořád velmi shovívavé k chybám v kódu, ovšem obsah webu si dnes už neprohlížíme jen pomocí PC, ale i pomocí jiných přístrojů, které se již takto chovat nemusí. A protože by každému webdesignerovi mělo jít především o co největší zobrazitelnost na různých platformách a prohlížečích, je dodržení standardu nutností. Web napsaný podle standardu je posléze mnohem přístupnější i pro osoby s různými handicapy (viz seriál Odstraňte bariéry svého webu).

Čitelnost XHTML

O změnách mezi HTML 4.01 a XHTML se můžete dočíst například v článku „Krátce o XHTML“ zde na Interval.cz. Obecně platí, že většinu těchto změn každý prohlížeč ocení. Rozhodně není na škodu, že elementy budou uzavřeny ve správném pořadí, že budou psány všechny malým písmem a že všechny atributy budou v uvozovkách.

Menší problém může nastat při uzavírání elementů. V XHTML musí být ke každému tagu i jeho uzavírací protějšek, přičemž lze použít i zkrácenou variantu. Zde může dojít k problému se značkou odřádkování. Sekvence <br></br> je sice podle pravidel korektní, ale většina prohlížečů si s ní vůbec neporadí a odřádkuje dvakrát (včetně IE 5.5). Podobně zápis <br/> je správně, ale pro některé prohlížeče je nečitelný. Proto se doporučuje při zkráceném zápisu elementu dát před lomítko mezeru, což neodporuje standardu a je pro všechny prohlížeče čitelné: <br />. To samozřejmě platí nejen pro element odřádkování, ale i pro další podobné (img, input, meta, link...).

Dalším problémem mohou být logické hodnoty jako atribut. Zápis <input type="checkbox" checked /> je z hlediska XHTML nekorektní, správně má být <input type="checkbox" checked="checked" />. S tímto zápisem by neměly mít problémy prohlížeče kompatibilní s HTML 4.01. Přesto při návrhu vždy pamatujte na to, že některé prohlížeče nebudou schopné tento zápis správně reprezentovat. Tento problém se týká atributů: compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize a defer.

Problémem je i atribut name. Ve verzi XHTML 1.0 byl tento atribut prohlášen za překonaný (deprecated) u elementů a, applet, form, frame, iframe, img a map a v XHTML 1.1 odstraněn. U dalších značek je jeho použití stále dovoleno. W3C se tímto krokem podle mého názoru snaží zabránit případu, kdy se například v dokumentu objeví dvě kotvy se stejným atributem name, nebo například dvě klientské mapy budou pojmenovány stejně (atribut name se totiž může vyskytovat vícekrát se stejnou hodnotou). Proto by tento atribut u výše uvedených značek měl být nahrazen atributem id, který musí být v dokumentu jedinečný. Zde ovšem může vzniknout potíž, protože ne každý prohlížeč je schopen správně uskutečnit vazbu na atribut id, takže například odkazování v rámci dokumentu nemusí fungovat ve všech prohlížečích, což je samozřejmě problém. Pokud své dokumenty píšete v jednom ze standardů XHTML 1.0, pak se vás tento problém příliš netýká. Atribut name je u těchto elementů stále povolen, i když je už považován za překonaný. Tedy vám nic nebrání v tom, abyste kotvu v dokumentu nadefinovali takto:

    <a name=“kotva1″ id=“kotva1″ />

Atribut name je zde pro zpětnou kompatibilitu a id pro budoucnost. Horší situace nastane, píšete-li v XHTML 1.1. Zde vám samozřejmě nezbude nic jiného než:

    <a id=“kotva1″ />

To sice plně vyhovuje XHTML 1.1, ale starší prohlížeče tuto kotvu budou ignorovat. Podobná situace nastane také u klientských map (element map).

Posledním problémem, na který jsem narazil, je atribut target elementu a. Tento atribut je povolen v XHTML 1.0 Transitional a Frameset, ale ve zbylých (Strict a XHTML 1.1) je již zakázán. Což v praxi znamená, že v dokumentech, psaných v těchto dvou standardech, nemůžete odkazovanou stránku přesměrovat do nového okna prohlížeče:

    <a href=“http://www.interval.cz“ target=“_blank“>interval.cz</a>

Abych pravdu řekl, nepodařilo se mi vypátrat, proč byl tento atribut zakázán. Je sice pravda, že se především používá ve spojitosti s rámci, ale přinejmenším jeho hodnota _blank je velmi užitečná a potřebná.

Výběr standardu

Při psaní stránky je důležité uvědomit si, jaké prostředky budou potřeba a z jakých prohlížečů bude dokument zobrazován. Je zřejmé, že kód bude vypadat jinak, pokud bude určen na intranet s jasně daným typem prohlížeče, a na internet, kde jde především o kompatibilitu. Těmto potřebám vyhovuje i rodina standardů XHTML.

XHTML 1.0 Transitional je patrně nejpoužitelnější standard rodiny XHTML. Stále zachovává některé atributy zaměřené na vzhled (atribut align,...), bez kterých se bohužel někdy neobejdeme. Praktickým příkladem může být horizontální zarovnání tabulky na střed. Pokud toho chceme docílit na všech prohlížečích, nezbude nám nakonec nic jiného než:

    <table align=“center“>
     .
     .
     .
    </table>

Jak jsem uvedl výše, Transitional verze podporuje atribut target stejně atribut name u některých konkrétních elementů. Proto se domnívám, že XHTML 1.0 Transitional se nejlépe hodí do prostředí internetu. Získáte tak jasně strukturovaný dokument (což zaručuje XML), který bude zároveň kompatibilní i se staršími verzemi prohlížečů.

XHTML 1.0 Frameset je docela zajímavý případ, je totožný s Transitional verzí, ale navíc dovoluje užití frames (rámců). Je také posledním standardem XHTML, který tuto technologii podporuje. Mohu vám tedy doporučit rámce nadále nepoužívat a formátování řešit jiným způsobem. Přesto existují služby, při kterých se asi použití rámců nevyhnete. Typickým příkladem jsou různé chaty, kde se v jednom rámci neustále reloaduje výpis diskuze a v jiném je například formulář pro odesílání zpráv, který se z pochopitelných důvodů reloadovat nesmí. Bohužel v tomto případě mám pocit, že W3C zde bojuje proti technologii, která je v určitých případech nezbytná, a zároveň nenabízí adekvátní náhradu.

XHTML 1.0 Strict je nejpřísnější verze XHTML 1.0. Zakazuje použití některých elementů zaměřených na vzhled (font,...) a podobně zaměřených atributů (například atribut align z předchozího příkladu). Také nepodporuje některé postupy, které jsou u klientů a především zadavatelů stále oblíbené. Rozhodně mohu tento standard doporučit do prostředí intranetu s jasně daným typem prohlížeče (nejlépe co nejmodernějším, pochopitelně). Myslím si, že psaní dokumentu v takto definovaném prostředí v méně přísném standardu je přinejmenším zpátečnictví. Co se týče internetu, tam se pro mě jeví Strict verze jako trochu problematická a její použití bych zvažoval. Přesto je více než jasné, že za nějakou dobu budou tyto přísné verze vůbec nejpoužívanější.

XHTML 1.1 je nejpřísnější verze HTML/XHTML vůbec. Co se týče užití, platí stejné doporučení jako v předchozím odstavci.

Pokud jste narazili na nějaké problémy při psaní dokumentů v XHTML, budu rád, když se o nich zmíníte v diskusi.

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 NERA-Brno.cz
Š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 *