XHTML dokument je tvořen obyčejným textovým souborem. Multimediální a jiné externí soubory jsou však nejrůznějších formátů (které prochází svým vlastním, na XHTML nezávislým vývojem), navíc většinou v binární podobě. Proto by bylo obtížné i nepraktické vkládat tyto informace do XHTML souborů přímo – bez nich by byl web tvořen pouze textovými informacemi a nebyl by pro uživatele tolik přitažlivý.

V XHTML je tento problém řešen vcelku elegantně, přesně v duchu jeho hypertextovosti. Prostě použijete v kódu stránky jeden ze speciálních elementů pro vkládání externích objektů, kterému předáte URI adresu externího souboru – interpret XHTML ho pak nahraje a vloží na příslušném místě do stránky (nebo s ním provede jinou operaci, například nabídne uživateli stažení souboru, to již záleží na nastavení interpreta).

Tyto speciální elementy neudávají pouze adresu souboru, ale také informace o jeho formátu (aby interpret věděl, jak má se souborem naložit) a případné další instrukce pro zpracování.

Vedle těchto parametrů však obsahují zmiňované elementy především textovou informaci o obsahu externího objektu, která je předložena uživateli v případě, že interpret XHTML nemůže (např. objekt nelze stáhnout), nemá povoleno (např. u počítačů v určité uzavřené síti může být zakázána manipulace s určitými soubory; uživatel si může vypnout stahování obrázků) nebo jednoduše neumí stáhnout a pracovat s objektem, na který je odkazováno (např. prohlížeč pro nevidomé logicky neumí zobrazovat obrázky a hlavně jejich uživatel si je nemůže prohlížet). Tato informace je nazývána alternativní a měla by vyjadřovat to samé jako externí objekt, ale pouze v textové formě (samozřejmě asi není možné tohoto požadavku vždy docílit, ale měli byste se snažit poskytnout maximum alternativních informací).

A proč je důležité tuto alternativní informaci uvádět a věnovat jí patřičnou pozornost? Jednou ze základních myšlenek XHTML je, že uživatel s jakýmkoli interpretem zvládajícím XHTML může přistupovat ke všem informacím v dokumentu. To je zaručeno textovým formátem těchto dokumentů – soubory nejsou nijak kódovány a mohou k nim tedy přistupovat rozličná zařízení různých parametrů od stolního počítače až po mobilní telefon či dnes již ve webdesignerské komunitě kultovní topinkovač, navíc textová informace je v podstatě jediný univerzálně přístupný formát (může být čtena člověkem i strojem, může s ní být nakládáno nejrůznějším způsobem podle potřeb interpreta i uživatele). Tím, že tuto textovou alternativní informaci neuvádíte, porušujete jeden ze základních principů XHTML a radikálním způsobem omezujete přístupnost svých dokumentů na úzkou skupinu zařízení, která umí zacházet s vámi poskytovaným objektem.

Konkrétní elementy pro vkládání objektů

Základním a nejobecnějším elementem pro vložení externího objektu do stránky je object. Můžete pomocí něj do dokumentu zahrnout jakýkoli soubor od jiného XHTML dokumentu, obrázku, videa, zvuku, animace ve Flashi až po Java Applet. Jeho možnosti nastavení jsou velmi bohaté a rozsáhlé (např. možnost definice alternativní textové informace je zde jednoznačně nejlepší), ale bohužel jsou implementovány pomaleji než u ostatních, specifičtějších elementů. Již dnes je ale v mnoha případech tento element použitelným a efektivním řešením.

Možná se vám zdá, že by XHTML bohatě vystačilo s elementem object a další, specifičtější elementy jsou již proto zbytečné. Nejspíše máte pravdu, specifičtější elementy, o kterých si za chvilku něco řekneme, byly zaváděny ještě do HTML, a to především na nátlak výrobců prohlížečů, kteří chtěli stránky rychle zatraktivnit pro běžné uživatele. Zavedení těchto elementů do HTML bylo ale nesystematické (sloužily pouze pro jeden specifický případ, další obdobné případy však zůstaly neřešeny), až později k nim byl přidán obecný element object, který tuto nesystematičnost řeší. Specifičtější elementy jsou zachovávány hlavně z důvodů kompatibility (starší prohlížeče jiné neumí, mnoho stránek a hlavně webmasterů je dodnes používá) a v budoucnu se s nimi již v XHTML nepočítá. Pro všechny externí objekty zůstane výhradně object, proto byste se již dnes měli snažit co nejvíce používat element object.

Nyní tedy k těm specifičtějším elementům. Jedním z vůbec nejznámějších a nejpoužívanějších elementů XHTML je img, který slouží k vložení obrázku do stránky. Je o něco jednodušší než object a podporovaný snad ve všech nearchaických prohlížečích. Z těchto důvodů je stále masově používán a zachován i v XHTML 1.0 Strict (jako jediný z těchto specifičtějších elementů). Tento element můžete bez obav používat, protože vám díky své jednoduchosti ušetří nějaké to psaní.

Dalším specifičtějším elementem je applet pro vkládání Java Appletů. Dnes se s ním již téměř nesetkáte a ani si nejsem příliš jistý, co se jeho podpory v nových prohlížečích týče. Zde je již jednoznačně lepším řešením element object. Element applet navíc ani není součástí XHTML 1.0 Strict, nachází se pouze v přechodné (Transitional) normě. Z těchto důvodů se jím ani nebudeme zabývat.

Posledním specifickým elementem pro vkládání externích objektů, se kterým se v XHTML setkáte, je iframe. Ten slouží ke vkládání jiných XHTML dokumentů do aktuálního dokumentu. Také tato operace je již dnes realizovatelná pomocí elementu object, avšak vložený dokument je zde považován za součást aktuální stránky (není možné s ním pracovat jako s iframe) a setkáte se zde i s problémy při manipulaci s vloženou stránkou pomocí skriptů. V takových případech může element iframe nalézt své využití. Bohužel je však i on zařazen pouze do přechodné normy XHTML 1.0 Transitional, a proto jeho používání příliš nedoporučuji.

Také si nemyslete, že každý interpret ovládající XHTML musí nutně umět vložit do dokumentu jiný XHTML dokument. Tato operace je náročná na výpočetní možnosti, navíc silně matoucí pro uživatele bez vizuálního prohlížeče či pouze s vizuálním prohlížečem s omezenými možnostmi. Proto byste neměli opomíjet textovou alternativu – v tomto případě je vhodný například odkaz na vkládaný soubor s odpovídajícím vysvětlujícím textem.

Object, img a další

Po tomto obecném úvodu se v příštích dílech budeme detailně zabývat elementy object, img a klientskými image-mapami.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět