XHTML je jiná, novější norma jazyka HTML. HTML jako takové už se nevyvíjí a zůstalo ve verzi HTML 4.01.
To X na začátku má znamenat eXtended, rozšířený.
Podstatné je, že podpora jazyka XHTML je v současných prohlížečích naprosto stejná jako podpora HTML (psáno 2004). Ačkoli se usuzuje, že v budoucnu bude podpora XHTML lepší než podpora HTML, na základě zkušeností s historickým vývojem prohlížečů není důvod se domnívat, že tomu tak vskutku bude.
Tomu, že html/xhtml stránka splňuje normu (specifikaci, soulad s DTD), se říká validita. Mnozí autoři se validity kódu snaží dosáhnout. Validitu lze zkontrolovat validátorem. Současné prohlížeče ale zpravidla skousnou i dokument nevalidní a vykreslí jej správně. Jinak řečeno je to stejně jako v HTML: pokud uděláte chybu, nestřílí se z toho.
XHTML oproti HTML nic nového nepřináší. Žádné nové možnosti, jenom omezení.
Taky bych měl připomenout, že já osobně nemám XHTML moc rád, protože ho považuji za zbytečně omezující. Validitu taktéž. Účel světí prostředky, validita tím účelem není. Berte to prosím jako můj osobní názor. Konec mudrování.
XHTML se v praxi vyskytuje ve třech verzích:
Zatímco XHTML 1.0 transitional lze vcelku doporučit k používání, XHTML 1.0 striktní je velmi pracné a v XHTML 1.1 už je spousta věcí zakázána a jeho používání je pro značnou část autorů horor.
XHTML 1.0 na W3C (anglicky).
Specifikace XHTML 1.1 (anglicky), tamtéž.
<!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">
Nahlédnutím do odkazovaných souborů dtd se můžete podrobně seznámit s tím, které tagy a atributy jsou v dané verzi přípustné (stačí pochopit, jak je to DTD psané).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Výklad DTD (anglicky)
Správně by HTML soubor měl začínat XML deklarací. Např. takto:
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
Trochu lapálie je v tom případě s tím, že jakmile soubor nezačíná přímo zápisem <!doctype, nepozná Internet Explorer, že má stránku vykreslovat ve striktním módu. Neumím to řešit.
Další veselé chvilky začínají, když XHTML soubor s XML prologem <?xml version="1.0" ?> generujete přes PHP. PHP si myslí, že zápis <?XML patří jemu, a začne blbnout. To se řeší třeba tak, že se nechá ta XML deklarace vypsat pomocí příkazu echo:
<? echo "<?XML version=\"1.0\" encoding=\"iso-8859-2\"?" . ">" ?>
Nebo ještě lepší je tam ten xml prolog nedávat, čímž sice vzniká nesprávně kódovaný dokument, ale zase to funguje i v Exploreru 6 se standardním vykreslováním.
Všechno se píše malými písmeny a ty značky, kterým se říká "párové", musí být uzavřené. Všechny atributy musí mít přiřazenu hodnotu, všechny hodnoty atributů musí být v uvozovkách (i čísla).
Například takovýhle HTML kód:
<select multiple>
<option>opt1
<option>opt2
</select>
<img src="x.jpg" width=10 height=10>
Se v XHTML zapíše takhle:
<select multiple="multiple">
<option>opt1</option>
<option>opt2</option>
</select>
<img src="x.jpg" width="10" height="10"
/>
Skript je v XHTML chápán jako beztvarý kus dokumentu. Musí se obalit zápisem CDATA. Zápis CDATA je potřeba ještě javascriptově zakomentovat.
<script type="text/javascript">
/* <![CDATA[ */
samotný zápis javascriptu
/* ]]> */
</script>
Uvnitř skriptu se nesmí použít sekvence </x, kde x je písmenko. Potřebujete-li ji zapsat, zapisujte ji takto: <\/x. Zápis \/ je jenom escapovaná verze lomítka.
Externí skript se naštěstí zapisuje stejně jako v HTML a uvnitř externího skriptu není žádné omezení.
<script type="text/javascript" src="externi-skript.js"></script>
To samé jako javascript. Přes kopírák - zapoznámkované CDATA. Ale ve většině případů to není nutné, pokud v zápisu stylu nepoužíváte žádné problematické znaky jako třeba & > a <. Zejména pozor na znak > (selektor dítěte).
<?xml version="1.0" encoding="iso-8859-2"?>
<?xml version="1.0" encoding="windows-1250"?>
<?xml version="1.0" encoding="UTF-8"?>
Samozřejmě záleží na použitém kódování. Pozor, tento zápis nenahrazuje meta tag pro kódování češtiny (zejména Google pak může mít problémy). V praktickém použití na webu se tento prolog většinou vypouští, protože (ačkoli tak vzniká neplatný dokument) Explorer chce mít na prvním řádku doctype.
Stránka není dokončená.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt. Poslední aktualizace 13. února 2005.