No Future

Weblog přesunut na atd.havrlant.net

Element samp, validita a logika

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.

komentáře
  1. Libor - #
    —    26. květen 2006, 18:59   

    Doteď jsem si myslel, že XHTML znám poměrně dobře. Byl jsem naivní…

Jméno
Zapamatovat
http://
Zpráva

formátování: *kurzíva* **tučné písmo** `kód` "text odkazu":cíl odkazu

Tady formátuje Texy!

Rubriky

  • No Future
  • Internet
  • Se špetkou ironie
  • XHTML a sémantika
  • Testy
  • Oblíbené weblogy

  • La Trine
  • Derův zápisník
  • Yuhůův weblog
  • acciBlog
  • Martyho weblog
  • Ronnieho weblog
  • zimmiho blog
  • conBLOG
  • Klokynov blog
  • Buchtič blog
  • Dům mlhy
  • Anne’s Weblog
  • Mabfredův básnický blog
  • Další odkazy

  • Sémantika
  • MiSHAK
  • můj starší blog
  • Textpattern česky
  • Textpattern oficiální web
  • Jakpsatweb
  • Kocourek Koudy
  • Webylon