• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • X(HT)ML
  • Podpora života

    11. září 2006

    V ideálním světě je krásně. Vždy tam na vás svítí sluníčko či nějaká jiná blízká hvězdička vyhovující specifikaci sluníčka. Nikde ani mráček. Tornáda neexistují. V takhle přívětivém prostředí se skvěle kódují stránky. Nacvakáte je hezky podle specifikace a šup s nimi do světa. Do krutého světa anomálií, který bohužel ideální není.

    Jazyk HTML býval terčem kritiky kvůli drobným mráčkům.

    Zastaralé problémy

    Zlí X-jazykové říkávali, že dodržet doporučení HTML 4.01 kvůli chybujícím prohlížečům nestačí. Že prý nezajistí stejné zobrazení. Což asi není překvapující, ponechává-li se zobrazování na živelně vzniknuvších kaskádových stylech. Problémy se zobrazením jsou tedy hlavně tam.

    Avšak zlí jazykové měli pravdu i v tom, že kód je v drsném světě prohlížečů špatně rozebírán. Většinou nevěděli, že mají pravdu. On totiž málokdo ty mraky viděl.

    <!doctype html public "-//W3C//DTD HTML 4.01//EN"> <head <title/Něco o mně/ </> <p>Ahoj návštěvníku. <>Jsem hrdým majitelem těchto končetin: <ul> <li>Levá ruka <>Pravá ruka <>Levá noha <>Pravá noha</li> </> <h1/Vyzkouším <![CDATA[<form>]]>/ <form post action=''> <p> <input hidden name=neviditelno value=kuk> <input submit/ </p> </>

    Kdybyste v ideálním světě naťukali takovýto kód, realita by vám dala pořádnou facku. V souladu s představami konsorcia nepojede patrně nikde. Přestože specifikaci stoprocentně vyhovuje. Je okořeněn všemi zvěrstvy, která jsou dovolená.

    Vezmete-li si s sebou do ideálního světa alespoň jeden normální prohlížeč, můžete HTML kód snadno odladit tak, aby byl rozebrán všude stejně. Omezená podmnožina HTML funguje dokonale napříč všemi prohlížeči stolními, mobilními, stabilními, labilními i debilními.

    Kde v HTML poletují nežádoucí obláčky, tam řádí v XHTML tornádo.

    Moderní problémy

    Dobří X-jazykové říkávali, že dodržet doporučení XHTML 1.0 stačí. Že podpora podporujících zařízení bude vždy stoprocentní. Uspokojující jistota. Jenže, co když stoprocentní nebude? Musí být! Jistě, ale co když...

    XML řeší problematické situace velmi svérázně: trestem smrti. Autor dokumentu nesmí udělat fatální chybu. Že ji stejně někdy někdo nějak udělá, to již bylo propíráno mnohokrát. Napadlo vás, co se asi stane, udělá-li přehmat při psaní XML procesoru výrobce prohlížeče?

    Fatální chyba je chyba, kterou vyhovující XML procesor musí zjistit a nahlásit ji aplikaci. [...] Jakmile je fatální chyba zjištěna, nesmí procesor pokračovat v normálním zpracování dokumentu.

    1.2 Terminologie v XML 1.0, 10. února 1998

    Co se stane, budou-li prohlížeče vyhodnocovat fatální chyby různě? Ano, samozřejmě, chyba bude na jejich straně. Vysvětlíte návštěvníkovi, že pyká za úplně cizí chyby? Jak pak vůbec zjistíte, že někoho takto vypuzujete? Běžná počítadla, statistiky přístupů a audity návštěvnosti problém nezaznamenají. Ve vašem prohlížeči bude vše v pořádku. Jsou dvě možná vysvětlení:

    Tak či onak, k chybě dojde. Nastane přesně ten moment, kdy se z krásného snu o dokonalé spolupráceschopnosti stane děsivá noční můra plná nejistot. Mechanismus, který má autorovi bránit ve vytváření chybných dokumentů, nemilosrdně přibouchne dveře části cílové skupiny.

    Optimalizováno výhradně pro prohlížeče, jejichž XML procesor je stejně vadný jako ten můj.

    — Typický webmaster píšící v XHTML

    Připadá vám popsané kataklyzma neskutečné?

    Důkazní materiál

    Nevědomost je sladká.

    Procedurální připomínka: Většina níže uvedených ukázek XHTML dokumentů užívá kvůli kompatibilitě s Explorerem prefix „html:“. Vězte, že toto opatření nemá na nálezy vliv.

    [Ukázka] Prázdný řádek před XML deklarací.
    Specifikace přikazuje selhat.
    Neselžou: Explorer, Opera do verze 9, W3C Validátor
    [Ukázka] České znaky při MIME typu „text/xml“ bez udání charsetu.
    Specifikace přikazuje selhat, jelikož výchozí kódování tohoto MIME typu je povinně „us-ascii“.
    Neselžou: Explorer, Mozilla, Opera
    [Ukázka] Chybná adresa externí DTD.
    Specifikace povoluje selhat těm procesorům, které čtou externí DTD.
    Explorer a W3C Validátor čtou externí DTD, Mozilla a Opera nikoliv.
    Neselže: W3C Validátor (ani neupozorní)
    [Ukázka] Nedeklarovaná obecná entita v XHTML dokumentu s externí DTD.
    Specifikace nedovoluje selhat, navzdory všeobecnému přesvědčení.
    Selžou: Explorer, Mozilla, Opera do verze 9
    [Ukázka] Nedeklarovaná parametrická entita.
    Specifikace nedovoluje selhat.
    Selžou: Explorer, Opera, starší Mozilla

    Zkombinováním výše uvedených situací může vzniknout dokument funkční pouze v jednom z uváděných prohlížečů. Explorer nevyjímaje. Což je vtipné. Stovky článků totiž navozují dojem, že zrovna prohlížeč od Microsoftu je posledním kouskem softwaru bez podpory XHTML na této planetě.

    Nemůžete-li se spoléhat na XML procesory uvnitř známých prohlížečů, jak si můžete být jistí bezchybností těch neznámých?

    Návštěvníkův prohlížeč:
    Fatální chyba!
    Návštěvník:
    Tvá stránka se mi vůbec nechce načíst, webmastře.
    Webmaster:
    Mně funguje. Co na to validátor?
    W3C Validátor:
    Je validní! Gratuluji, můžeš si na ni dát ikonku.
    Webmaster:
    Ó, díky. Změň prohlížeč, návštěvníku.
    Návštěvník:
    Ani mě nenapadne. Co na tu tvoji stránku říká specifikace?
    Specifikace XML 1.0:
    Prohlížeč na ní MUSÍ selhat.
    Webmaster:
    Můj ale neselže.
    Specifikace XML 1.0:
    Je nevyhovující. Změň prohlížeč, webmastře.
    Webmaster:
    Ani mě nenapadne.
    Návštěvník:
    Tak alespoň oprav tu svoji stránku.
    Webmaster:
    Dobře, podřídím se specifikaci. Hotovo. Je vše tak, jak má být?
    W3C Validátor:
    Je validní! Gratuluji, můžeš si na ni dát ikonku.
    Specifikace XML 1.0:
    Skutečně je správně sestavená.
    Webmaster:
    Ó, díky. Jsi spokojen, návštěvníku?
    Návštěvníkův prohlížeč:
    Fatální chyba!
    Návštěvník:
    Tvá opravená stránka se mi vůbec nechce načíst, webmastře.
    Specifikace XML 1.0:
    Prohlížeč na ní NESMÍ selhat.
    Návštěvník:
    Můj ale selže.
    Specifikace XML 1.0:
    Je nevyhovující. Změň prohlížeč, návštěvníku.
    Návštěvník:
    Ani mě nenapadne.
    Webmaster:
    Rozloučíme se tedy ve zlém?
    Návštěvník:
    Skvělý nápad. Ještě, že ten drakonismus máme.

    Můžete si dát bacha na pětici zmíněných problémů. Můžete XHTML dokument odladit tak, že bude funkční ve vám známých prohlížečích. Můžete ho odladit i tak, že bude v souladu se specifikací. Ale nikdy si nemůžete být jisti tím, že váš dokument bude všude alespoň nějak fungovat. Najít všude-funkční podmnožinu je náročnější, visí-li vám nad hlavou kovadlina.

    Pomyslete také na ty „návštěvníky“ vašeho webu, kteří musí „být nad věcí“: na roboty vyhledávačů. Měli by snad ctít specifikaci a vyřazovat z indexu i takové stránky, které takřka všem návštěvníkům navzdory slovům W3C fungují? Nebo kopírovat vady rozšířených implementací? Všechny vady? Či snad jen ty chybně neselhávající? Nebo i ty chybně selhávající?

    Resumé

    Garancí kvality specifikace není jen snaha o vyrušení nedefinovaných stavů. Měla by odpovědně definovat i nějaké rozumné zotavení ze situací, které sama označuje za chybné. V případě nespoutané džungle World Wide Webu to platí trojnásob.

    XHTML není kvalitní specifikace.