Struktura XHTML dokumentu je opět podobná struktuře libovolného jiného XML dokumentu. S našimi znalostmi z předchozích kapitol by pro nás neměla být nijak překvapivá.
<?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> <title>Ukázková stránka</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" media="screen" href="style.css" /> </head> <body> <h1>Toto je ukázková stránka v XHTML</h1> <p>Nějaký text s <a href="http://www.test.com">odkazem</a>.</p> </body> </html>
První řádek - XML prolog s sebou však bohužel přináší jeden velmi diskutovaný problém, který vede k otázce „Mám opravdu používat XHTML?“.
Tento problém souvisí s prohlížečem Microsoft Internet Explorer a jeho špatným XML parserem.
Díky tomu nelze v tomto prohlížeči použít standardní MIME typ pro XML (text/xml
)
respektive XHTML (application/xhtml+xml
), protože XML parser tohoto prohlížeče si s
dokumentem neporadí a zkolabuje.
Musíme XHTML dokument poslat s MIME typem pro HTML (text/html
) ale to přináší
zase jiné problémy. Pokud totiž v dokumentu uvedeme XML prolog, která tam
má být povinně pokud není dokument kódován v UTF-8 či UTF-16, MSIE se přepne do historického režimu
parsování HTML. Při tomto způsobu parsování zpracuje dokument nestandardně a chybně. Pokud XML
prolog chybí, MSIE zpracuje dokument korektně a striktně.
Řešení jsou tedy v zásadě tři
XML prolog uvádět, mít striktní dokument, ale vědět že MSIE s ním naloží nestandardně.
XML prolog neuvádět a dokument psát v UTF-8 - prolog tam v tomto případě být nemusí a MSIE se bude chovat korektně.
XML prolog neuvádět a v dokumentu použít jiné kódování než UTF-8 s vědomím, že vytváříme XHTML dokument s chybou, ale bude v MSIE (i jinde) zpracován korektně.
Nejvhodnějším řešením je zřejmě porušit normu XHTML a používat tento moderní jazyk i za cenu, že dokumenty vytvoříme s úmyslnou chybou. I s touto chybou totiž stránka funguje správně. Hlavně ale nezavrhneme novou moderní technologii jen díky tomu, že ji jeden prohlížeč (ač majoritní) nezpracovává korektně.
Pro bližší prozkoumání tohoto problému a utvoření vlastního názoru doporučujeme prostudovat články [WWW-02] a [WWW-03], které byly publikovány na serveru http://www.interval.cz.