Jak přejít na XHTML
Marek Prokop, vydáno/aktualizováno: 10.12.2001/21.04.2002
Nedávno jsem článkem "Co je XHTML" reagoval na vaše četné dotazy, co je XHTML a jaký má význam. Dnes bych chtěl poradit těm, kteří se rozhodnou na XHTML přejít. Na stránkách Sovy v síti jsme přechod na XHTML začali před více než týdnem, a protože nám to jde pomalu, ještě jsme neskončili. Nějaké zkušenosti, o které se nyní s vámi mohu podělit jsme však již přeci jen získali.
Abych co nejvíce pomohl s praktickým převodem stránek, rozdělil jsme článek do dvou částí. V první naleznete spíše teoretický a podrobnější výklad rozdílů mezi HTML a XHTML, druhá pak je stručný "checklist", který si můžete vytisknout a při převodu stránek jeho jednotlivé body postupně odškrtávat.
V příštím čísle se k tématu ještě vrátím a pro ty z vás, kteří si dělají, podobně jako Sova, zálusk na striktní typ dokumentu (místo obvyklého "transitional") ještě přidám rady, jak na to.
Rozdíly HTML a XHTML
Záhlaví a struktura dokumentu
Na první rozdíly narazíte již v záhlaví dokumentu. HTML zde mnoho povinných prvků nemělo, kdežto XHTML má.
-
Před vlastním dokumentem předchází deklarace XML. U dokumentů kódovaných v UTF-8 nebo UTF-16 není sice povinná, ale používat by se raději měla. Pro češtinu v kódování Windows-1250 vypadá takto:
<?xml version="1.0" encoding="windows-1250"?> -
Před kořenovým prvkem musí ještě předcházet deklarace typu dokumentu. Na výběr jsou 3 typy odpovídající klasickým třem typům HTML 4 (viz [2]) — striktní, přechodný a framset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-
Kořenem vlastního dokumentu je vždy prvek
<html>. Ten musí ve svém atributu"xmlnames"určovat tzv. jmenný prostor (namespace) a jazyk dokumentu. Pro češtinu je to takto:<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> -
Uvnitř prvku
<html>musí být vnořeny prvky<head>a<body>, přičemž<head>musí obsahovat prvek<title>. Pro starší prohlížeče je nadále vhodné deklarovat kódování i pomocí metatagu. Nejmenší možný (a smysluplný) dokument v XHTML tedy vypadá nějak takto:<?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>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Název dokumentu</title>
</head>
<body>
<p>Text dokumentu.</p>
</body>
</html>
Rozdíly ve struktuře a syntaxi značek
Ve struktuře a syntaxi HTML značek všeobecně jsou především tyto rozdíly:
-
Dokument musí být ve smyslu pravidel XML správně utvořený (well-formed). To znamená, že prvky musí být správně vnořovány a nesmí se překrývat. Příkladem správného vnoření budiž:
<p>Toto je věta se <em>zdůrazněním</em>.</p>Nesprávné vnoření (překrývání) vypadá takto:
<p>Toto je věta se <em>zdůrazněním.</p></em> Názvy prvků (tj. značky, tagy) a názvy atributů musí být malými písmeny. Správně je tedy
<p id="XY">, kdežto<P ID="YX">je špatně.-
Neprázdné prvky musí mít koncovou značku. Nelze tedy napsat tři odstavce takto:
<p>První odstavec
<p>Druhý odstavec
<p>Třetí odstavecale musí být napsány takto:
<p>První odstavec</p>
<p>Druhý odstavec</p>
<p>Třetí odstavec</p> Z definice prázdné prvky (např.
<hr>,<br>) musí mít také buď koncovou značku, nebo musí končit "/>". Vzhledem ke kompatibilitě se staršími prohlížeči se doporučuje druhá varianta, tedy např.<br />,<hr />, atd.Hodnoty atributů musí být v uvozovkách. To platí i pro číselné a jednoslovné hodnoty. Zápis
<table width=100>je tedy v XHTML špatně a správně je<table width="100">.-
Minimalizace atributů je nepřípustná. To znamená, že atribut vždy musí mít explicitní hodnotu. Typicky se jedná např. o atributy
checked(prvekinput),selected(prvekoption). Tyto atributy tedy musí být rozepsány takto:<dl compact="compact"> -
Klientské skripty obsahující znaky < a & musí být vkládány do sekce
CDATAtakto:<script>
<![CDATA[
... text skriptu ...
]]>
</script>Protože s tímto zápisem mohou mít starší prohlížeče problémy, doporučuje se raději používat skripty z externích souborů.
V žádném případě neukrývejte vkládané skripty či definice stylů do komentářů, jak se dělávalo v HTML. V XHTML může být obsah všech komentářů před zpracování odstraněn!
Je-li v hodnotách atributů použit znak ampersand (&) — často bývá např. v URL — je třeba ho zapsat pomocí entity
&, tedy např. takto:<a href="http://www.xyz.cz/abc.php?a=1&b=2">
Checklist
Při převodu každé své stránky postupujte podle následujících bodů a každý splněný si raději odškrtněte. Na závěr nezapomeňte provést validaci, např. na [3].
-
Před vlastní dokument vložit deklaraci XML
<?xml version="1.0" encoding="windows-1250"?> Za deklarací XML zaměnit, resp. vložit deklaraci typu dokumentu.
Prvku
<html>přidat atributyxmlns,xml:langalang.Zkontrolovat, zda prvním prvkem uvnitř
<html>je<head>. Pokud ne, vložit.Zkontrolovat, zda je v
<head>metatag označující kódování. Pokud ne, vložit.Zkontrolovat, zda je v
<head>prvek<title>. Pokud ne, vložit.Zkontrolovat, resp. doplnit koncové značky. Zejména se týká
<p>,<li>,<dd>,<dt>,<option>,<td>,<th>,<tr>.Doplnit uzavírací " /" do prázdných prvků
<base>,<br>,<hr>,<img>,<input>, všech tagů meta a dalších.Převést názvy všech značek na malá písmena.
Převést názvy všech atributů na malá písmena.
Hodnoty všech atributů uzavřít do uvozovek.
Rozvinout zápis všech minimalizovaných atributů (
checked="checked").Ošetřit klientské skripty (buď použít
CDATA, nebo externí soubor), odstranit HTML komentáře okolo vložených klientských skriptů.Odstranit HTML komentáře okolo vložené definice stylů (
<style>), nebo převést tuto definici do externího souboru.Všechny znaky & v hodnotách atributů nahradit
&.Ověřit správnost stránky validátorem.
Související odkazy
Poznámka k auktualizovanému vydání: Oproti původnímu vydání ze 10.12.2001 byly do definic typů dokumentů doplněny absolutní cesty k DTD.


