Přeskočit na navigaci

Co je vlastně validita?

12. února 2006 15:23 | Ondřej Kokeš | 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

[1] Vilém Málek, http://interval.cz, 12. února 2006 17:51

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] Lukáš Havrlant, web, 12. února 2006 18:36

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] halogan, web, 12. února 2006 18:45

[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] Vilém Málek, http://interval.cz, 12. února 2006 19:01

[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] Kašpy, mail, 13. února 2006 11:01

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] Kašpy, mail, http://kaspy.cz, 13. února 2006 11:05

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] halogan, web, 13. února 2006 15:49

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

[8] Lukáš Havrlant, web, 13. února 2006 16:32

[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] Kašpy, mail, http://kaspy.cz, 13. února 2006 17:13

[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] Kašpy, mail, http://kaspy.cz, 13. února 2006 17:15

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] halogan, web, 13. února 2006 18:32

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

[12] Kašpy, mail, http://kaspy.cz, 13. února 2006 19:08

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

[13] Lukáš Havrlant, web, 13. února 2006 21:41

[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] Kašpy, mail, http://kaspy.cz, 14. února 2006 09:01

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] Lukáš Havrlant, web, 14. února 2006 16:08

[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] Kašpy, mail, http://kaspy.cz, 14. února 2006 18:04

Ano to s tebou souhlasim

[17] Lukáš Havrlant, web, úterý 18:55

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] halogan, web, úterý 21:45

[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] Lukáš Havrlant, web, úterý 23:53

[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] halogan, web, úterý 23:57

[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.

Nový komentář

Aktuální články

Lupa.cz»Blogy»haloganovo»Únor 2006»Co je vlastně validita?

Oblíbené stránky