Zkratka na hlavní stranu: Alt + Shift + horní 2(ě)
Linkedin FB e-mail Google Plus Twitter

Hledat na tomto webu

 
 

Validita XHTML a CSS kódu – ano, či ne?
Reálný přínos, nebo zbytečná frajeřina?

 

Vytvořeno
12. – 14. 9. 2013

 

K čemu je to dobré

Validita kódu zvyšuje pravděpodobnost, že kód bude správně pochopen prohlížečem i vyhledávačem. Což jsou v zásadě jediné dvě věci, které od (X)HTML a CSS zdrojáku chceme (a ještě je někdy vhodné, když je srozumitelný i pro vývojáře-kodéra, a tomu vlastně validita také napomáhá).

Kromě toho je validátor ladicím nástrojem. Pomáhá kodérovi hledat chyby – když něco přestane fungovat, web se najednou rozsype (např. někde vypadla koncová značka párového tagu), tak je to právě validátor, kdo takovou chybu umí snadno a rychle nalézt – ale jen za předpokladu, že kód byl do poslední chvíle validní. Když vám z validátoru vyběhne 2500 chyb, z nichž většina tam byla, a nevadí vám, protože jde o drobnosti, nad které se povznášíte, tak v tom dlouhém seznamu budete jen těžko zjišťovat, která ze všech těch chyb je nejen formální, ale i fatální. Validátor tedy není nástroj pro vyučujícího, aby mu pomohl trápit studenty; validátor je nástroj pro kódera (např. tedy toho studenta), aby mu usnadnil kontrolu správnosti a hledání chyb.

Navíc většinu syntaktických chyb vyhodnocují, zpracovávají a snaží se opravovat různé prohlížeče různě,
takže o mnohé chybě by se autor webu nemusel hned dozvědět, a projevila by se až v praxi v nějakém méně obvyklém prohlížeči, ve kterém kodér web netestuje. Anebo zrádně až po nějaké době, když web běží, autor si ho nevšímá, a najednou přijde nový prohlížeč či nová verze stávajícího prohlížeče, a chová se jinak, než bylo dosud zvykem. Což někdy přináší trápení i u validního kódu, a nevalidita v takové situaci jistě neprospěje.

Jak s výsledky XHTML nebo CSS validátoru pracovat?

Vždy řešte jen první chybu. Validátor je jen robot, program. Může se stát, a dost často se také stává, že na jinak validním webu uděláte jen jednu drobnou chybu, která ale neinteligentního (zato poslušného a celkem spolehlivého) robota zmate tak, že mu přestane dávat smysl i celý zbytek kódu, protože ten zbytek kódu se v tu chvíli čistě syntakticky (formálně) stane nesmyslným, či spíše v daném místě a novém chybném kontextu nepatřičným.

Takže kouknout na první chybu (tu nejvyšší ve výpisu, na nejdřívějším řádku vašeho kódu i validátorova hlášení o výsledku kontroly), vyřešit ji, a znovu nechat kód zkontrolovat. Dost často se stává, že najednou jakoby zázrakem zmizí třeba dalších deset chyb (vycházím z několikaleté praxe ve výuce nejen XHTML pro úplné začátečníky na fakultě informatiky).

Z tohoto pravidla je jedna výjimka – jestliže vidím, že jsem se té jedné stejné chyby dopustil vícekrát, tak můžu opravit hned všechny její výskyty, a nemusím čekat, až mě o to validátor extra požádá. U studentů šlo typicky o případy, kdy si editor nepřepnuli do režimu XHTML, a neměli nepárové elementy (typicky br nebo img, příp. hned meta) ukončené lomítky.
Když naleznu chybu, kterou jsem systematicky opakoval, tak opravím hned všechny její důsledky (a ideálně hned také provedu opatření, aby se neopakovala... např. tedy přepnu editor do režimu XHTML, abych po stisku Ctrl+Enter získal <br />, a ne <br>).

Obcházení validátoru

Jak

K obcházení validátoru (skrývání nevhodné části kódu před jeho očima) se používá javascript. Dříve stačilo použít pouhé document.write(), ale pak se HTML validátor ve své důslednosti naučil (resp. "byl naučen", abych pestrostí textu nepokroutil význam) kontrolovat i kód vkládaný javascriptem.
Dnes se tedy používá XML element cdata obalený javascriptovým zakomentováním.

Proč (Kdy)

