5 únor 2006, 22:06
rubrika XHTML-semantika
K čemu slouží, k čemu neslouží, k čemu by mohl sloužit, k čemu ho používá konsorcium, k čemu ho nepoužívá konsorcium i když ho k tomu samému účelu používá a jak bych ho používal já.
Abyste tedy byli všichni v obraze, element samp
slouží
k vyznačení výstupu programu či nějakého skriptu.
Drobnou zajímavostí pak je, že ve specifikaci
HTML 2 znamenal tento element něco odlišného. Následující specifikace
HTML 3.2 již zmiňuje dnešní význam. A aby toho nebylo
málo, tak na w3schools.com
zmiňují ještě nějaký jiný (nebo spíše trochu nejasný) význam. Tak to
jen abych vás hned na začátek taky trochu zmátl ;-).
Slouží-li tedy element samp
k vyznačení výstupu
nějakého programu, příklad jeho použití může vypadat třeba takto:
<p>Po rozběhnutí program na obrazovku vypíše: <samp>Napište první člen posloupnosti:</samp>.
<p>V tuto chvíli napište první člen posloupnosti.
Teď je ale otázka, jestli mohu do tohoto elementu vrazit i nějaký kus HTML kódu, pokud chci ukázat, jak bude ten či onen element interpretován webovým prohlížečem. Pozorně si prohlédněte následující příklad:
<p>K vyznačení silného důrazu slouží element <code>strong</code>. Prohlížeč ho zobrazí takto: <samp>Tak to jsem <strong>nikdy</strong> neudělal!</samp>
Je to správně nebo to není správně? Jde o to, jestli lze brát HTML
značení za výstup nějakého programu. Další potíž je také v tom,
že pokud si stránku prohlédnete bez stylů, neuvidíte to, co byste ve
skutečnosti vidět měli. Element samp
má totiž výchozí
kaskádovou hodnotu font-family: monospace
, tudíž bez stylů
zobrazí předchozí text o fous jinak, než jak by ho prohlížeč ve
skutečnosti opravdu zobrazil. Nicméně i přes tuto drobnou odchylku to
lze považovat za správný zápis. Koneckonců nic lepšího mezi tou hromadou
elementů pro tento zápis nenajdeme.
Když tedy připustíme, že interpretaci HTML značek lze považovat za
výstup programu, číhají na nás pouze samé další problémy.
Zatím jsem totiž zmiňoval pouze samé jednoduché příklady a hlavně jsem
v příkladech používal řádkové elementy jako je
právě strong
. Ovšem co dělat ve chvíli, kdy třeba chcete
vyznačit jako HTML výstup třeba odstavec? Máte v zásadě dvě
možnosti:
<p>Na odstavec používejte element <code>p</code>. Opět příklad použití:
1) <p><samp>A takto to zobrazí prohlížeč.</samp></p>
2) <samp><p>A takto to zobrazí prohlížeč.</p></samp>
Který z nich je správný? Validní je pouze ten první, element
samp
může obsahovat pouze řádkové elementy, což odstavec
pochopitelně není. Ale je to opravdu správný zápis? V prvním zápise
vyznačí element samp
pouze text odstavce, ale v druhém
vyznačí přímo ten odstavec. Logika mi tedy říká, že lepší je ten
druhý zápis. Pokud nebyl tento příklad dostatečně průkazný – jak
potom vyznačit příklad s tabulkou? Mají se ve všech buňkách
všechny texty dát do elementu samp
nebo prostě a jednoduše do
něj dáme celou tabulku? Samozřejmě opět nevalidní zápis. Podobné dvě
značky, které mohou obsahovat jak blokové tak řádkové elementy a přitom
nezalamují řádek (to by asi nebylo příliš šikovné) tady už máme
– ins
a del
. Možná by nebylo špatné
k nim přidat i samp
(a ještě ho trochu rozšířit).
Další možností je poté skutečně element samp
používat
pouze na výstupy běžný programů, nepoužívat to při HTML značení.
Nenapadá mne ovšem element, který by se dal použít namísto něj.
Zajímavě se v tomto ohledu chová konsorcium. V kódu specifikace
HTML 4.01 používá element samp
v místech,
kde bych třeba já použil element code
. To jest všechny
výskyty HTML značek se nacházejí právě v elementu samp
,
ač se mi to zdá v rozporu se specifikací, kterou ten kód popisuje. Nebo
že bych se mýlil? V následující specifikaci XHTML 1 se již element
samp
v kódu nevyskytuje a všechny HTML značky jsou
vyznačeny elementem code
. Zajímavé, pokud vím, tak ke změně
významu jednotlivých elementů v HTML a XHTML přeci nedošlo.
Takže za jakých okolností by se měl element samp
používat?
Já vlastně ani nevím… Ale asi mi nebude blbé vyznačit tímto
elementem blokový prvek jako třeba již umíněný odstavec. Prohlížeče to
zobrazí v pohodě, validátor sice nebude chrochtat blahem, ale co se dá
dělat.
Ereses
— 26. květen 2006, 18:59
Doteď jsem si myslel, že XHTML znám poměrně dobře. Byl jsem naivní…