• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • X(HT)ML, Validita, Evangelizace
  • Optimalizováno pro W3C Validátor

    19. dubna 2007

    „Každý moderní webdesignér používá ty nejmodernější webové standardy zaručující bezproblémovou interpretaci v libovolném cílovém zařízení“ — tak nějak zní současná politicky korektní pravda webdesignu.

    Škoda, že je i politicky zkažená.

    Výklad

    Nejmodernějšími standardy se pochopitelně myslí sedm let staré XHTML 1.0 a devět let staré CSS 2.0 (či dosud nedodělané CSS 2.1). Nikdo nenazývá moderním sedm let staré HTML 4.01.

    Pojmem XHTML se nemyslí pouze dotyčné W3C doporučení, ale především „nová filosofie s ním spojená“ [K.26] — tedy třicet let stará snaha o vyčlenění prezentační vrstvy mimo vlastní obsah. Paradoxně se v tomto kontextu zaměňuje užívání XHTML s užíváním CSS.

    Je-li řeč o XHTML, tak jde samozřejmě pouze o přístupné a validní XHTML. Jak se přístupnost v XHTML zajišťuje? Snadno: stačí se nehrabat v HTTP hlavičce [K.27], ponechat MIME typ text/html. Díky tomu získá stránka prakticky totožnou cílovou skupinu jako HTML stránky.

    A validita? Jednoduše odladíte dokument podle připomínek oficiálního W3C Validátoru, ne? Mezi zmíněnými parametry moderního webdesignu má validita výsadní postavení. Je perfektně definovaná a lze ji ověřit strojově.

    Přísná pravidla a přísný dozor

    Vše, co v HTML můžete a v XHTML musíte, při MIME typu text/html nemusíte. Nehrozí vám žádný postih při porušení „nových“ pravidel, jelikož interpreti vašeho kódu ctí „stará“ pravidla. Čím to tedy je, že jsou tyto povinnosti i přes svoji bezzubost vnímány jako posvátné? Že by úcta ke specifikaci? To těžko. Vždyť specifikace nikdo nečte.

    Zatímco v případě HTML vše, co nemusím, validátorem projde bez připomínek, u striktního XHTML se dozvím všechny detaily.

    — Petr Staníček, Proč používám XHTML, Interval.cz, 14. října 2004

    Jednoho postihu za porušení nových pravidel se tedy nakonec dočkáte: W3C Validátor vás potrestá červenou hláškou. Nástroj konsorcia má na moderní webdesign značný vliv. Jedno jeho slovo má pronikavější zvuk než deset specifikací. Stačí zeleně podbarvený nápis „This Page Is Valid XHTML 1.0 Strict!“ a autor se hned zaraduje, že dodržuje ty „nejmodernější webové standardy“.

    Dozor klame

    Sám validátor se však také musí řídit specifikacemi. Vyhovující validátor je zvláštní odrůda vyhovujícího cílového zařízení. Má jasně dané chování. Nekontroluje dodržování W3C specifikací, kontroluje pouze validitu. To není totéž, neboť vyhovující dokument nemusí být validní a validní dokument nemusí být vyhovující.

    Jako každé cílové zařízení by měl i validátor volit parser podle MIME typu. Nečiní tak. Konsorcium před osmi lety svůj nástroj záměrně nabouralo: k detekci MIME typu dopsalo nestandardní výjimku, kvůli které oficiální validátor přestal vyhovovat.

    Nyní postupuje tak, že začne každou text/html stránku rozebírat jako XML. Jakmile najde deklaraci <!DOCTYPE>, nakoukne do jejího veřejného identifikátoru a s ohledem na něj zvaliduje dokument buď jako XML, nebo jako HTML. Takové očichávání kódu mu žádná specifikace nedovoluje a lidé z W3C jej všude možně odsuzují. Podle standardů může <!DOCTYPE> říct validátoru pouze adresu DTD, nikoliv syntaktická pravidla. Ta totiž musí být známa předem.

    Pohleďte na tento zdrojový kód:

    <?xml version="1.0" encoding="utf-8"?> <?pi > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <?pi ><!--?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <?pi --><?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Schrödingerovo dědictví</title> </head> <body> <div style="visibility: hidden" /> <p>Důležité sdělení.</p> </body> </html>

    Ty podivnosti s otazníkem jsou tzv. „instrukce pro zpracování“. Validátor se o ně nestará a prohlížeče také ne. Začínají sekvencí „<?“ a končí „>“ v HTML a „?>“ v XML. Díky nim jde kód větvit.

    Správně jsou tři možná vyhodnocení výše uvedeného zdroje v závislosti na MIME typu:

    text/html
    Stránka není validní HTML 4.01, 3 chyby.
    text/xml
    Stránka není validní XHTML 1.0 Strict, neplatné znaky (kódování je us-ascii).
    application/xml nebo */*+xml
    Stránka je validní XHTML 1.0 Strict.

    Oficiální validátor ovšem při typu text/html přehlédne HTML <!DOCTYPE> a vesele validuje XML procesorem, takže webmastera ujistí, že je všechno v pořádku a ten se zaraduje. Jak dlouho mu asi radost vydrží?

    Koukne se na stránku v libovolném prohlížeči a co nevidí? Nic nevidí. Kam se podělo důležité sdělení? Jak to, že není vidět? Stránka je validní i vyhovující, tak v čem je problém? Začne z chyby vinit prohlížeč. Nahlásí proto závadu výrobci (třeba tady). Autory prohlížeče to samozřejmě nezaskočí, jelikož podobné stížnosti dostávají každý týden. Na všechny odpovídají stejně: „U nás chyba není! Slova W3C Validátoru nejsou rozhodující, protože validuje totálně blbě trošičku úplně jinak.“

    Takřka všechny existující XHTML dokumenty dodávané s typem text/html jsou nevalidní. Pod rouškou dodržování standardů se moderní webdesign upnul k optimalizaci pro nástroj vynucující si jejich porušování. Vskutku fascinující jev.

    Roubík

    Chyba W3C Validátoru umožňuje každému text/html dokumentu spatřit zelenou hlášku „This Page Is Valid XHTML 1.0 Strict“, aniž byste sáhli na jeho značky. Stačí ho obalit do následující XHTML slupky:

    <?q ><!--?> <!DOCTYPE q PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <q/><?q --> Sem vložíte kompletní HTML dokument. W3C Validátor ho přehlédne, prohlížeče nikoliv. Jen si dejte pozor, ať neobsahuje za sebou znaky „?“ a „>“. <?>

    Tři řádky na začátek, tři znaky na konec. Krása, že?

    Můžete dělat ta největší zvěrstva a oficiální validátor vás stejně pochválí, že máte validní XHTML. Svým XML procesorem totiž uvidí XML dokument s prázdným kořenovým elementem <q>. Správně fungující cílová zařízení (včetně českého validátoru) slupku přejdou bez povšimnutí.

    Je to fuj?

    Svým způsobem ano. Ale je to ten nejmodernější webový standard.