Ale proč validovat a přitom validátor obelhávat? Má to smysl? Někdy ano:

Typicky při vkládání pluginu Facebooku, který je nevalidní a jehož nevaliditu nemůžeme ovlivnit. A web se bez něj kdyžtak obejde. A hlavně nám díky skrytí do cdat nezaseká výstup validátoru, jenž tak můžeme i nadále využívat k jeho diagnostickému účelu. Zkrátka tím cdata de facto řekneme "O téhle vkládané hrůze vím, tu mi nehlaš, zajímá mě jen to ostatní, co si tu napáchám sám."

Hlavně ale facebookové pluginy (alespoň některé) plní jednu zásadní podmínku: Tak jako tak jsou závislé na javascriptu, bez něj nefungují, takže vložením přes javascript neomezíme jejich funkčnost a můžeme si tedy dovolit je javascriptem vkládat.

Nebezpečí javascriptu obecně (nezávisle na validátoru)

Jinak obecně může (zbytečné) vkládání (důležitého) obsahu stránky javascriptem vadit, web nesmí být na javascriptu závislý. JS můžeme využít ke zvýšení uživatelova pohodlí, ale vše podstatné musí bez javascriptu fungovat (mám na mysli běžné informačně-komunikační weby; ne on-line grafické editory, hry a jiné specifické webové aplikace).

V posledních letech letí AJAX – mnohdy je smysluplný, vhodný a příjemný, můžu ho použít, ale celé řešení musím mít ošetřené tak, aby nějak (byť přirozeně s menším pohodlím) fungovalo i bez JS.
(A také pozor na to, aby se ajaxem zbytečně nevkládalo to, co se klidně může načíst jako celá nová stránka – aby stejně jako u překonaných framů (rámů) nedošlo k tomu, že veškerý obsah bude na jednom URL, a nebude tak možné na něj předat odkaz, uložit si ho do záložek, navštívit ho z historie, apod.)

Skrytí části kódu i bez javascriptu

Jak tedy skrýt část HTML kódu před validátorem a přitom zajistit funkčnost skrytého kódu i při nedostupnosti javascriptu?
Mám čerstvě vyzkoušeno, že můžu

  1. do javascriptu zabalit jen javascriptově zakomentovanou počáteční značku cdata, pak celý javascript ukončit,
  2. úplně normálně natvrdo do HTML vložit potřebný element (nevalidní třeba proto, že jde o facebooku určenou metaznačku podle normy Open Graph, kterou z nějakého konkrétního důvodu nechci použít jako normu daného dokumentu (stránky)),
  3. a pak v dalším elementu script zase v JS komentáři ukrýt koncovou značku od cdat.

Tímto postupem skryjeme před validátorem kód, který je naprosto natvrdo staticky napsán přímo ve zdroji HTML kódu a není tedy závislý na dostupnosti javascriptu.

Příklad aplikace naleznete v mém řešení pro formálně validní vložení facebookových komentářů do stránky,
s možností odložit vložení pluginu (a veškerou komunikaci s FB vůbec) až do okamžiku, kdy si uživatel bude vložení FB komentářového pluginu výslovně přát.

Validátor není vševědoucí

Když jsem kdysi při výuce na FIM UHK zaučoval jednoho nového kolegu doktoranda, aby se mnou a dalšími vyučoval tvorbu webu,
tak se nejdřív domníval, že při kontrole projektu stačí se podívat, jestli je web validní, a tím je hotovo.

Ale kdepak, validita je jen jednou z mnoha vlastností webu. V podstatě říká pouze to, že zdroják je syntakticky bezchybný. Což je v některých jiných programovacích jazycích naprostá samozřejmost, při jejímž porušení program vůbec nelze zkompilovat, ergo spustit.
Při tvorbě webu jde ale také o sémantiku, přístupnost (do tohoto marketingově nezajímavého pojmu odjakživa spadá i přizpůsobivost, jež se nově označuje marketingově zajímavým newspeakovým termínem "responsivní webdesign"), použitelnost a další podobory.

Hodnocení každého semestrálního projektu spočívalo v kontrole desítek položek (požadavků/kritérií/parametrů webu), přičemž validita všech stránek projektu byla jednou z těchto položek (jeden řádek v xls tabulce).
Špičkový projekt jsem zkontroloval za deset minut, průměrný za půl hodiny, hodnocení nejtragičtějších neštěstí si vyžádalo třeba 50 minut, aby se dalo dopátrat toho, co autor jak myslel, co je co (co je splněno, a co není), aby se ta tragédie dala objektivně spravedlivě obodovat.

