XHTML – základní struktura dokumentu

1. října 2002

Vedle dodržení struktury XHTML dokumentu je vhodné nezapomínat na informace o jazyku dokumentu. Vysvětlím vám proč a současně vše doplním upřesněním elementu html.

Základní struktura XHTML dokumentu

Každý XHTML dokument musí obsahovat tyto čtyři základní sekce, a to v uvedeném pořadí:

  1. XML deklarace – tato sekce je povinná, jen pokud váš dokument používá jiné kódování než UTF-8 nebo UTF-16, ovšem silně se doporučuje uvádět ji pokaždé. Musí se nacházet na prvním řádku dokumentu.

  2. Deklarace typu dokumentu – připomínám, že tato deklarace určuje, podle jakého DTD je dokument napsán. Pro XHTML 1.0 si můžete vybrat jednu z těchto deklarací:

    XHTML 1.0 Strict:

    <!DOCTYPE html
         PUBLIC „-//W3C//DTD XHTML 1.0 Strict//EN“
         „http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

    XHTML 1.0 Transitional:

    <!DOCTYPE html
         PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN“
         „http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

    XHTML 1.0 Frameset:

    <!DOCTYPE html
         PUBLIC „-//W3C//DTD XHTML 1.0 Frameset//EN“
         „http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>

    Systémový identifikátor (URI) v těchto deklaracích může být modifikován podle potřeb systému, aniž by se tím narušila valididita (správnost) dokumentu.

  3. Hlavička dokumentu – tato sekce je celá uzavřena v elementu head. Uvádějí se v ní takzvaná metadata, tedy informace o dokumentu (například titulek dokumentu, stručné shrnutí jeho obsahu, jeho vztah k jiným dokumentům a podobně). Tyto informace prohlížeč nezobrazuje jako součást stránky, k jejich reprezentaci může (ale nemusí) použít jiné způsoby (například uvedení titulku dokumentu v titulku okna).

  4. Tělo dokumentu – tato sekce se kompletně nachází uvnitř elementu body. Nachází se v ní samotný obsah stránky, který je určen k přímé interpretaci.

Hlavička a tělo dokumentu (tedy elementy head a body) se navíc musí kompletně nacházet uvnitř elementu html. Element html musí obsahovat deklaraci jmenného prostoru, což vysvětlím za chvíli. Nyní se podívejte na příklad minimálního XHTML dokumentu, který by vyhověl specifikaci XHTML 1.0 Strict:

<!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“>
  <head>
    <title>Minimální XHTML stránka</title>
  </head>
  <body>
    <p>Toto je minimální XHTML stránka, která by vyhověla specifikaci XHTML.</p>
  </body>
</html>

Tato stránka má několik „ale“. Jednak v ní chybí XML deklarace, takže musí používat kódování UTF-8 nebo UTF-16, neobsahuje deklaraci používaného jazyka (tedy češtiny) a také v ní chybí deklarace použitého kódování pro starší prohlížeče, které ho neumí určit z XML deklarace. Proto ji trochu poupravíme:

<?xml version=“1.0″ encoding=“UTF-8″?>
<!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>
    <meta http-equiv=“content-type“ content=“text/html; charset=UTF-8″ />
    <meta http-equiv=“content-language“ content=“cs“ />
    <title>XHTML stránka</title>
  </head>
  <body>
    <p>Toto již je XHTML stránka se všemi nutnými náležitostmi.</p>
  </body>
</html>

Významem elementů a atributů v příkladu si zatím nemusíte až tolik lámat hlavu, protože se k nim ještě dostaneme podrobněji. Přesto bych ale poznamenal, že u elementů meta udávající kódování a jazyk je vhodné, aby se nacházely v dokumentu dříve, než jakýkoli text v lidské řeči, aby interpreti XHTML ihned věděli, jak mají s tímto textem nakládat.

Nyní, když už víme, jak by měla vypadat základní XHTML stránka, můžeme přikročit k představení prvního elementu. Ještě předtím bych vás ale chtěl upozornit na soubor strict-dtd.html. Tento XHTML soubor obsahuje celé XHTML 1.0 Strict DTD, což znamená, že ho můžete otevřít v prohlížeči a pomocí odkazů se po něm snadno pohybovat (nevytvořil jsem ho já, jedná se o upravený soubor ze specifikace XHTML 1.0). To je důležité hlavně proto, že v celém DTD se velmi hojně užívá parametrických entit, které si nebudeme zdlouhavě vypisovat u každého elementu či atributu, a proto vás budu odkazovat na tento soubor, kde se pouhým kliknutím na jméno entity přenesete na její deklaraci. Elementy i atributy si budeme představovat pomocí fragmentů z DTD, kterými jsme se zabývali v úvodu seriálu. Pokud tedy něčemu nerozumíte, doporučuji vám předchozí části seriálu.

Element html

Povolený obsah: (head, body)

Atributy:

