Internet Info, s.r.o. Lupa Root Měšec Podnikatel DigiZone Slunečnice Vitalianew Bomba Navrcholu Weblogy Jagg Woko Dobrý web Computer.cz SK: MojeLinky
Lupa.czBlogyhaloganovo

Co je vlastně validita?

Ondřej Kokeš, 12. 02. 2006, 15:23 v kategorii Webdesign,

Validita je pojem, který pohltil miliony webdesignerů po celém světě, ale co to vlastně je? Pro mě je pojem validní dokument takový kus kódu, který funguje. Beru to tak, že když mi validátor vypíše, že můj dokument je validní, tak vím, že bude fungovat korektně a zobrazí se správně.

Pro vás, kteří mi nevěříte, tu mám pár příkladů z praxe:

  • Pokud vyplním někde atribut id dvakrát, nebudou JavaScripty fungovat korektně, protože hojně používám metodu getElementById.
  • Když bude atribut id začínat číslicí, což je proti standardům, nebudou fungovat odkazy na kotvy.
  • Při použití application/xhtml+xml mi dokument znehodnotí jakákoliv syntaktická chybka a stránka se nezobrazí.
  • Chybějící koncový může vážně narušit rozložení stránky.
  • Absense uvozovek (apostrofů) kolem hodnot atributů se může vymstít při neošetřeném výpisu hodnot těchto atributů.
  • Nepoužívání <![CDATA[ může způsobit nečekané chování prohlížeče při posílání dokumentu jako XML.

Samozřejmě toto je jen krátký výpis toho, co se může stát při porušení zásad (X)HTML. Narozdíl od naprostých fanatiků neberu validaci jako jistou modlu či způsob povyšování mého ega, ale jako pomůcku při tvorbě kvalitního webu.

Validita není vše

Často se stává, že pro jisté webdesignery je validita zárukou kvalitního webu. To však není vůbec pravidlo. Nezáleží pouze na validitě, ale hlavně na sémantice, o které si můžete přečíst na jednom zajímavém webu.

Násilná validace

Výše zmínění "fanatici" dělají vše pro to, aby jejich byl validní. Projedou si web validátorem a upravují chybu po chybě, ale to by měl být odstrašující příklad. Když validujete svůj web, měli byste pochopit, co jaká chyba znamená a předejít jí.

Chyba validátoru či nepotřebnost?

Dnes jsem si pročítal specifikaci XHTML 1.0 Strict, abych se kouknul, jakých hodnot můžou nabývat hodnoty width a height u obrázků. Našel jsem tam zmíňku: nn for pixels or nn% for percentage length. Něco takového jsem čekal, ale nebylo mi jasné, proč je tedy web Radka Hulána validní podle XHTML 1.1 (byť upraveného) i přes to, že používá hodnotu 500px. Zkusil jsem si zvalidovat takový kód pod XHTML 1.0 Strict a stále bez chyby. Po pár minutách jsem zjistil, že W3C validátor nekontroluje obsah atributů. Nepočítám však kontrolu osamělého amperstandu, mluvím jen o kontrole hodnoty dle specifikace. Pro mnohé staré známé, pro mě novinka. Novinka, která dovoluje do atributu width napsat treba "pes" a dokument sice nebude funkční, ale stále validní.

Na závěr malé shrnutí: validátor je pro mě pomůcka k objevení syntaktických či logických chyb. Dále to je klíč k funkčnosti, pokud opomenu hodnoty atributů, které musím otestovat sám.

Komentáře (20)

  1. 12. 02. 2006, 17:51 Vilém Málek napsal:

    Dokument nebude validní, protože validita je shoda dokumentu s normou, bude pouze otestovaný a schválený validátorem W3C. Validaci dokumentů se v ČR nikdo moc nevěnuje, i když jde o rozsáhlé a zajímavé téma - doporučuji pozorně pročíst článek http://interval.cz/clanky/relaxed-novy-validator-xhtml-kodu/ ;-)

  2. 12. 02. 2006, 18:36 Lukáš Havrlant napsal:

    Vilém Málek: "Dokument nebude validní, protože validita je shoda dokumentu s normou"
    (X)HTML stránka je validní, pokud vyhovuje danému DTD. Toť vše.

    K článku: předně dekuji za odkaz :-) . Jen bych měl ještě dodatek k poznámce ohledně application/xhtml+xml. Zde není validita důležitá, dokument musí být hlavně well-formed (a well-formed nemusí být nutně validní).

  3. 12. 02. 2006, 18:45 halogan napsal:

    [2] "Zde není validita důležitá, dokument musí být hlavně well-formed (a well-formed nemusí být nutně validní)." - Jistě, to chápu, také proto píši "syntaktická chyba", nikoliv "neshoda s normou". Je to pro mě taková obdoba parseru pro PHP.

  4. 12. 02. 2006, 19:01 Vilém Málek napsal:

    [2] Ano, v normě XHTML skutečně tenhle lingvisticko-logický kotrmelec je kodifikován. Myslím ale, že už jsme se v diskusi na jiném místě shodli, že si autoři návrhu tímto způsobem pouze velmi značně zjednodušili práci. Zároveň tím také nadělali žalostný nepořádek, protože validita v XHTML přestala odpovídat nejen obecnému chápání tohoto pojmu, ale i jeho definici v ostatních normách W3C. Doufám, že autoři další verze budou mít natolik soudnosti, aby tuhle ostudu napravili ;-)

  5. 13. 02. 2006, 11:01 Kašpy napsal:

    Výše zmínění "fanatici" dělají vše pro to, aby jejich byl validní. Projedou si web validátorem a upravují chybu po chybě, ale to by měl být odstrašující příklad. Když validujete svůj web, měli byste pochopit, co jaká chyba znamená a předejít jí.

  6. 13. 02. 2006, 11:05 Kašpy napsal:

    Promiň odeslal sem to omylem - nyní k věci: ten příspěvek co jsem odeslal výše, resp. citace z tvého článku, si trošku protiřečí: první větu beru, druhá už je taková divná. Podlě mě pokud má být web validní tak musíš hledat chybu po chybě a musíš pochopit o co jde, aby jsi jí mohl odstranit a nechápu tedy proč píšeš o odstrašujícím příkladu. Validátor taky není vždy 100%-ní a ne vždy je dobré se jim řídit, je to jen informace že web "může" // nemusí být validní.

  7. 13. 02. 2006, 15:49 halogan napsal:

    [6] Ale tito fanatici tyto chyby odstraňují způsoby neslýchanými. Nastavují prázdné alty, <script type=''> apod.

  8. 13. 02. 2006, 16:32 Lukáš Havrlant napsal:

    [6] Mohu vědět, kdy validátor chybuje, tj. za jakých podmínek není stoprocentní? Zajímá mě jenom, co třeba považuješ za chybu Validátoru :-) .

    [4] Nicméně Vaše domněnky jsou v rozporu se současným stavem, tudíž by se slušelo spíše uvádět současný stav, než právě tyto Vaše domněnky, nemyslíte?

    [3] Ok, já jen aby někdo nebral validitu jako nutnost pro zobrazení XHTML :-) .

  9. 13. 02. 2006, 17:13 Kašpy napsal:

    [8] Lukáši (pokud ti mohu tykat) toto tvrzení "že validátor není vždy 100%" nepochází ode mně, já tu jen tlumočím to co jsem se dočetl a to na co přišly hytřejší hlavy než je ta má -> toto tvrd(í/il) i pixy a další, pro mě je pixy hlava v oboru a proč mu tedy nevěřit?

    [7] Dobře, špatně jsem asi pochopil smysl věty, s tim s tebou souhlasim

  10. 13. 02. 2006, 17:15 Kašpy napsal:

    Ještě bych dodal k odpovědi [8], k části proč mu tedy nevěřit? -> Samozřejmě nedá se věřit všemu co kdo napíše ale pokud si pamatuju pixy uváděl konkrétní příklad(y) - pokud to najdu dám link

  11. 13. 02. 2006, 18:32 halogan napsal:

    [10] Tady je: http://www.pixy.cz/pixylophone/2004_08_archiv.html#1091549155

  12. 13. 02. 2006, 19:08 Kašpy napsal:

    Díky, že jsi to nalezl za mě

  13. 13. 02. 2006, 21:41 Lukáš Havrlant napsal:

    [9] Jistě, můžeš :-) .

    Ale jinak stačí když si přečteš komentáře (hlavně ty od Jirky Koska - 25. a 34.), tak zjistíš, že to vlastně nejsou chyby validátoru. Validátor pracuje v těchto případech správně, i když trochu jinak, než asi autor zamýšlel.

  14. 14. 02. 2006, 09:01 Kašpy napsal:

    No znova jsem si příspěvky přečetl, ale stále budu stát za tím že 100%-ní není viz.

    |Takže například pixyho příklad ze šířkou buňky tabulky je *validní* (šířka má typ CDATA, který může obsahovat libovolný řetězec), ale *není ve shodě se specifikací*, protože v ní je napsáno, že tam má být uvedeno číslo (počet pixelů).|

    Pokud by se tedy autoři validátoru trošku více snažili, pro šířku by udělali fixní/konstantní hodnoty px.

  15. 14. 02. 2006, 16:08 Lukáš Havrlant napsal:

    [14] Kašpy: Ano, to je pravda, ale pokud to bereš za chybu, tak je to jedině chyba v DTD, není to chyba Validátoru :-) . Navíc si nejsem jistý, jestli by to vůbec v DTD nějak šlo vyjádřit (neznám, nikdy jsem si vlastní DTD nestavěl, ale IMHO kdyby to šlo, tak to tak udělali).

  16. 14. 02. 2006, 18:04 Kašpy napsal:

    Ano to s tebou souhlasim

  17. 21. 02. 2006, 18:55 Lukáš Havrlant napsal:

    Byla tady i předtím kapitolka "Chyba validátoru či nepotřebnost?" nebo to je pozdější úprava?

    Validátor kontroluje hodnoty atributů, ale zrovna atribut width má typ CDATA, což znamená, že tam může člověk napsat prakticky cokoliv. Třeba tohle validátorem neproleze dir="blbost" (atribut dir má hodnoty pouze "rtl" a "ltr"). Jinak tuhle chybu by měl objevit validátor, na který odkazuje Vilém Málek.

  18. 21. 02. 2006, 21:45 halogan napsal:

    [17] Ta kapitolka je tu celou dobu. Informace o CDATA mi je zcela nova a dekuji za ni. Jen trochu nechapu jeji podstatu a proc cloveku povoluje de-facto porusovat DTD.

  19. 21. 02. 2006, 23:53 Lukáš Havrlant napsal:

    [18] Tak to jsem ji musel minule nějak přehlédnout... No v DTD zkrátka neexistuje způsob jak definovat, že hodnota atributu může být číslo a znak (width="80%"). Takže jediná možná cesta je definovat CDATA, tedy, že může obsahovat prakticky všechno. Kdyby definovali hodnotu width jenom jako číslo, byl by zase nevalidní zápis width="80%". Možné hodnty atributů jsou zde - http://www.w3.org/TR/html4/types.html#h-6.2 Ještě tedy může mít atribut přímo výčet povolených hodnot (třeba align nebo výše zmiňovaný dir).

    Jak si tak čtu po sobě [15] - že bych to spíš minule nevěděl? :-) Taky možnost...

  20. 21. 02. 2006, 23:57 halogan napsal:

    [19] Jiste, neni to definovane v DTD, spatne jsem se vyjadril. Je to tam napsane slovne, takze clovek muze porusovat "logickou hodnotu atributu", ale nikdo si toho nevsimne.

Přidej komentář