Metadata a hlavička pro XHTML dokument

11. června 2004

Velkou výhodou (X)HTML dokumentů je, že kromě vlastního obsahu, čitelného v prohlížeči, mohou nést i řadu skrytých informací, metadat. Ve skutečnosti nám mohou metadata prozradit mnohem více než dokument sám. V poslední době však už bývají hlavičky, kam se metadata zapisují, tak objemné, že se v nich lze jen těžko orientovat a někdy svým rozsahem dokonce podstatně převyšují dokument sám. Tento článek by vám měl napomoci zorientovat se v základních možnostech využití metadat v hlavičce (X)HTML dokumentu.

Nejprve se podívejte, jak bude vypadat výsledný dokument. Jednotlivé sekce budu rozebírat a komentovat postupně, protože je jich velké množství. Každá sekce je od ostatních oddělena vnořenými komentáři, které nesou souhrn těch nejdůležitějších informací. (Komentáře jsou v angličtině, protože vznikaly v rámci volně přístupného fóra součinností několika přispěvatelů.) Věnujte pozornost především elementům „meta“ a „link“, které obsahují metadata, ostatní elementy jsou v ukázce zahrnuty pouze proto, aby výsledkem byl validní XHTML dokument.

<!– ?xml version=’1.0′ encoding=’windows-1250′? –>
<!DOCTYPE html PUBLIC ‚-//W3C//DTD XHTML 1.0 Strict//EN‘ ‚http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd‘>
<html xmlns=’http://www.w3.org/1999/xhtml‘ xml:lang=’cs‘ lang=’cs‘>
   <head>
      <!– ENCODING /–>
      <!– use proper one: iso-8859-2, windows-1250, utf-8 etc. /–>
      <!– check FIRST LINE with xml charset too!!! /–>
      <meta http-equiv=’Content-Type‘ content=’text/html; charset=windows-1250′ />
      <meta http-equiv=’Content-language‘ content=’cs‘ />
      <!– ENCODING end /–>
      <!– CACHE /–>
      <!– turning cache on/OFF depends on what you need to do /–>
      <!– dynamic (PHP/ASP) should be OFF, static (HTM/HTML) should be ON /–>
      <!– CACHE – MSIE /–>
      <meta http-equiv=’Cache-Control‘ content=’must-revalidate, post-check=0, pre-check=0′ />
      <meta http-equiv=’Pragma‘ content=’public‘ />
      <!– CACHE – MSIE end /–>
      <!– CACHE – other browsers /–>
      <meta http-equiv=’Cache-Control‘ content=’no-cache‘ />
      <meta http-equiv=’Pragma‘ content=’no-cache‘ />
      <meta http-equiv=’Expires‘ content=‘-1′ />
      <!– CACHE – other browsers end /–>
      <!– CACHE – end /–>
      <!– ROBOTS /–>
      <!– select suitable behavior for robots /–>
      <meta name=’robots‘ content=’index,follow‘ />
      <meta name=’googlebot‘ content=’index,follow,snippet,archive‘ />
      <!– meta name=’robots‘ content=’noindex,nofollow‘ /–>
      <!– meta name=’googlebot‘ content=’noindex,nofollow,nosnippet,noarchive‘ /–>
      <!– ROBOTS end /–>
      <!– KEYWORDS & CATEGORIES – but who cares now :-( /–>
      <meta name=’description‘ content=’XHTML 1.0 Strict basic page fragment‘ />
      <meta name=’keywords‘ content=’XHTML 1.0, CSS, test‘ />
      <meta name=’category‘ content=’XHTML‘ />
      <!– KEYWORDS & CATEGORIES – end /–>
      <!– AUTHOR self promo – use ‚crypted‘ e-mails defeats robotic harvesters /–>
      <!– Translate . => &#45; @ => &#64; etc. /–>
      <meta name=’author‘ content=’All: Author Name, e-mail: author-name(@)example.net‘ />
      <meta name=’webmaster‘ content=’All: Webmaster Name, e-mail: webmaster-name(@)example.net‘ />
      <meta name=’copyright‘ content=’©2004 Owner Name, e-mail: owner-name(@)example.net‘ />
      <!– AUTHOR self promo – end /–>
      <!– PICS label – content rating & description (kids, security…) /–>
      <!– Platform for Internet Content Selection (PICS) – http://www.w3.org/PICS/ /–>
      <!– PICS label generator – http://www.icra.org/_en/label/extended/ /–>
      <meta http-equiv=’pics-label‘ content='(pics-1.1 „http://www.icra.org/ratingsv02.html“ comment „ICRAonline EN v2.0“ l gen true for „http://example.net“ r (nz 1 vz 1 lz 1 oz 1 cz 1) „http://www.rsac.org/ratingsv01.html“ l gen true for „http://example.net“ r (n 0 s 0 v 0 l 0))‘ />
      <!– PICS label – end /–>
      <!– DUBLIN CORE /–>
      <!– DC Metadata Initiative (DCMI) – http://dublincore.org /–>
      <!– DC template generator – http://www.lub.lu.se/cgi-bin/nmdc.pl /–>
      <meta name=’DC.Title‘ content=’Title Name‘ />
      <meta name=’DC.Identifier‘ content=’http://www.example.net‘ />
      <meta name=’DC.Language‘ content=’cs‘ />
      <!– DUBLIN CORE – end /–>
      <!– GEOURL /–>
      <!– Geographics location (altitude, latitude) – http://geourl.org /–>
      <!– You can obtain exact location via http://www.maporama.com/share/ /–>
      <meta name=’ICBM‘ content=’0.0000, 0.0000′ />
      <!– GEOURL – end /–>
      <!– BROWSER SPECIFIC FEATURES = ALL OFF /–>
      <!– MSIE – ‚helpful‘ features /–>
      <meta http-equiv=’imagetoolbar‘ content=’no‘ />
      <meta http-equiv=’MSThemeCompatible‘ content=’no‘ />
      <meta name=’MS.LOCALE‘ content=’cs‘ />
      <!– OPERA – image resizing /–>
      <meta name=’autosize‘ content=’off‘ />
      <!– BROWSER SPECIFIC FEATURES = end /–>
      <!– ICON /–>
      <!– Use icon for this page if you have one /–>
      <link rel=’shortcut icon‘ type=’image/x-icon‘ href=’favicon.ico‘ />
      <!– ICON end /–>
      <!– ALTERNATIVE VERSION – plain text, PDA version or RSS if you have one /–>
      <link rel=’alternate‘ type=’application/rss+xml‘ title=’RSS Example.net‘ href=’http://www.example.net/rss.xml‘ />
      <!– ALTERNATIVE VERSION – end /–>
      <!– NAVIGATION – based on logical relations of documents /–>
      <!– homepage /–>
      <link rel=’home‘ href=’http://www.example.net‘ />
      <!– searchpage /–>
      <link rel=’search‘ href=’http://www.example.net/search/‘ />
      <!– title page of serial /–>
      <link rel=’up‘ href=’http://www.example.net/serial/this/‘ />
      <!– first part of serial /–>
      <link rel=’first‘ href=’http://www.example.net/article/first/‘ />
      <!– last part of serial /–>
      <link rel=’last‘ href=’http://www.example.net/article/last/‘ />
      <!– previous part of serial /–>
      <link rel=’prev‘ href=’http://www.example.net/article/previous/‘ />
      <!– next part of serial /–>
      <link rel=’next‘ href=’http://www.example.net/article/next/‘ />
      <!– news, RSS /–>
      <link rel=’newsfeed‘ href=’http://www.example.net/rss.xml‘ />
      <!– NAVIGATION – end /–>
      <!– CASCADING STYLE SHEETS /–>
      <!– INPAGE STYLE – pagemargin problem solving /–>
      <style type=’text/css‘ media=’all‘>
         BODY, HTML {
            border: 0px none;
            margin: 0px;
            padding: 0px;
         }
      </style>
      <!– LINKED STYLE /–>
      <link rel=’stylesheet‘ type=’text/css‘ media=’all‘ href=‘./css/css_all.css‘ />
      <link rel=’stylesheet‘ type=’text/css‘ media=’screen‘ href=‘./css/css_screen.css‘ />
      <link rel=’stylesheet‘ type=’text/css‘ media=’print‘ href=‘./css/css_print.css‘ />
      <!– PREFFERED STYLE /–>
      <link rel=’stylesheet‘ type=’text/css‘ href=‘./css/css_pref.css‘ title=’Preffered style‘ />
      <!– ALTERNATE STYLE /–>
      <link rel=’alternate stylesheet‘ type=’text/css‘ href=’css_alt.css‘ title=’Alternate style‘ />
      <!– CASCADING STYLE SHEETS – end /–>
      <title>
         XHTML 1.0 Strict page basic fragment
      </title>
   </head>
   
   <body>
      Put XHTML 1.0 Strict page content here…
   </body>
</html>

Kódování dokumentu

Bezesporu nejrozšířenější metainformací ze všech je údaj o kódování dokumentu, respektive o použité znakové sadě, a jazyku, v němž je dokument psán. Tyto dva řádky kódu, které se současný webdesign snaží již opustit, umožnily skutečný rozvoj WWW tím, že uživatelům internetu zpřístupnily dokumenty v jejich národním jazyku. Myslím, že jsou natolik známé, že nemá smysl je zde podrobně rozebírat. Zájemce o další informace mohu odkázat na seriál Znakové sady v praxi nebo článek XHTML – kódování dokumentu. Pouze připomenu, že určení kódování a jazyka dokumentu musí vždy předcházet jakýmkoli dalším částem dokumentu a že kódování není třeba uvádět u dokumentů užívajících UTF.

      <!– ENCODING /–>
      <!– use proper one: iso-8859-2, windows-1250, utf-8 etc. /–>
      <!– check FIRST LINE with xml charset too!!! /–>
      <meta http-equiv=’Content-Type‘ content=’text/html; charset=windows-1250′ />
      <meta http-equiv=’Content-language‘ content=’cs‘ />
      <!– ENCODING end /–>

Kešování dokumentu

Pravidla pro kešování (uchovávání lokálních kopií) jsou další samozřejmou součástí (X)HTML dokumentu. Nemohou v plném rozsahu nahradit hlavičky HTTP protokolu, mohou však posloužit tam, kde není k HTTP hlavičkám přístup, ať už jde o bezpečnostní servery, různé proxy a nebo prohlížeče, které si HTTP hlavičky vykládají po svém. Tyto metainformace můžeme použít tehdy, když chceme donutit prohlížeč, aby vždy poskytoval čtenáři aktuální verzi dokumentu (pokud ji například generujeme dynamicky), nebo naopak když chceme trochu ulehčit internetu tím, že proxyserverům umožníme poskytovat lokální kopie dokumentu, což snižuje požadavky na přenos dat.

      <!– CACHE /–>
      <!– turning cache on/OFF depends on what you need to do /–>
      <!– dynamic (PHP/ASP) should be OFF, static (HTM/HTML) should be ON /–>
      <!– CACHE – MSIE /–>
      <meta http-equiv=’Cache-Control‘ content=’must-revalidate, post-check=0, pre-check=0′ />
      <meta http-equiv=’Pragma‘ content=’public‘ />
      <!– CACHE – MSIE end /–>
      <!– CACHE – other browsers /–>
      <meta http-equiv=’Cache-Control‘ content=’no-cache‘ />
      <meta http-equiv=’Pragma‘ content=’no-cache‘ />
      <meta http-equiv=’Expires‘ content=‘-1′ />
      <!– CACHE – other browsers end /–>
      <!– CACHE – end /–>

Předchozí zápis striktně zakazuje vytváření lokálních kopií dokumentu a nutí všechny programy k revalidaci (znovunačtení) při každém požadavku na zobrazení dokumentu (opačného efektu bychom dosáhli vymazáním bloku nebo přepisem hodnot na jejich logický opak). Všimněte si, že zde definujeme pravidla pro kešování vlastně dvakrát. Je tomu tak proto, že prohlížeče řady Microsoft Internet Explorer ignorují normy, popisující princip a funkci cache (viz RFC 2068 a navazující).

Výbornou pomůckou pro praktickou aplikaci kešování je Caching Tutorial for Web Authors and Webmasters.

Informace pro vyhledávače a jiné roboty

Metaelement „robots“ informuje o tom, jak by si autor dokumentu přál, aby se k jeho dílu chovaly programy, specializované na shromažďování metadat nebo dokumentů jako takových. V této kategorii jsou podstatné především vyhledávače, bez kterých bychom už dnes prakticky nebyli schopni na internetu cokoli najít. Tyto metaelementy umožňují nastavovat pravidla chování pro každý dokument zvlášť, je-li to potřeba, roboty je však nemusí respektovat (což zhusta činí downloadery). Rozhodně tímto způsobem nelze chránit důvěrná data! Podrobné informace získáte nejlépe na The Web Robots Pages.

      <!– ROBOTS /–>
      <!– select suitable behavior for robots /–>
      <meta name=’robots‘ content=’index,follow‘ />
      <meta name=’googlebot‘ content=’index,follow,snippet,archive‘ />
      <!– meta name=’robots‘ content=’noindex,nofollow‘ /–>
      <!– meta name=’googlebot‘ content=’noindex,nofollow,nosnippet,noarchive‘ /–>
      <!– ROBOTS end /–>

Kódové slovo „index“ znamená, že si robot může zapamatovat URL a další potřebné informace o stránce, „follow“ zase značí, že robot smí následovat hypertextové odkazy v dokumentu. Opačného chování lze dosáhnout připojením záporky „no“ před kódové slovo, přičemž lze vytvářet libovolné kombinace (tedy klidně i „noindex, follow“ nebo „index, nofollow“).

Povšimněte si, že kromě metaelementu „robots“ se v této sekci vyskytuje také metaelement „googlebot“. Ten je zde speciálně kvůli vyhledávači Google (i když některé další roboty ho také respektují) a umožňuje ovlivnit jeho chování pomocí dvou rozšiřujících kódových slov. Slovo „archive“ znamená, že si prohlížeč může uložit snímek stránky do své lokální paměti a později ho poskytovat k nahlédnutí (což často nevyhovuje poskytovatelům placeného obsahu, třeba novin), slovo „snippet“ určuje, jak bude zobrazovat výsledek hledání, jehož součástí je indexovaný dokument – v tomto případě se zobrazí kousek textu okolo hledaného slova, v opačném případě by se zobrazil jen popisek dokumentu z metaelementu „description“.

Popis, klíčová slova a kategorie dokumentu

Metaelementy této sekce měly původně sloužit pro udržování přehledu o obsahu dokumentů, po vzoru bibliografických katalogů, takže by bylo možno nalézt relevantní dokumenty i tehdy, pokud by nemluvily přímo o předmětu zájmu čtenáře. První vyhledávače jim přikládaly velkou váhu, takže je lidé brzy začali zneužívat a vkládali do nich různé nesmysly. Některé současné vyhledávače je proto zcela ignorují a jiné je berou v úvahu jen jako podpůrnou informaci. Svůj význam si tak uchovávají především v rozlehlých intranetových sítích.

      <!– KEYWORDS & CATEGORIES – but who cares now :-( /–>
      <meta name=’description‘ content=’XHTML 1.0 Strict basic page fragment‘ />
      <meta name=’keywords‘ content=’XHTML 1.0, CSS, test‘ />
      <meta name=’category‘ content=’XHTML‘ />
      <!– KEYWORDS & CATEGORIES – end /–>

Metaelement „description“ by měl obsahovat lidsky srozumitelný a výstižný popis dokumentu, nepřesahující 256 znaků. Metaelement „keywords“ by měl obsahovat takzvaná klíčová slova, což jsou termíny, které mají pro daný dokument mimořádný význam. V současnosti se nedoporučuje používat více než čtyři či pět slov. Metaelement „category“ klasifikuje dokument podle mezinárodního předmětového katalogu a v současnosti se takřka vůbec nepoužívá.

Autor, webmaster a vlastník dokumentu

Tato skupina metaelementů určuje vztah dokumentu k různým fyzickým či právnickým subjektům, typicky k autorovi obsahu, jeho vlastníkovi a správci webu. Informace jsou to bezesporu zajímavé a důležité, problém je pouze v tom, že jsou internetovou veřejností hromadně ignorovány. Protože však většinou obsahují e-mailové adresy, staly se lákavou pochoutkou pro různé roboty, které je shromažďují do spamovacích databází. Pokud už je v dokumentu budete uvádět, je vhodné standardní tvar e-mailové adresy nějakým způsobem rozrušit tak, aby zůstala srozumitelná pro člověka, ale stala se nečitelnou pro robota. Problém je ovšem v tom, že spamboti jsou čím dál inteligentnější, což o lidech, bohužel, nelze říci…

      <!– AUTHOR self promo – use ‚crypted‘ e-mails defeats robotic harvesters /–>
      <!– Translate . => &#45; @ => &#64; etc. /–>
      <meta name=’author‘ content=’All: Author Name, e-mail: author-name(@)example.net‘ />
      <meta name=’webmaster‘ content=’All: Webmaster Name, e-mail: webmaster-name(@)example.net‘ />
      <meta name=’copyright‘ content=’©2004 Owner Name, e-mail: owner-name(@)example.net‘ />
      <!– AUTHOR self promo – end /–>

Přístupnost a obsahová vhodnost dokumentu

Platform for Internet Content Selection (PICS) vznikla jako fórum, jehož cílem původně bylo ochránit nezletilé osoby (rozuměj děti) před nevhodným obsahem, například pornografií nebo „politicky nekorektním“ jazykem. PICS je založeno na spolupráci mezi poskytovatelem obsahu, který své stránky zhodnotí a vnese do nich patřičné metainformace, výrobcem programů pro přístup k obsahu (prohlížečů), který poskytne potřebné nástroje, a odpovědnou osobou (rodičem), která povolí či zakáže přístup k určitým typům dokumentů. Z logických důvodů PICS dokonale selhal, je však vhodné ho uvádět, protože některé programy považují jeho nepřítomnost za známku nekalého obsahu.

      <!– PICS label – content rating & description (kids, security…) /–>
      <!– Platform for Internet Content Selection (PICS) – http://www.w3.org/PICS/ /–>
      <!– PICS label generator – http://www.icra.org/_en/label/extended/ /–>
      <meta http-equiv=’pics-label‘ content='(pics-1.1 „http://www.icra.org/ratingsv02.html“ comment „ICRAonline EN v2.0“ l gen true for „http://example.net“ r (nz 1 vz 1 lz 1 oz 1 cz 1) „http://www.rsac.org/ratingsv01.html“ l gen true for „http://example.net“ r (n 0 s 0 v 0 l 0))‘ />
      <!– PICS label – end /–>

Jakmile autoři PICS seznali, že tudy cesta nevede, snažili se přejít od destrukce ke konstrukci. V současnosti, jak tvrdí, není účelem PICS omezovat přístup k informacím, ale naopak informace popisovat, třídit a definovat jejich zdroje (autory a podobně). Obávám se však, že v této oblasti nemohou uspět, protože jim konkuruje řada kvalitnějších a inteligentnějších systémů bez pošramocené pověsti. Pokud chcete PICS používat, doporučuji vám on-line generátor, protože vytvořit potřebný metaelement „ručně“ je prakticky nemožné.

Dublin Core Metadata Initiative

Takzvaná Dublin Core Metadata Initiative (DCMI) je v současnosti otevřeným fórem, které se snaží sbírat, systematizovat, vytvářet a poskytovat specifická schémata (sady metaelementů), umožňující popis libovolného aspektu dokumentu. Původně tato iniciativa vznikla mezi odborníky na bibliografii, jako prostředek, který měl umožnit popis dokumentů stejným způsobem, jaký byl používán ve specializovaných knihovnických programech. Naštěstí se do věci včas vložily i jiné subjekty, takže se zaměření iniciativy podstatně rozšířilo a v současnosti představuje nejrozsáhlejší a nejpropracovanější systém, pomocí něhož je možno (X)HTML dokumenty popisovat.

      <!– DUBLIN CORE /–>
      <!– DC Metadata Initiative (DCMI) – http://dublincore.org /–>
      <!– DC template generator – http://www.lub.lu.se/cgi-bin/nmdc.pl /–>
      <meta name=’DC.Title‘ content=’Title Name‘ />
      <meta name=’DC.Identifier‘ content=’http://www.example.net‘ />
      <meta name=’DC.Language‘ content=’cs‘ />
      <!– DUBLIN CORE – end /–>

Metaelementy DCMI snadno poznáte podle povinné předpony „DC“ a naleznete je především v odborných dokumentech na specializovaných serverech. Je jich velké množství, takže je nejlepší používat pro analýzu i tvorbu specializované nástroje, jako je například Dublin Core Metadata Template. Pokud máte zájem o další informace z této oblasti a nevládnete jazykem anglickým právě nejlépe, doporučuji vám Dublin Core Czech – vliv knihovníků je zde však mnohem patrnější než na mezinárodních stránkách, takže se nedejte zmást.

Zeměpisná poloha zdroje (serveru)

Už v šerém dávnověku internetu vznikl příznak, který umožňoval určit přesnou geografickou polohu fyzického zdroje konkrétní informace, přesněji řečeno serveru systému Usenet (viz ICBM address). Pravděpodobně by zůstal za okrajem zájmu uživatelů, nebýt vzniku fenoménu jménem weblog. Weblogy jsou většinou úzce vázány na konkrétní osoby, které o sobě rády dávají vědět. Vznikla tedy iniciativa GeoURL, která registruje nejrůznější zdroje a poskytuje informace o jejich lokaci. Z historických důvodů se však hodnoty metaelementu „ICBM“ uvádějí v desetinných hodnotách, které je zvláště pro naše kraje těžké zjisti – já jsem využil služeb serveru Maporama.com.

      <!– GEOURL /–>
      <!– Geographics location (altitude, latitude) – http://geourl.org /–>
      <!– You can obtain exact location via http://www.maporama.com/share/ /–>
      <meta name=’ICBM‘ content=’0.0000, 0.0000′ />
      <!– GEOURL – end /–>

Prohlížeče a jejich výmysly

Výrobci prohlížečů (browserů) od počátku vnášeli do (X)HTML různé prvky, kterými se jednak chtěli odlišit od konkurence a druhak jimi chtěli rozšířit možnosti designérů. Některé z těchto výmyslů ale zašly příliš daleko a obtěžují jak poskytovatele tak i spotřebitele obsahu. Naštěstí je možno tato „vylepšení“ pomocí metaelementů deaktivovat. V následující skupině oblíbených metaelementů první zabrání zobrazování nástrojové lišty MSIE nad obrázky (vhodné u obrázků, které jsou jen grafickým doplňkem stránky), druhý donutí MSIE zobrazit standardní ovládací prvky (formuláře) bez ohledu na aktuální vzhled Windows a třetí znemožní MSIE vkládat a zpracovávat „inteligentní“ značky ve stránce. Poslední metaelement pak donutí Operu, aby přestala automaticky přizpůsobovat rozměry obrázků velikosti viewportu, předstíraje tak MSIE.

      <!– BROWSER SPECIFIC FEATURES = ALL OFF /–>
      <!– MSIE – ‚helpful‘ features /–>
      <meta http-equiv=’imagetoolbar‘ content=’no‘ />
      <meta http-equiv=’MSThemeCompatible‘ content=’no‘ />
      <meta name=’MSSmartTagsPreventParsing‘ content=’TRUE‘ />
      <!– OPERA – image resizing /–>
      <meta name=’autosize‘ content=’off‘ />
      <!– BROWSER SPECIFIC FEATURES = end /–>

Ikona dokumentu či serveru

S značkou „link“ měli tvůrci HTML původně velké plány, které však později degenerovaly do několika vcelku užitečných aplikací. Spíše pro pobavení lze využít „shortcut icon“, který k dokumentu, potažmo celému serveru, připojuje ikonku, kterou pak prohlížeč zobrazí v adresním řádku, záhlaví lišty nebo v oblíbených složkách. Implementace je poměrně problematická, ani moderní prohlížeče nezacházejí s tímto prvkem zcela korektně. Nebudu zde rozebírat podrobnosti, krátký popis naleznete v článku Vlastní ikona stránek, v českém jazyce asi nejobjemnější je stať Ikona stránky, která obsahuje všechny podstatné informace o tomto tématu.

      <!– ICON /–>
      <!– Use icon for this page if you have one /–>
      <link rel=’shortcut icon‘ type=’image/x-icon‘ href=’favicon.ico‘ />
      <!– ICON end /–>

Alternativní verze dokumentu

S rozvojem různých zařízení, pomocí nichž přistupujeme k internetu, se stává stále zajímavější možnost odkázat v hlavičce (X)HTML na jiný formát, v němž je dostupná stejná informace. Lze takto do dokumentu vložit odkaz na verzi pro WAP, PDA nebo na jednoduchou textovou verzi. V poslední době je obzvláště oblíbeným alternativním formátem RSS, které může nést prakticky jakékoli informace. Některé čtečky nebo roboty už dokáží přímo ze stránek vypreparovat odkaz na RSS kanál a poskytnout ho čtenáři, pokud je v hlavičce dokumentu uvedena deklarace, podobná následující:

      <!– ALTERNATIVE VERSION – plain text, PDA version or RSS if you have one /–>
      <link rel=’alternate‘ type=’application/rss+xml‘ title=’RSS Example.net‘ href=’http://www.example.net/rss.xml‘ />
      <!– ALTERNATIVE VERSION – end /–>

Jedním z prvních úkolů elementu „link“ bylo udržování logických vazeb mezi dokumenty a usnadnění pohybu v sadách souvisejících souborů. Na internetu je však většina dokumentů na sobě nezávislá, pohyb mezi nimi lépe zajišťují hypertextové odkazy a vyhledávání souvisejících informací zase umožňují specializované služby, takže se element „link“ tímto způsobem rychle přestal používat a přežíval pouze v intranetech. Zdá se však, že by se mohl vrátit, díky dynamicky generovaným stránkám (odpadají problémy s konzistencí), které přitom kvůli SEO předstírají statičnost. Navíc jsou už k dispozici i prohlížeče, které umí vygenerovat z metadat navigační lištu, tvářící se jako jejich integrální součást – pro tradičně zaostávající MSIE existuje plug-in <LINK> Navigation Bar, navíc s celkem inteligentní podporou odkazů na alternativní verze dokumentu.

      <!– NAVIGATION – based on logical relations of documents /–>
      <!– homepage /–>
      <link rel=’home‘ href=’http://www.example.net‘ />
      <!– searchpage /–>
      <link rel=’search‘ href=’http://www.example.net/search/‘ />
      <!– title page of serial /–>
      <link rel=’up‘ href=’http://www.example.net/serial/this/‘ />
      <!– first part of serial /–>
      <link rel=’first‘ href=’http://www.example.net/article/first/‘ />
      <!– last part of serial /–>
      <link rel=’last‘ href=’http://www.example.net/article/last/‘ />
      <!– previous part of serial /–>
      <link rel=’prev‘ href=’http://www.example.net/article/previous/‘ />
      <!– next part of serial /–>
      <link rel=’next‘ href=’http://www.example.net/article/next/‘ />
      <!– news, RSS /–>
      <link rel=’newsfeed‘ href=’http://www.example.net/rss.xml‘ />
      <!– NAVIGATION – end /–>

V ukázce výše vidíte sekvenci elementů „link“ různého typu (atribut „rel“), která společně vytváří základní navigační strukturu sady dokumentů. V praxi můžete jejich použití vidět přímo zde na Interval.cz, pokud si otevřete článek, který je součástí nějakého seriálu, například XHTML – element link (do budoucna je mým cílem umožnit návštěvníkům procházet touto metodou prakticky celý náš web). Opět se vyhnu nošení sov do Atén a odkážu vás na podrobnější článek Navigace pomocí elementu link.

CSS neboli kaskádové styly

Poslední sekvencí, kterou můžete vidět na mém příkladu, je skupina pravidel a odkazů na externí soubory pravidel CSS, pomocí nichž je definován vzhled a částečně i chování (X)HTML dokumentu. Uvádím zde tento příklad pouze pro úplnost, neb předpokládám, že většina z vás je s CSS již dobře seznámena. Pokud vás zajímají podrobnosti, například o alternativních stylech nebo o speciálních stylech pro různá média, jsou vám k dispozici jiné články. Upozornil bych pouze na první část, kde je do kódu přímo vložena CSS definice vzhledu stránky jako takové – předchází se tak problémům s odlišným pojetím okrajů v různých prohlížečích.

      <!– CASCADING STYLE SHEETS /–>
      <!– INPAGE STYLE – pagemargin problem solving /–>
      <style type=’text/css‘ media=’all‘>
         BODY, HTML {
            border: 0px none;
            margin: 0px;
            padding: 0px;
         }
      </style>
      <!– LINKED STYLE /–>
      <link rel=’stylesheet‘ type=’text/css‘ media=’all‘ href=‘./css/css_all.css‘ />
      <link rel=’stylesheet‘ type=’text/css‘ media=’screen‘ href=‘./css/css_screen.css‘ />
      <link rel=’stylesheet‘ type=’text/css‘ media=’print‘ href=‘./css/css_print.css‘ />
      <!– PREFFERED STYLE /–>
      <link rel=’stylesheet‘ type=’text/css‘ href=‘./css/css_pref.css‘ title=’Preffered style‘ />
      <!– ALTERNATE STYLE /–>
      <link rel=’alternate stylesheet‘ type=’text/css‘ href=’css_alt.css‘ title=’Alternate style‘ />
      <!– CASCADING STYLE SHEETS – end /–>

Pozn. aut.: Chtěl bych poděkovat členům odborných klubů ze serveru Hofyland.cz za to, že mne svými dotazy inspirovali k tomuto článku (takže už jim nebudu muset odpovídat), a zvláště pak příteli PESSOFTovi, který zásadním způsobem přispěl k sumarizaci různých poznámek a sestavení vzorového dokumentu.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *