Zkrácené HTML zápisy

…aneb prasáčtěji už to nejde!
16. 6. 2006

Předpokládám, že každý ví, jak v HTML zapsat nějaký libovolný element. V zásadě máme dvě možnosti. Úvodní značku – <znacka> a ukončovací značku – </znacka>. Druhá možnost je pak zapsání pouze úvodní značky, protože ukončovací značka neexistuje či nemusí být zapsána. Tyto dvě metody jsou bezesporu nejznámější a jiné se prakticky nepoužívají. Nicméně HTML zná i další způsoby, jak zapsat element.

Prvním z nich je NET zápis, se kterým jste už tady na webu nejednou setkali, takže jen krátce. Úvodní značku nemusí ukončit závorka větší než „>“, ale můžeme ho ukončit lomítkem. Tedy takto: <znacka/. Tímto je značka uzavřena. Celý element potom uzavřeme opět pouhým lomítkem – /. Element by tedy vypadal takto:

<znacka/obsah elementu/

Více na toto téma třeba u jozoba.

To ale není všechno. HTML zná ještě jiné způsoby. Další z nich se nazývá „Empty End Tag“. Už z názvu trochu vyplývá, jak se vše bude odehrávat. Takže mějme běžnou HTML značku: <strong>. Nějaký její obsah a celý element namísto </strong> ukončete pouze </>. Zápis bude validní. „Značka“ </> ukončí vždy aktuální element, tedy ten, který byl otevřen nejpozději. Pokud byste používali pouze tento způsob zápisu, několik věcí by se značně zjednodušilo – prakticky nikdy by nedošlo k překřížení tagů, protože by se vždy ukončil ten aktuální. A také by se snížila velikost dokumentu. Faktem ale je, že by HTML zápis by značně nepřehledný :-). Snad by pomohl nějaký dobrý editor, který by s tímto eventuálně uměl pracovat.

Další způsob se jmenuje „closed Start Tag“. Je to takový milý nevinný zápis. Spočívá v tom, že úvodní značku neukončíte závorkou větší než „>“, ale místo toho tam narvete další značku, takže tu původní značku ukončíte závorkou menší než „<“. Asi bude lepší ukázka:

<strong<a href="#">odkaz</a></strong>

Tento zápis, ač vypadá tak nějak povadle, je správný a validní. Ve specifikaci jsem našel zmíňku ještě o jednom způsobu a sice „Empty Start Tag“, ale ten jsem prostě nepochopil jak by měl fungovat, pardon…

Tak a teď přijde to nejdůležitější. Podporují tyto zápisy prohlížeče? Inu, můžete si to vyzkoušet sami na testovací stránce na W3C. Patrně zjistíte, že to moc nefunguje…

Ale přeci jen neházejme flitnu do žita. Najdou se i prohlížeče, které to zvládají. Například takový Lynx zvládá prakticky všechny zde popisované způsoby. Kde jiné prohlížeče končí, tam Lynx teprve začíná ;-). Další věc, kterou už zvládá více prohlížečů je „closed Start Tag“. Ale i to má bohužel jisté omezení. Pokud použijete tento zápis a nebudete mít ve značce atribut, zvládne to pouze Firefox. Takže pokud byste někdy potřebovali mít zvýrazněný text pouze ve Firefoxu ale nikde jinde, můžete zkusit něco takového:

<strong<span></span>Zvýrazněný text ve FF</strong>

Pokud byste použili nějaký atribut, zvládli by to již všechny prohlížeče (tedy i Opera a MSIE).

<strong id="blbost"<span></span>Zvýrazněný text všude</strong>

Ale celé je to blbost a jen to prosím nepoužívejte někde v praxi… Uvádím to zde jen pro zajímavost.

Tak a máme tady update, Dero kápl na „Empty Start Tag“ a poslal link na stránku, kde je to hezky vysvětleno. Zkráceně to tedy funguje tak, že parser domýšlí volitelné značky podle toho, kde se právě nachází a jaká volitelná značka se nachází před tím. Je jasné, že v seznamu <ul> může být pouze <li>, takže zde můžeme využít „Empty Start Tag“:

<ul>
<li>první položka
<>druhá položka
<>třetí položka
</ul>

Parseru pak dojde, že ty prázdně závorky znamenají vlastně <li>.