• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • X(HT)ML
  • Technologická inverze

    12. března 2005

    Vzpomeňte si na hlavní motivaci pro vznik jazyka XHTML. Na jednoduchost. V jednoduchosti bývá krása. Co je přesně na novém značkovacím jazyku tak krásné? Představte si prosím onen slavný sen o „WWW zítřka“. Představte si tu nirvánu normalizovaného webdesignu, kdy se webové stránky rozebírají (parsují) jen jako XML.

    Webmaster vždy musí psát počáteční a koncové značky elementů. To i v místech, kde jsou logicky odvoditelné z definice typu dokumentu. Rovněž musí dávat pozor na spoustu drobností, aby nevyvolal chybu při rozebírání. Z pohledu lidského je XHTML dokument nepochybně zbytečně složitý, byť možná názorný.

    Prohlížeč, respektive jeho část zvaná „XML procesor“, musí být pedant a od stránky vyžadovat správnou sestavenost. Odměnou za to mu budiž nepatrně rychlejší rozebírání, než kdyby se rozebíralo HTML. Avšak stále s lineární složitostí, časovou i paměťovou. Těch pár mikrosekund návštěvník asi neocení. Ani při brouzdání na chytrém mixéru rozdíl nepostřehne.

    Až teprve výrobce webového prohlížeče, ten by si měl krásu XHTML pořádně vychutnat. Algoritmus jeho produktu by měl být nejen rychlý, ale hlavně jednoduchý. Snadný na výrobu.

    Díky přísným a zároveň jednoduchým pravidlům, mohou počítače XML a tedy i XHTML velmi snadno automatizovaně zpracovávat. Kdyby prohlížeči stačilo "umět" XHTML, byl by mnohem jednodušší (a tedy menší a rychlejší), než když musí zvládat veškeré "nevyzpytatelnosti" HTML.

    — Marek Prokop, Co je XHTML, Sova v síti, 1. října 2000

    Tvorba prohlížečů XHTML stránek je neskutečně jednodušší než HTML! Pokud zjednodušíme práci prohlížečům, daleko dříve se jich dočkáme v nejrůznějších primitivních zařízeních (hodinky, ledničky, …)

    — Jan Raszyk, Význam XHTML - obrovský, osobní blog, 8. srpna 2003

    Zkuste se vžít do pozice tvůrce prohlížeče…

    V kůži líné, programátorské

    Podívejte se nejprve na příslušná XHTML doporučení, tam se dozvíte, co se od vás žádá. Vida, budete rozebírat XML strukturu, vyhodnocovat její správnou sestavenost (well-formedness). Budete psát vlastní XML procesor. Na následující syntaktické vlastnosti se tedy můžete spolehnout:

    Kdybyste psali HTML parser, nemohli byste se na ně spoléhat a jejich ošetřování by vám nafouklo kód přinejmenším o pár desítek řádků. Máte štěstí, že píšete XML procesor. Jednoduchý. Krásný. Ale, jak víme, vzhled může být zavádějící. U výplodů konsorcia to platí dvojnásob.

    Už máte XML procesor hotový? Ano? Pak ho prosím pusťte na následující kód:

    <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [ <!ENTITY xml "<b>XML</b>"> <!ENTITY strom "<i>aplikace &xml;</i>"> <!ENTITY % coJsem "&#60;!ENTITY dotaz 'Jsem &xml; nebo nejsem &xml;?'>"> <!ENTITY % toJsem '&#60;!ENTITY verdikt "Jsem &strom;!">'> <!ENTITY % kusDTD ' &#37;coJsem; &#37;toJsem; '> %kusDTD; ]> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Jednoduchý dokument</title> </head> <body> <p> &dotaz; &verdikt; </p> </body> </html>

    Hádám, že na něm váš algoritmus pohořel. Při tom jde o správně sestavený a platný (validní) XHTML dokument. Zcela vyhovující doporučení. Správný XML procesor ho musí umět zpracovat. Nuže, podívejte se, co musíte ještě implementovat:

    Jednoduché a krásné, že? Výsledný kód algoritmu vám nabobtná přinejmenším o pár stovek řádků. Zároveň mírně ohrozíte své duševní zdraví gulášem apostrofů a uvozovek při luštění parametrickými entitami vyjádřených parametrických entit určujících parametrické entity.

    Bezproblémově rozebrat výše uvedený dokument umí současné nejrozšířenější prohlížeče. Ty, jež podporují jmenný prostor XHTML, ho i správně zobrazí.

    Co sám nerad...

    Kdybyste psali HTML parser, nemuseli byste se luštěním DTD vůbec zabývat. Jazyk HTML je už konkrétní aplikací SGML a parser se mu šije na míru. Není od něj žádána obecnost a autoři dokumentů ani nesmí využívat prostředků SGML nad rámec W3C doporučení.

    Procesor XML však obecný být musí a XHTML (dodané s některým XML Content-typem) musí být rozebíráno XML procesorem. Ten musí ověřit správnou sestavenost => musí ověřit existenci entit => musí rozebírat DTD. Proto je výrazně obtížnější napsat prohlížeč XHTML než napsat prohlížeč HTML.

    Metajazyk XML je skvělý vynález. Ale jako formát webového dokumentu přináší hlavně komplikace. Nezapomínejte, že v jednoduchosti je krása.