XHTML – element object
V tomto díle seriálu o XHTML si ukážeme element object, který představuje základní mechanismus pro vkládání externích objektů (obrázky, zvuk, video…) do stránky.
Element object – vkládání externích objektů
Povolený obsah: (#PCDATA | param | %block; | form | %inline; | %misc;)*
Atributy:
%attrs;
- Tato parametrická entita obsahuje další parametrické entity:
%coreattrs;
(atributyid
,class
,style
atitle
),
%i18n;
(atributylang
,xml:lang
adir
) a
%events;
(atributyonclick
,ondblclick
,onmousedown
,onmouseup
,onmouseover
,onmousemove
,onmouseout
,onkeypress
,onkeydown
aonkeyup
). declare (declare) #IMPLIED
- Pokud je tento boolean-atribut přítomen, je stávající element považován pouze za deklarační – k jeho aktivování musí být vyvolán některým z následujících elementů
object
. codebase %URI; #IMPLIED
- Tento atribut může specifikovat URI, od kterého budou potom odvozována relativní URI v atributech
archive
,classid
adata
. Pokud není nastaven, je s relativními URI v těchto atributech nakládáno běžným způsobem. data %URI; #IMPLIED
- Tento atribut udává URI adresu souboru s objektem, který má být nahrán. Jeho hodnotou mohou být i data samotná (např. kód v nějakém jazyce), ale tento postup není příliš častý a ani vám ho nedoporučuji – interpret XHTML v takovém případě musí přenést všechna data, ať s nimi umí či neumí nakládat, ať je smí či nesmí stahovat…
type %ContentType; #IMPLIED
- Pomocí tohoto atributu můžete nastavit MIME-typ dat specifikovaných atributem
data
. Měli byste ho používat vždy, když je specifikován atributdata
, aby interpret XHTML nestahoval data, s kterými neumí nakládat. Pokud server vrátí v HTTP hlavičce jiný MIME-typ než zde nastavený, má tato HTTP hlavička přednost. classid %URI; #IMPLIED
- Tento atribut může být použit k udání URI adresy implementace objektu.
codetype %ContentType; #IMPLIED
- Tento atribut udává MIME-typ dat, která jsou specifikována atributem
classid
. Jeho používání není nutné, ale je silně doporučováno v případě, že jeclassid
použit. Pokud není zadán, předpokládá se, že je tato hodnota stejná jako u atribututype
. archive %UriList; #IMPLIED
- Hodnotou tohoto atributu je mezerami oddělený seznam URI, na kterých se nachází archivy k danému objektu – např. doplňující data, která by si objekt při svém běhu vyžádal. Tímto způsobem mohou být přednahrány a poté již uživatel nemusí na jejich nahrávání čekat.
standby %Text; #IMPLIED
- Tento atribut může specifikovat text, který má interpret předložit uživateli při nahrávání objektu.
width %Length; #IMPLIED
- Tento atribut specifikuje šířku objektu při vizuálním výstupu. Tato šířka je buď obyčejné číslo a udává hodnotu v pixelech nebo číslo následované znakem
%
– v tom případě se použije procentuální část dostupné šířky. Pokud je šířka menší či větší než je skutečná šířka objektu, musí být objekt odpovídajícím způsobem zmenšen/zvětšen. Tento atribut byste již neměli příliš používat, ale nahradit ho ve stylech nebo ponechat objektu jeho opravdovou šířku. Užitečnost atributu spočívá hlavně v tom, že prohlížeč může pro objekt rezervovat místo, i když není ještě nahraný, a pokračovat bez obav v zobrazování stránky. height %Length; #IMPLIED
- Tento atribut je shodný s atributem
width
, ale vztahuje se k výšce. usemap %URI; #IMPLIED
- Hodnotou tohoto atributu je odkaz na image-mapu, pokud má objekt jako image-mapa sloužit. Image-mapa se definuje buď v externím souboru (v tom případě je hodnotou URI adresa tohoto souboru) nebo přímo v dokumentu – potom je hodnotou odkaz na element
map
(o tom si ale ještě povíme v příštím dílu). name NMTOKEN #IMPLIED
- Tento atribut udává jméno elementu pro případ, že by byl tento element odesílán formulářem (k formulářům se ještě v našem seriálu dostaneme).
tabindex %Number; #IMPLIED
- Pomocí tohoto atributu můžete změnit pořádek procházení dokumentu klávesnicí. Jeho popisu jsme se již věnovali v části o odkazech.
Element object v XHTML 1.0 Strict DTD
Jak už jsme si řekli, element object
je základním mechanismem XHTML pro vkládání externích objektů. Jedná se o element párový, přičemž jeho obsahem je v podstatě parametrická entita %Flow;
, zde navíc obohacená o speciální element param
, který umožňuje nastavit vstupní parametry objektu (za chvilku si ho představíme). Uvnitř elementu object
by se měl nacházet alternativní obsah pro případ, že interpret XHTML nemůže nebo neumí interpretovat objekt, na který se object
odkazuje (definování alternativního obsahu se budeme věnovat v příštím dílu). Tento alternativní obsah by se ale nikdy neměl vyskytovat, pokud se element object
nachází v sekci head
dokumentu (zde se objekt může pouze inicializovat).
Většina vizuálních prohlížečů umí sama o sobě zobrazovat základní externí objekty – např. obrázky ve webových formátech PNG, JPEG a GIF nebo textové soubory. K vložení dalších objektů již prohlížeč většinou spouští externí aplikaci. Pomocí elementu object
můžete sami definovat, jaká externí aplikace se má použít (pomocí atributu classid
), případně můžete nastavit samotný spustitelný soubor, který se má zobrazit.
Nyní dva příklady na využití elementu object
:
<object classid=’http://www.miamachina.it/analogclock.py‘>Analogové hodiny</object>
Tento příklad jsem si vypůjčil ze specifikace HTML 4.01. Vidíte zde, jak je předáván pouze osamocený spustitelný applet (v jazyce Python). V uživatelově prohlížeči může být ale spouštění takových souborů z bezpečnostních důvodů zakázáno. Pokud byste chtěli poskytnout opravdu dobrou alternativu, mohli byste v tomto případě nechat generovat serverovým skriptem do tohoto elementu aktuální čas. Další možností je ale např. poskytnout animaci analogových hodin pomocí jiných formátů:
<object classid=’http://www.miamachina.it/analogclock.py‘>
<object data=’hodiny.mpeg‘ type=’video/mpeg‘>
<object data=’hodiny.gif‘ type=’image/gif‘>
Analogové hodiny
</object>
</object>
</object>
V tomto příkladě krásně vidíte, jak lze využít toho, že, pokud nelze nahrát objekt, vyzkouší se obsah elementu object
. Zde se nejprve interpret XHTML pokusí nahrát soubor v Pythonu, poté video ve formátu MPEG (to by zobrazil pomocí programu, který má definován ve svém nastavení), poté obrázek GIF a až jako poslední se zobrazí alternativní text posledního object
u.
Element param – inicializace objektu
Povolený obsah: EMPTY
(žádný obsah)
Atributy:
id ID #IMPLIED
- Obsahem tohoto atributu je jméno elementu.
name CDATA #IMPLIED
- Tento atribut obsahuje jméno parametru, který objektu předáváme. Ten by měl takový parametr očekávat a znát, na něm také záleží jestli jsou jeho jméno a hodnota citlivé na velikost písmen.
value CDATA #IMPLIED
- Hodnota nastavovaného parametru.
valuetype (data|ref|object) 'data'
- Tento atribut udává typ hodnoty parametru, který předáváme. Možnosti jsou tyto tři:
data
– hodnota bude po svém vyhodnocení parserem předána objektu jako řetězecref
– hodnotou je URI adresa zdroje, kde se nacházejí parametry objektuobject
– hodnotou je odkaz na v dokumentu dříve deklarovaný objekt. Hodnotou atributuvalue
musí v tomto případě být hodnota atributuid
tohoto objektu předcházená znakem#
.
type %ContentType; #IMPLIED
- Pokud je atribut
valuetype
nastaven naref
, potom tento atribut udává MIME-typ dat, který se nachází na předávané URI adrese.
Element param v XHTML 1.0 Strict DTD
Element param
slouží k předání parametrů objektu či aplikaci, kterou vkládáme pomocí elementu object
. Může se jednat např. o informace o tom, kde má začít přehrávání videoklipu, jak hlasitý má být zvuk u audio souboru apod. Jména i hodnoty parametrů záleží na konkrétní aplikaci.
Všechny elementy param
se musí nacházet na začátku obsahu elementu object
, ještě před jakýmkoli alternativním obsahem – v případě více object
ů vnořených v sobě patří param
vždy k tomu, jehož je dítětem (v němž je přímo vnořen). Nyní příklad:
<object data=’video.mpeg‘ type=’video/mpeg‘>
<param name=’start‘ value=’5′ />
<param name=’loop‘ value=’true‘ />
Videozáznam z naší dovolené.
</object>
Parametry, které zde aplikaci předáváme, jsou samozřejmě pouze fiktivní – u skutečných aplikací budou pravděpodobně jiné.
Jmenná schémata objektů
Nyní bych se chtěl ještě zastavit u atributu classid
– můžete v něm použít URI začínající jak na klasická schémata (např. http
), tak i URI se speciálními schématy – např. java
pro Java Applety nebo clsid
pro ActiveX komponenty. Pokud se program navíc nachází na nějakém URI, můžete použít toto schéma ve spojení s atributem codebase
. Příklad:
<object classid=’java:program.start‘ codetype=’application/java-archive‘ codebase=’http://applets.com/code/‘ standby=’Probíhá nahrávání… Prosím čekejte.‘>
… alternativní obsah …
</object>
Předdeklarace objektu
V XHTML můžete také objekt předdeklarovat (tzn. že se nahraje, připraví k použití, ale ještě není spuštěn) a později se na něj v dokumentu odkazovat – to má výhodu v tom, že se objekt nahraje jen jednou a použít v dokumentu ho můžete kolikrát chcete. Předdeklarace objektu se provádí nastavením atributu declare
a pojmenováním tohoto objektu pomocí atributu id
:
<object declare=’declare‘ id=’muj_objekt‘ … ></object>
<!– Tato předdeklarace se může vyskytovat i v sekci head. –>
Poté se na tento objekt můžete odkazovat buď pomocí klasických odkazů (zde použijete odkaz na jeho id
):
<a href=’#muj_objekt‘ … > … </a>
nebo z něj pomocí elementu param
získat vstupní parametry jiného objektu:
<object … >
<param name=’parametr‘ value=’#muj_objekt‘ valuetype=’object‘>
… alternativní obsah …
</object>
Jak vidíte, element object
nabízí poměrně rozsáhlé možnosti využití. Můžete ho použít jak k obecnému vložení nějakého objektu do stránky (kdy udáte pouze soubor s daty a jejich typ, interpret pak použije implicitní aplikaci k manipulaci s nimi), tak k zavolání aplikace uložené na serveru nebo specifické pro nějaký prohlížeč (např. ActiveX) – v tomto případě již definujete danou aplikaci a případně i vstupní parametry. Ať už ho ale využijete jakkoli, vždy byste se měli přesvědčit o dostatečné podpoře dané aplikace, plug-inu, objektu apod. v prohlížečích vašich uživatelů, protože tato oblast na tom není z hlediska kompatibility zrovna nejlépe.
Odkazy a zdroje
- Bye Bye Embed – Elizabeth Castro (Interval.cz, 21. 7. 2006)
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Praktické rady na zabezpečení redakčního systému WordPress
27. února 2023 -
Jak se chránit před podvody na internetu – část 1
8. října 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024