Takže validita je sice důležitá, ale zdaleka není jediným měřítkem kvality webu.

Ale je užitečný

Rozhodně ale doporučuji validátor používat, zejména v začátcích tvorby webu, kdy člověk učící se úplným základům celkem pochopitelně občas přehlédne, zapomene nebo nepochopí to, či ono. Což je úplně normální součást učení se něčemu novému, a mj. v této fázi je validátor převelice užitečný. Ale nejen v ní.

Přestože jsem v době, kdy jsem tvorbu statického webu učil, dokázal při cvičeních často už při pohledu do studentova XHTML (či CSS) zdrojáku nalézt tu chybějící konec tagu, tam záměnu atributu za element, a jinde zas něco jiného, aniž bychom museli čekat, až nás na tu syntaktickou chybu upozorní kolega validátor (který při cvičení 20 studentů sedících na jedné IP adrese někdy odmítal spolupracovat a dožadoval se použití různých IP adres),
tak při tvorbě složitějšího dynamického webu, kdy se v rozvětveném PHP kódu občas objeví nějaké to XHTML, se můžu někdy ukouknout, a validátor mi pak umí efektivně pomoci.


(Sepsáno částečně pro zachycení toho, co jsem na toto téma říkával při výuce, dříve, než to zapomenu
ale hlavně jako souhrn důvodů pro a proti snaze o validitu kódu, protože některými praktiky je validita kódu považována za zbytečnou, jinými za důležitou a užitečnou. Do určité míry jde o jeden z náboženských sporů, a tento článek by měl sloužit tomu, aby se každý mohl informovaně rozhodnout, u kterých projektů pro něj validita důležitá je, a u kterých není.)


Poznámka 04/2020

Koukl jsem na tento svůj téměř sedm let starý článek,
a poznamenávám k němu:
Místo „XHTML” si představte „HTML5”, vše ostatní platí.

Skok nahoru na: Navigační menu
(klávesová zkratka Alt + Shift + horní „5”)

Zaujala Vás tato stránka?

  • Přidat do záložek (Ctrl+D)
  • Sdílet odkaz (vysílačka)Skok nahoru na:
  • Vytisknout (Ctrl+P)
  • Citovat podle ČSN ISO 690

    Tuto stránku

    ADÁMEK, Martin. Validita XHTML a CSS kódu – ano, či ne?: Reálný přínos, nebo zbytečná frajeřina?. Martin Adámek [online]. Náchod / Meziměstí [cit. 2024-10-08]. Dostupné z: https://www.adamek.cz/clanky/popularne-odborne/validita-html-kodu

    Celý web

    ADÁMEK, Martin. Martin Adámek [online]. Náchod / Meziměstí [cit. 2024-10-08]. Dostupné z: https://www.adamek.cz

 

 
 

Národní kulturní dědictví

WebArchiv – Stránky archivovány Národní knihovnou ČR Tyto stránky jsou pravidelně archivovány Národní knihovnou ČR pro svou kulturní, vzdělávací, vědeckou, výzkumnou nebo jinou informační hodnotu za účelem dokumentace autentického vzorku českého webu. Jsou součástí kolekce českých webových stránek, které NK ČR hodlá dlouhodobě uchovávat a zpřístupňovat pro budoucí generace. Jejich záznam je součástí České národní bibliografie a katalogu NK ČR.  

 

 
 

Pro rozptýlení

Matematik, fyzik a inženýr se jdou na noc ubytovat do hotelu. V noci je ale probudí kouř a zjistí, že v pokoji hoří. Co udělají?
Inženýr vezme kyblík, natočí do něj vodu, uhasí oheň a jde spát.
Fyzik vezme tužku a papír, aby spočetl, kolik je potřeba vody na uhašení ohně, vyjde mu 4,3 litru, vezme kyblík, natočí do něj přesně 4,3 litru, uhasí oheň a jde spát.
A matematik? Tak ten dojde ke kohoutku, pustí vodu, zase ji zavře a jde spát, protože zjistil, že řešení existuje.

 

Pro zamyšlení

Zvykne-li si člověk bavit se náhražkami života, ztrácí schopnost bavit se životem samým.
[Karel Čapek ( 1938)]