%i18n;
Tato parametrická entita obsahuje atributy internacionalizace, tedy lang, xml:lang a dir – jejich významu a syntaxi se budeme věnovat dále v článku.
id   ID   #IMPLIED
Obsahem tohoto atributu je jméno elementu, které musí být jedinečné pro celý dokument. Tomuto atributu se budeme věnovat podrobně v příštím článku.
xmlns   %URI;   #FIXED 'http://www.w3.org/1999/xhtml'
Tento atribut deklaruje jmenný prostor XHTML, musí být přítomen v každém XHTML dokumentu a vždy musí mít hodnotu http://www.w3.org/1999/xhtml.

Element html v XHTML 1.0 Strict DTD

Element html je kořenovým prvkem XHTML dokumentů, tzn. musí v něm být obsažen celý obsah dokumentu. Povinně v něm musíte uvést atribut xmlns s danou hodnotou a měli byste uvést i atributy internacionalizace.

Entita %i18n; – atributy internacionalizace

Atributy z této entity slouží k poskytnutí údajů o přirozeném (lidském) jazyku dokumentu. Jedná se o tyto tři atributy:

lang   %LanguageCode;   #IMPLIED
xml:lang   %LanguageCode;   #IMPLIED
Tyto atributy shodně udávají kód jazyka, ve kterém je uveden celý jejich obsah včetně elementů (zde existují výjimky u tabulek, ke kterým se dostaneme v jednom z dalších dílů) i všechen text jejich atributů, pokud se jedná o text v přirozené lidské řeči. Pokaždé, když chcete definovat jazyk elementu, musíte k tomu v XHTML 1.0 použít jak atribut lang, tak i xml:lang, přičemž oba musí mít stejný obsah. První atribut kvůli zpětné kompatibilitě s HTML a prohlížeči HTML, ten druhý je pak speciálním atributem XML, vyhrazeným pro tento účel. V XHTML 1.1 se již používá pouze xml:lang.
Entitu %LanguageCode; jsme si představovali již dříve, proto nyní jen připomenu, že kódy jazyků jsou obsaženy v RFC 1766. Tyto kódy nejsou citlivé na velikost písmen. Za kódem jazyka můžete navíc použít řetězec -varianta_jazyka, například en-US (americká angličtina) nebo x-klingon (x udává experimentální označení).
dir   (ltr|rtl)   #IMPLIED
Tento atribut udává směr textu (ltrleft-to-right – pro text zleva doprava a rtlright-to-left – pro text zprava doleva). Stejně jako element bdo najde využití pouze ve spojení s exotickými jazyky, a proto ho většina z nás nikdy nebude potřebovat. Z tohoto důvodu se těmito prvky XHTML nebudeme zabývat.

Nyní bych rád uvedl pár důvodů, proč je vhodné na informace o jazyku dokumentu nezapomínat:

  • Vyhledávací roboti mohou vaši stránku snadno zařadit do jedné z jazykových skupin a uživatelé vás díky tomu snadno najdou.
  • Hlasové prohlížeče mohou snadno určit, jakou výslovnost mají použít u vaší stránky.
  • Vizuální prohlížeče mohou dodržovat typografická pravidla příslušející danému jazyku (což se týká zejména uvozovek a mezer).
  • Automatické kontrolory pravopisu mohou s vaší stránkou lépe pracovat.

U variant jazyka chápou interpreti XHTML element jako psaný v základním jazyce, navíc určeném jeho zvláštní variantou. Vysvětlím to na příkladě: Pokud bychom měli dokument, který by měl v „jazykových atributech“ uvedeno en-US a hlasový prohlížeč obsahoval speciální výslovnost pro angličtinu, ale již ne pro americkou angličtinu, četl by dokument s anglickou výslovností. Pokud by ale obsahoval i výslovnost pro americkou angličtinu, četl by ho americkou angličtinou.

Díky dědičnosti stačí udat jazyk pouze pomocí základních mechanismů (element meta a atributy lang, xml:lang elementu html). Pokud potřebujeme použít uvnitř dokumentu jiný než takto nastavený jazyk, uděláme to nastavením „jazykových atributů“ u příslušného elementu (tyto atributy lze použít téměř u jakéhokoli elementu, u kterého to dává smysl). Vše si ukážeme na příkladě, ve kterém do české stránky vložíme odstavec v angličtině:

<?xml version=“1.0″ encoding=“UTF-8″?>
<!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>
    <meta http-equiv=“content-type“ content=“text/html; charset=UTF-8″ />
    <meta http-equiv=“content-language“ content=“cs“ />
    <title>Použití angličtiny v české stránce</title>
  </head>
  <body>
    <p>odstavec česky <!–element p zde zdědil nastavení jazyka z elementu html ––></p>
    <p xml:lang=“en“ lang=“en“>a paragraph in <strong>English</strong> <!–– anglický text, element p zde má své vlastní nastavení jazyka – to se aplikuje na jeho obsah včetně vnořených elementů (zde je takovým elementem strong) i jeho atributy ––></p>
  </body>
</html>

Tímto jsme tedy probrali atributy internacionalizace. Jak už jsem řekl, vyskytují se u většiny elementů, takže při jejich dalším probírání si už tuto entitu vysvětlovat nebudeme, pouze si připomeneme, že se jedná o atributy internacionalizace. Příště se budeme zabývat dalšími základními elementy a atributy.

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

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

Předchozí článek Rozluštěné křižovatky DHTML
Další článek infotech.sk
Š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 *