Sémantika značkovacích jazyků nemá se sémantikou lingvistickou příliš mnoho společného. Přestože se na to v případě diskusí o filosofickém zákulisí webdesignu často zapomíná.
Elementy i atributy v HTML i XML mají význam daný stvořitelem jazyka (či jeho části), nikoliv svým názvem. Název je jen pojítko mezi vyznačeným obsahem a nějakou definicí (de jure či de facto). Tyto významy odráží účel jazyka.
V SVG existuje element <rect>
. Co asi vyznačuje? Určíte z názvu, jakou informaci nese? Slovo „rect“ nic neznamená, patrně to bude zkratka. Že by „rectum“, neboli konečník? Těsně vedle, podle specifikace je <rect>
obdélník, tedy grafický prvek popisující vzhled. To je v SVG pochopitelně v pořádku, neboť jde o grafický formát.
V MathML 2 najdete <mover>
. Neznačí stěhováka, jak napovídá název, nýbrž vertikální rozpůlení řádku. Opět se stará o prachsprosté vyznačení vzhledu, žádnou jasnou matematickou formulku v něm nenajdete. Specifikace MathML vlastně definuje dva jazyky: prezentační a „obsahový“. Prezentační značky a atributy použijete, chcete-li vzoreček pouze prezentovat lidskému pozorovateli. Obsahové vyznačování naopak oceníte zejména tehdy, chcete-li zaznamenat matematický význam vzorečku jazykem srozumitelným pro počítačový program (aby třeba mohl vyplivnout graf v SVG). Všechny prvky MathML tedy mají určitou sémantiku, ale zmíněné dvě skupiny se vzájemně liší v tom, k čemu chce autor svůj dokument použít.
Jazyk HTML slouží k čemu? Jaký je pravý význam jeho značek?
Když Tim Berners-Lee stvořil HTML, měl tenkrát jeden lidský mozek, jeden prohlížeč/editor a jeden server. Mozkem vymyslel webovou stránku, v editoru ji editoval, serverem si ji naservíroval, prohlížečem prohlédnul a dočetl se přesně to, co už věděl. Slušný základ bezedné studnice informací.
V soustavě praotce Tima nebyl kromě jeho mozku žádný inteligentní prvek schopný pochopit slova a věty, které projely kolotočem. Význam pro strojovou část mašinérie měly jen elementy a atributy. Nevyznačovaly smysl informace, naznačovaly způsob, jakým má být prezentována. HTML byl prapůvodně hlavně prezentační jazyk, jehož jediným účelem byl přenos informace z vizuálního editoru do vizuálního prohlížeče. S alternativními způsoby prezentace se tenkrát moc nepočítalo.
Všimněte si kupříkladu dnes již zuhelnatělého párku elementů <listing>
a <xmp>
. Měly zdánlivě stejnou funkci. V čem byl rozdíl? Element <listing>
se ukazoval písmem, v němž se vešlo 132 znaků na řádek, a <xmp>
písmem, v němž se vešlo 80 znaků na řádek. Autor stránky si z nich vybíral podle toho, jak velké chtěl zobrazovat písmo.
Kdysi dávno existovalo i šest elementů <hp1>
až <hp6>
vyjadřujících zvýraznění. Že by vyjadřovaly „malý důraz“ až „velký, ale opravdu hodně velikánský důraz“? Těžko. Jen jinak vypadaly.
Nakonec ani zkratka názvu „World Wide Web“ není příliš přátelská k nepísemným vyjádřením. Na její vyslovení potřebujete v angličtině třikrát více slabik než na nezkrácenou formu. Většině neanglických jazyků je písmenko „W“ cizí, včetně francouzštiny, takže si nevidomí naplno vychutnávají výjimku dodatečně našroubovanou do abecedy Louise Brailla. Pikantní je i situace v hebrejštině, kde se „WWW“ vyslovuje stejně jako „666“.
První roky se na web pouze koukalo, proto Netscapu 1.0 nikdo nezazlíval vynalezení elementů <font>
, <big>
a <center>
. Ve vzduchu páchlo neutuchající nadšení.
S nástupem podpory kaskádových stylopisů se náhle vzedmula vlna sémantických mravokárců. S motem „vraťme se k původní myšlence HTML“ zkusili původní myšlenku zadupat pod kytičky. Nastal Bod Zlomu. Podařilo se jim v povědomí lidí trochu posunout účel HTML. Ale ne o moc.
Účelem webové stránky dnes již není jen zobrazení ve vizuálním prohlížeči. Už neznačíte „tohle bude velkým písmem“, ale „tohle bude nadpis třetí úrovně“. Proč to bude nadpis? Protože je to důležitá informace uvozující následující text? Koho skutečně tento význam zajímá?
HTML je stále prezentační jazyk. Změnila se šíře cílové skupiny. Používáte obecnější značky, takže podporujete více způsobů sdělování informace, ale na konci pořád sedí obyčejný lidský mozek, který rozumí jen omezenému množství konvencí. Nadpis třetí úrovně uvidí větším písmem a uslyší silnějším hlasem. To je to, co chcete. Především proto vyznačíte nadpis.
Nepíšete totiž obecný dokument, píšete webovou stránku. Tvoříte uživatelské rozhraní.
Důsledek činnosti výše zmíněné vlny lze shrnout do několika postřehů:
<center>
nebo <font color="ultraviolet">
.
<acronym>
a <abbr>
je tenká.
<kbd>
a <samp>
tiše závidí elementu <code>
.
Průměrná moderní stránka používá jen hypertextové hračky (odkazy, formuláře, multimédia), <div>
y, <span>
y, pár nadpisů, odstavců a neuspořádané seznamy, sem tam nějaké „zvýdůraznění“ nebo kód. Ostatní elementy najdete zřídka, neb je málokdo skutečně využije.
Sémantika vybízí k rozmanitosti, použitelnost k umírněnosti a jednoduchým zvyklostem.
Hypertextový značkovací jazyk se vyvíjel živelně nejen syntakticky, ale i sémanticky. Definice elementů ve W3C doporučení skutečnost neodráží stoprocentně. Můžete je brát doslovně, ale nikdo vám nezaručí, že stejný přístup zvolí i ostatní autoři stránek. Syntaktický chaos po pár letech vykrystalizoval v celkem spolehlivý řád, ale sémantiku dost dobře učesat nejde.
Můžete si ošoupat hlasivky kázáním, že tabulky jsou jen a pouze na tabulková data, ale kdybyste chtěli taková data vyzobat ze všech stránek na světě, skončí ve vašem chřtánu spousta tabulkových layoutů. V praxi slouží element <table>
i ke stanovení struktury stránky. Na mě se nemračte, já za to nemůžu.
Mnohem zřetelnější rozpor mezi de jure a de facto významem je u značek <b>
, <em>
, <i>
a <strong>
. Všechny čtyři bývají používané jak k vizuálnímu zvýraznění, tak k vyjádření důrazu. Oponující definice ve W3C doporučení s tímto stavem nehne. Je vůbec potřeba s ním hnout?
Dokud je význam kódu srozumitelný při vnímání stránky lidskými smysly, plní HTML svůj účel. Uživatelské rozhraní funguje.
Lepší strojová čitelnost webových stránek sloužila po mnoho let jako argument pro řadu naivních snů. Přitažlivá myšlenka, že by jakoukoliv webovou stránku šlo jednoduše rozebrat obecným parserem a provádět se získanými daty všelijaké hrátky, má zásadní vadu na kráse. A sice: sémantika v HTML vám nic moc zajímavého o dokumentu neřekne.
Můžete extrahovat odkazy, extrahovat nadpisy, udělat osnovu. Můžete vytáhnout všechny texty a stvořit fulltextový vyhledávač. Tečka. Víc smysluplně využitelných dat z náhodné stránky nevymáčknete. Nepotřebujete rozumět její stromové struktuře, nepotřebujete znát hranice odstavců a seznamů. Vytáhnete si důležitý text, což jsou na této stránce čtyři slova — k čemu vám budou?
Když si z dokumentu postavíte v paměti krásný stromeček, spatříte nanicovatou změť <div>
ů či tabulek — a ta změť je na každém webu jiná, nemá pevná pravidla. Z pohledu strojového zpracování stránky není <div class="vládnoucí-třída">
o moc zajímavější než <font color="infrared">
.
Netřeba lkát nad tímto stavem. Není špatný. Proto ani není výrazná poptávka po změně. Neexistuje žádná další silná názorová vlna, která by chtěla účel HTML posunout dál směrem k obecnému formátu, který by byl nejen dobře strojově čitelný, ale i strojově využitelný.
Kdybyste měli v HTML tři sta elementů pro přesné vyznačování významů všeho od anagramu po zesměšnění, používali byste je? Mohli byste pak vyznačit protimluv elementem přímo k tomu určeným. Ale proč se snažit, když tento význam nemůžete návštěvníkovi srozumitelným způsobem prezentovat?
Určitě není na škodu zaznamenávat rozličné popisné údaje o datech. Takřka nikdo ovšem neocení jejich nacpání do HTML kódu. Vyplatí se mít je někde vedle a HTML/RSS/ATOM/PDF/cokoliv generovat z nich.
Jste-li přesvědčeni, že nějaký programátor zvenčí využije strojově zpracovatelnou formu, zveřejněte ji též. Vedle HTML.