Přeskoč navigaci

Zde hledá Jyxo.

Jyxo

XHTML — buďte striktní

Marek Prokop, vydáno/aktualizováno: 14.1.2002/06.10.2003

Moderní web směřuje k důslednému oddělení formy od obsahu. Prezentační prvky a atributy HTML vyklízejí pole kaskádovým stylů. Své nejdůslednější vyjádření nachází tento trend ve "striktních" variantách norem HTML 4 a zejména XHTML 1.

O XHTML jsem psal v Sově již dvakrát a v tom druhém případě jsem vám v článku Jak přejít na XHTML [1] popsal způsob, jak přetvořit stránky v HTML 4 a nižším do XHTML. To jsem ovšem uvažoval měkčí, přechodnou normu XHTML Transitional. Chcete-li být opravdu důslední, můžete spolu s námi zkusit tvrdou normu XHTML Strict.

Pokud již máte stránku splňující normu XHTML Transitional, bude začátek velmi snadný. V první řádce změňte typ dokumentu z

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">

na

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">

Hned poté si můžete zkusit správnost stránky ověřit validátorem W3C [2] a pravděpodobně zjistíte, že vás čeká ještě plno práce. Abych vám ji usnadnil, shrnu postupně všechna pravidla XHTML Strict, kterými se liší od normy XHTML Transitional.

Zakázané značky

Z XHTML Strict jsou oproti ostatním, mírnějším normám zcela vypuštěny tyto značky:

  • applet — Java applet
  • basefont — základní font dokumentu
  • center — horizontálně centrovaný blok
  • dir — seznam adresářů
  • font — nastavení písma
  • iframe — vložený (inline) rámec
  • isindex — jednořádkový vstup
  • menu — nabídkový seznam
  • noframes — alternativní obsah rámců
  • s — přeškrtnutý text
  • strike — přeškrtnutý text
  • u — podtržený text

Některé z nich jsou používány málokdy (basefont, dir, menu, isindex), avšak používáte-li k centrování značku <center> a písmo nastavujete zásadně značkami <font> a <u>, máte smůlu a bude se muset konečně pustit do studia a zejména praktického nasazení kaskádových stylů (CSS).

Jestliže používáte rámce, musíte v dokumentu obsahujícího framset použít normu XHTML Frameset, tj. deklarovat typ dokumentu takto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd">

Prvek <iframe> je třeba nahradit prvkem <object>, ale pozor, jeho možnosti a chování nejsou zcela totožné.

Zakázané atributy

Odstraněním zakázaných značek, resp. jejich nahrazením značkami povolenými a CSS vaše práce zdaleka nekončí. Zbývající povolené značky totiž mají mnoho zakázaných atributů. Většinou jsou to tzv. prezentační atributy, tj. ty, jejichž jediným účelem je ovlivnit vzhled dokumentu. Podle této vlastnosti si je můžete snadněji zapamatovat.

V uspořádání podle značek se jedná o tyto atributy:

  • <a> — target
  • <area> — target
  • <base> — target
  • <link> — target
  • <body> — alink, background , bgcolor, link, text, vlink
  • <table> — bgcolor
  • <td> — bgcolor, nowrap
  • <th> — bgcolor, nowrap
  • <tr> — bgcolor
  • <img> — border, name
  • <li> — type, value
  • <object> — border
  • <ol> — start, type
  • <ul> — type
  • <br> — clear
  • <script> — language
  • <hr> — noshade
  • <form> — name, target

Ve většině případů lze zákaz těchto atributů vyřešit jejich náhradou za CSS. Jsou však i výjimky:

  • Pokud zobrazujete dokument v rámcích, asi vám bude chybět atribut target značek <a><form>. Náhrada je možná pouze klientským skriptem.

  • Pokud v nějakém skriptu používáte atribut name značky <form> či <img>, budete ho muset nahradit atributem id.

  • Atribut language značky script náhradu nemá. U této značky však nesmíte zapomenout na povinný atribut type.

  • Na prvek <hr> CSS příliš nepůsobí (alespoň v IE), takže pokud vám vadím jeho implicitně stínovaná podoba, která šla v normě Transitional odstranit atributem noshade, raději ho zcela vypusťte a nahraďte CSS vlastností border jiného prvku.

Nezapomeňte, že do XHTML Strict nepatří také žádné z proprietárních značek a atributů, které by vám validátor nepustil ani v normách Transitional. Pokud tedy máte např. v <body> atribut marginwidth, budete se s ním muset rozloučit.

Struktura dokumentu

Ještě záludnější než zakázané značky a atributy jsou pravidla, která norma XHTML Strict klade na strukturu dokumentu. Mate-li např. běžný text (jazykem XML #PCDATA) vložený přímo do <body>, se zlou se u validátoru potážete.

Platí totiž, že prvky blockquote, body, formnoscript nesmí bezprostředně obsahovat #PCDATA (běžný text) a prvky a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, ttvar.

V praxi to zejména znamená uzavřít veškerý text včetně obrázků (img), umístěný dosud přímo v <body>, do odstavců (p) či jiných vhodných blokových prvků a totéž učinit u formuláře (form) se všemi jeho prvky (input, button, atd.) i textem.

Samozřejmě pravidla strukturování kódu známá z norem (X)HTML Transitional, např. že nelze vkládát blokové prvky do prvků řádkových, platí i XHTML Strict.

Závěr

Pokud vás rozsah úprav nutných k přechodu z XHTML Transitional na XHTML Strict k smrti vyděsil, nejlépe asi uděláte, když myšlenky na převod existujících stránek pustíte z hlavy. Úpravy totiž mohou být opravdu velmi pracné a praktické přínosy sporné.

Na druhou stranu se vám určitě vyplatí pravidla XHTML Strict prostudovat a v nově tvořených stránkách je co nejvíce respektovat. Přiblížíte se tak ideálu oddělení formy od obsahu a podstatně si usnadníte přechod na některé budoucí normy, které jistě budou blíže pojetí XHTML Strict, než současným přechodným normám (X)HTML Transitional.

Související odkazy

  1. Jak přejít na XHTML
  2. Validátor (X)HTML W3C

Tato stránka je přístupná libovolným prohlížečem, nejlépe však vypadá v prohlížeči, který podporuje HTML 4.0 a CSS 2 (Internet Explorer od verze 5, Mozilla, Opera a další). Pokud čtete tuto zprávu, váš prohlížeč zřejmě dostatečně nepodporuje CSS. Stránku sice vidíte bez pokročilejšího formátování, avšak veškerý obsah je plně přístupný i pro vás.