Význam obsahu webové stránky měly plně popisovat HTML tagy. Web se rychle rozšiřoval i za hranice akademické půdy a tak bylo třeba nových tagů k označení rozličného obsahu, od vizitek až po kuchařské recepty. Protože prohlížeče měly se stylováním nových pro ně ještě neznámých tagů problémy, ujalo se označování obsahu oklikou přes zvláštní názvy CSS tříd. Tyto praktiky se označují jako mikroformáty a jedná se o nejúspěšnější metodu, jak zvýšit sémantiku webu.
Nejedná se o řešení elegantní, zato ale funkční a respektované. Mikroformáty mají vlastní specifikaci nezávislou na specifikaci HTML. Přestože roli některých mikroformátů přebírají nové tagy uvedené v HTML5, nejrozšířenější mikroformáty nám ale určitě ještě dlouho zůstanou.
- rel-bookmark
- rel-directory
- rel-enclosure
- rel-home
- rel-licence
- rel-nofollow
- rel-tag
- hAtom
- hCalendar
- hCard
- hNews
- hProduct
- hRecepie
- hReview
- hSlice
Mikroformát může vzniknout několika způsoby. Uvedu dva nejčastější. V obou případech nemají mikroformáty žádný dopad na vykreslení stránky prohlížečem. První způsob je, že se konkrétnímu názvu CSS třídy přiřadí určitý význam. Druhý způsob vzniká předefinováním možných hodnot atributu rel
v tazích <a>
a <link>
. Podle specifikace HTML jsou jejich možné hodnoty (alternate
, appendix
, chapter
, contents
, copyright
, glossary
, help
, index
, next
, prev
, section
, start
, stylesheet
a subsection
) v praxi naprosto k ničemu. Mikroformáty nabízí hodnoty nové.
rel-bookmark
Značí, že odkaz vede na stránku, o níž se předpokládá, že se její URL nebude v čase měnit.
<a href="http://dajbych.net/webove-mikroformaty" rel="bookmark">
rel-directory
Lze použít například v internetovém obchodě na stránce výrobku, kde označuje odkaz na stránku s výpisem všech výrobků stejné kategorie.
<a href="/category/notebooks" rel="directory">
rel-enclosure
Dá se použít k označení přílohy článku. Například pod článkem o novém postupu v programování můžou být takto označeny zdrojové kódy ke stažení.
<a href="/files/source-examples/linq.zip" rel="enclosure">
rel-home
Označuje hlavní stránku webu. Sice platí nepsané pravidlo, že po kliknutí na logo společnosti se uživatel dostane na hlavní stránku webu, z hlediska přístupnosti to ale není dostatečné řešení.
<link rel="home" href="http://dajbych.net/" title="Dajbych.net" />
rel-licence
Odkaz s touto hodnotou určuje licenci, pod kterou se obsah dané stránky může šířit.
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/cz/">
rel-nofollow
Nejedná se o nic nového pod sluncem, nicméně o mikroformát se jedná. Dává najevo, že ohodnocení cílové stránky by nemělo být odkazující stránkou ovlivněno. Užívá se hlavně v diskuzích a encyklopediích, aby nebyly zneužívány záplavou nesouvisejících odkazů k umělému zvyšování hodnocení odkazovaných stránek.
<a href="http://dragonyas.dajbych.net/" rel="nofollow">
rel-tag
Výrobky se často řadí do kategorií, u článků je ale těžší přesně určit, do které kategorie vlastně patří, protože v praxi souvisí s několika tématy. Proto se na blozích místo kategorií používají spíše štítky. Štítkem se dá stránka jednoduše označit nejen graficky, ale i kódově:
<a href="/tag/Mikroform%C3%A1ty" rel="tag">
Za název štítku je považován řetězec za posledním lomítkem v adrese. Převládá názor, že by se měl název považovat za case-sensitive. Má být kódovaný podle RFC 3986, o což se v .NETu stará metoda Uri.EscapeDataString
.
Tento mikroformát je velmi často implementován špatně. První chybou je, že se používá i v Tag Cloudu. To je seznam nejčastěji používaných štítků na blogu a je umístěn u každého článku. Štítky v něm jsou pak označeny všechny články na blogu, což jistě není úmysl.
Dalším nešvarem je používání štítků pod úryvkem článku. Fakticky však patří stránce s článkem, nikoliv stránce s úryvky. Výjimku tvoří jen stránka s úryvky formátovaná podle mikroformátu hAtom.
hAtom
Pro milovníky statických stránek, které jsou výhodné z hlediska zátěže serveru, je formát hAtom jako stvořený. Obvykle má stránka redakční systém, ze kterého se generuje obsah článku, rozcestí, informační kanály, sitemap, atp. Pro autora statických stránek je však namáhavé oddřít to, co v těchto případech zajišťuje ASP.NET. Tento formát přidává sémantiku, na základě které je možné rozpoznání jednotlivých položek webu přímo i s jejich datem vydání. Není nutné pak zavádět vnější definici těchto údajů v samostatném souboru ve formátu RSS či Atom. hAtom však není určen jen k syndikaci, ale právě k dodání sémantiky, aby byla webová stránka strojově stejně dobře čitelná, jako Atom feed. Zamýšlené použití je značení článků na blozích.
<div class="hfeed">
<div class="hentry">
<h2 class="entry-title">
<a href="http://dajbych.net/webove-mikroformaty" rel="bookmark">Webové mikroformáty</a>
</h2>
<abbr title="13.6.2010 14:40:00" class="published">13. června 2010</abbr>
<abbr title="30.6.2010 12:20:00" class="updated">30. června 2010</abbr>
<address class="author">
<cite class="fn">
<a class="url" href="http://dajbych.net">Václav Dajbych</a>
</cite>
</address>
<p class="entry-summary">Význam obsahu webové stránky měly plně popisovat HTML tagy…</p>
<p>
Tags:
<a href="http://dajbych.net/tag/Web" rel="tag">Web</a>,
<a href="http://dajbych.net/tag/Mikroform%C3%A1ty" rel="tag">Mikroformáty</a>
</p>
</div>
</div>
Jednotlivé položky jsou označeny třídou hentry
. Ta má povinné položky entry-title
, updated
a author
. Nepovinné položky jsou uvedeny ve specifikaci. Všechny položky pak mohou být v tagu označený třídou hfeed
. To má smysl zejména na rozcestí, kde se určitě použije odkaz na obsah s rel-bookmark. Samotný obsah pak bude mít stejnou kostru, jen bude určitě doplněn o obsah. Ten bude v tagu s atributem entry-content
.
hCalendar
Webová stránka, která zve na zajímavou konferenci, by údaje o času a místě konání měla mít kódované podle nějakého standardu, aby šla událost jedním klinutím přidat do kalendáře účastníka. Právě k tomu je určen mikroformát hCalendar.
<span class="vevent">
Česká republika po více než 30 letech opět uvítá 2000 špičkových vědců z celého světa.
<span class="summary">Mezinárodní astronautický kongres
<a class="url" href="http://www.iac2010.cz/">IAC 2010</a>
</span>
se bude konat od
<abbr class="dtstart" title="2010-09-27">27. září</abbr>
do
<abbr class="dtend" title="2010-10-01">1. října 2010</abbr>
v
<span class="location">Kongresovém centru Praha</span>.
</span>
Celá událost musí být obalena tagem majícím třídu vevent
. Povinné položky jsou summary
a dtstart
. Datum by mělo být použito tak, jak je uvedeno v příkladě. Datum (a čas) začátku či konce události musí být ve formátu ISO 8601.
hCard
Na stránkách je často kontaktní informace, která má mimo počítače podobu visitky. hCard je visitka na webu – strojově stejně dobře čitelná, jako pro člověka visitka papírová. hCard je možné přímo mapovat na formát vCard (RFC 2426).
<p class="vcard">
<img class="photo" src="http://img.microsoft.com/cze/mscorp/images/budova_3odkaz.jpg" />
<a class="fn org url" href="http://www.microsoft.cz/">Microsoft s.r.o.</a><br />
<span class="adr">
<span class="street-address">Vyskočilova 1461/2a</span><br />
BB Centrum, budova Alpha<br />
<span class="postal-code">140 00</span> <span class="locality">Praha 4</span><br />
<span class="country-name">Czech Republic</span>
</span><br />
<span class="tel">
Tel: <span class="value">+420 261 197 111</span>
</span><br />
<span class="tel">
<span class="type">Fax</span>: <span class="value">+420 261 197 100</span>
</span><br />
Email: <a href="mailto:msczech@microsoft.com" class="email">msczech@microsoft.com</a>
</p>
Za kontakt se považuje tag, který má třídu vcard
a obsahuje alespoň název osoby či organizace v tagu s třídou fn
. Příklad je pro pochopení snazší, než podrobné vysvětlení možných hodnot. Proto jen doplním, že pokud je uvedeno jen fn
, jedná se o kontakt osoby. Pokud je uvedeno fn org
, jedná se o kontakt organizace. U typu telefonu není možné použít libovolnou hodnotu. Jednotlivé typy telefonů jsou definovány v RFC 2426 na straně 14. Výchozí typ je VOICE
, což odpovídá u nás používanému Tel
. Dále už vás odkážu na specifikaci.
hNews
Jedná se o rozšíření formátu hAtom, které je určeno pro zpravodajské weby. Hlavní rozšíření je o zpravodajský zdroj source-org
, který je povinou položkou každé zprávy – tagu s třídou hentry
.
<div class="hentry">
<h2 class="entry-title">
<a href="http://dragonyas.dajbych.net/webove-mikroformaty" rel="bookmark">Webové mikroformáty</a>
</h2>
<abbr title="30.6.2010 18:30:00" class="updated">30. června 2010</abbr>
<address class="author">
<cite class="fn">
<a class="url" href="http://dragonyas.dajbych.net">Vít Dajbych</a>
</cite>
</address>
<p class="entry-summary">
Po přečtení bratrova článku o webových mikroformátech byste měli být v obraze…
</p>
<p class="source-org">
<a class="fn org url" href="http://dajbych.net/webove-mikroformaty">Dajbych.net</a>
</p>
</div>
hProduct
Tento mikroformát slouží k označení výrobku. Má sjednotit popis výrobků a tím zjednodušit předávání informací o nich mezi výrobcem a prodejci. Jeho význam snad dostatečně objasňuje to, že jeden z autorů je Paul Lee z Google Product Search.
<div class="hproduct">
<h1 class="fn">Real-World Functional Programming</h1>
<p class="identifer"><span class="type">ISBN</span>: <span class="value">9781933988924</span></p>
<div class="description">
<p>Functional programming languages are good at expressing complex ideas in a succinct, declarative way…</p>
<p>This book teaches the ideas and techniques of functional programming applied to real-world problems…</p>
</div>
<div class="review">
<blockquote class="description item">An amazingly good book that puts into words the many benefits of the functional paradigm, and shows …</blockquote>
— <author class="reviewer"><span class="fn">Clive Tong</span>, <span class="role">Software Engineer</span>, <span class="org">Gate Software</span></author>
</div>
<div class="review">
<blockquote class="description item">I'd certainly recommend this to any .NET developer curious about learning how to apply ideas derived from functional programming to their C# code…</blockquote>
— <author class="reviewer"><span class="fn">Mark Needham</span></author>
</div>
<div class="review">
<blockquote class="description item">Seriously though, if you've got any passion for programming and are targeting .NET then you should be reading this now.</blockquote>
— <author class="reviewer"><span class="fn">Tom Kirby-Green</span>, Byte Wrangler and Pixel Artist</author>
</div>
</div>
Povinnou informací je pouze název produktu v tagu s atributtem fn. Další informace jsou nepovinné, dokonce i cena.
hRecepie
I kuchařské recepty mají vlastní mikroformát. Povinné položky jsou fn
pro název a ingredient
pro ingredince. Postup se značí třídou instructions
. Dobu trvání lze označit třídou duraton
a yield
značí výsledné množství. Nepředpokládají se hmotnostní jednotky, ale klidně stačí uvést, kolik lidí se nasytí.
hReview
Mnoho webů obsahuje recenze na filmy, knihy, restaurace nebo hotely. Tento mikroformát má být otevřeným standardem usnadňující jejich šíření. Může být použit jako součást hProduct, nebo samostatně. V tom případě je objekt, který je recenzován, označen tagem s třídou fn
. Pokud se jedná o organizaci nebo společnost, použije se ještě třída org
. Zajímavé je, že lze sémanticky vyjádřit i hodnocení od jedné do pěti označením čísla třídou rating
. Autora recenze lze uvést vložením kontaktu ve formátu hCard, jen se místo třídy vCard
použije třída reviewer
.
hSlice
Web Slice je část stránky, která obsahuje údaje, které se často mění. Typicky třeba počasí nebo počty medailí olympijských týmů. Z pohledu uživatele se vlastně jedná o desktopový gadget v Internet Exploreru, který ale na plochu přetáhnout nejde. Je umístěn v panelu oblíbených položek. Jeho text se zvýrazní, dojde-li k aktualizaci. Po kliknutí na něj se zobrazí okno s výstřižkem webové stránky.
<div class="hslice" id="synopticka_mapa">
<h2 class="entry-title">Synoptická mapa</h2>
<p class="entry-content">
<img alt="synoptická mapa" src="http://www.chmu.cz/meteo/om/inform/analyza.gif" />
</p>
<p>Mapa je obnovována jednou za <abbr class="ttl" title="60">hodinu</abbr>.</p>
</div>
Výstřižek je označen třídou hslice
. Protože výstřižků může být na jedné stránce více, je nutné uvést ještě atribut id
. Jeho obsah je v tagu s třídou entry-content
. Název označuje třída entry-title
. Frekvenci obnovování určuje časový interval v minutách pod položkou ttl
. Místo toho lze také uvést čas konce platnosti informace. Podrobnosti najdete kde jinde než ve specifikaci.