Jorin jutut / seitti

HTML-validaattori - mikä se on

Tämä teksti selittää mikä on validaattori ja mitä hyötyä sen käytöstä on. Lisäksi kerrotaan mitä validaattorit eivät osaa ja miksi pelkkä validaattorin hyväksyntä ei takaa HTML-dokumentin toimivuutta eri selaimissa. Lukijan odotetaan tietävän jo entuudestaan mikä on HTML-kieli.

Mikä on validaattori

Ihminen osaa yleensä tulkita virheellisen tekstin, esimerkiksi "Mätnysalo" ymmärretään tämän tekstin kirjoittajaksi. Tietokone ei tällaista osaa, ja sen vuoksi kaiken tietokoneelle annettavan syötteen pitää olla jotain hyvin tarkasti määrättyä muotoa.

HTML-kielelle on määritelty tarkka kielioppi. Esimerkiksi <B><H1>Otsikko</H1></B> on virheellinen määrittely, oikea muoto olisi <H1><B>Otsikko</B></H1>. Validaattori on ohjelma, joka tarkistaa HTML-sivun noudattavan kielioppia.

Miksi sivu pitää validoida

Monet selaimet yrittävät parhaan kykynsä mukaan tulkita virheellistä HTML-kieltä. Eri selainten kyvyt eroavat toisistaan. Esimerkiksi puuttuva </TABLE> estää sivun näkymisen Netscapessa, mutta ei useinkaan haittaa Microsoftin Internet Explorerissa. Opera taas ei näytä punaisella tekstiä, joka on tehty näin: <FONT FACE="red"><P>Kappale<P>Toinen kappale</FONT>, mutta Netscape ja Internet Explorer näyttävät molemmat kappaleet halutulla värillä.

Miksei sitten riitä testata sivu kaikilla selaimilla? Ensinnäkin "kaikki" on paljon laajempi käsite kuin voisit luulla. Selaimia on kymmeniä ja pelkästään Netscapestakin vielä erikseen Windows-, Linux- ja Macintosh-versio. Toiseksi, vaikka jotenkin voisit kokeilla kaikkia selaimia, et voi tietää tulevaisuusta. Validius on paras tae siitä, että sivu toimii myös seuraavalla selainversiolla. Janne Pirinen kirjoitti joskus uutisryhmässä sfnet.viestinta.www:

Koin itse kantapään kautta validin HTML:n tarpeen kun Internet Explorerin versio 5 ilmestyi: jouduin kirjoittamaan yli puolet nelosversiossa ja netskaapissa kivasti toimineista sivuistani uusiksi.

Validaattori ei ole oikotie onneen

Selaimissa on ohjelmointivirheitä. </TR> -tagin ei pitäisi koskaan olla välttämätön HTML-kieliopin mukaan. Netscape ei kuitenkaan näytä sisäkkäisiä taulukoita oikein, ellei </TR> -tageja käytä sisemmässä taulukossa.

Kaikki selaimet eivät näytä kaikkia HTML-kielen elementtejä. Vanhimmat Netscapet eivät näytä taulukon solun taustaväriä. Siispä tämä on täysin validia, mutta joillakin lukijoilla toimimatonta koodia:

<BODY BGCOLOR="red" TEXT= . . . >
<TABLE><TR><TD BGCOLOR="blue"><FONT COLOR="red">Tässä on tekstiä . . .

Esimerkissä koko sivun taustaväri on punainen ja taulukon solussa on sinisellä taustalla punaista tekstiä. Valitettavasti jollakin lukijalla tulos onkin punaista tekstiä punaisella taustalla.

Validaattori ei myöskään tarkista esimerkiksi linkkien toimivuutta, eikä edes linkin muodollista oikeellisuutta. Samoin tyylimäärittelyt (CSS) validaattori jättää kokonaan huomiotta. Edelleen puuttuva kuvatiedosto ja moni muu asia ei näy validaattorin tuloksissa. Näitäkin varten tosin on olemassa automaattisia tarkistustyökaluja, kuten Netmechanic.

Mitä ovat HTML-kielen versiot

HTML-kielestä on julkaistu eri versioita. Uudemmissa versioissa on enemmän tageja ja tageilla enemmän määritteitä. Kaikkein uusimmassa versiossa on poistettu monia tageja, joita vastaavan toiminnallisuuden voi paremmin toteuttaa tyylitiedostojen avulla.

Käytettävä versio ilmoitetaan HTML-dokumentin ensimmäisellä rivillä olevalla DTD-määrittelyllä. Luultavasti haluat käyttää uusinta versiota, joka merkitään
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
tai "löyhempää" versiota, jonka sisältämät ominaisuudet voivat poistua tulevista HTML-kielen versioista. Se merkitään
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

DOCTYPEä ei aikaisemmin käyttänyt mikään selain mitenkään hyväkseen. Nykyään ainakin Internet Explorer ja Netscape 6 (alias Mozilla) käyttävät sitä päätelläkseen pitääkö sivu näyttää standardin mukaisesti vaiko matkitaanko vanhempien selainversioiden bugeja. Tästä löytyy lisätietoa jutussa Activating the Right Layout Mode in Mozilla, Mac IE 5 and Windows IE 6.

Pitääkö sivun olla validi

Edellisen perusteella voisi luulla, että sivun pitää aina olla validi. Joissakin selaimissa on omia lisäyksiään HTML-kieleen. Yleensä sellaisten käytöstä ei ole haittaa, muut selaimet jättävät tuntemattomat tagit huomiotta. <BLINK> toimii Netscapessa, mutta ei kuulu viralliseen HTML-määrittelyyn. Muut selaimet ohittavat määrittelyn, eikä se siis haittaa. (Yleensä vilkkuva teksti ärsyttää, mutta se ei liity tässä käsiteltävään asiaan.)

Joskus on pakko käyttää viralliseen standardiin kuulumattomia tageja. Tyyppiesimerkki on MSIE:n tapa esittää aa viiva bee niin, että bee tulee uudelle riville. Tämän voi estää <NOBR>-tagilla. Jukka Korpelan kirjoituksessa on selitetty miten tällainen dokumentti validoidaan

Johtopäätökset

HTML-dokumentti kannattaa validoida. Sen lisäksi sivua pitäisi katsoa ainakin muutamalla eri selaimella, koska validi sivukin voi näkyä ei-toivotulla tavalla jossain selaimessa. Sivun ei tarvitse olla validi, mutta tekijän pitää ymmärtää miksi validaattori ilmoittaa virheestä, ja mitä virhe merkitsee eri selaimissa.


Mistä löytyy validaattoreita

Toimiva suomenkielinen validaattori on ainakin Sami Lempisen tekemä LeHTori. Paljon käytettyjä ovat myös WDG:n validaattori, joka osaa validoida kokonaisen sivuston kerralla ja pystyy käyttämään myös itse määriteltyä DTD:tä, ja W3C:n versio aiheesta. WDG:n sivustolta löytyy lista monesta validaattorista.

Linkkejä aiheesta

Yleisin syy validaattorien ilmoituksiin virheistä lienee lohkotason ja tekstitason elementtien sekoittaminen. Tästä löytyy lisätietoa Jukka Korpelan HTML-oppaasta. Selkeä esitys siitä, mitä validoimattomista sivuista seuraa on "Four reasons to validate your site." Tietoa HTML-kielen eri versioista löytyy uutisryhmälle sfnet.viestinta.www kirjoitetusta VUKK-tiedostosta.

Muita samantapaisia juttuja kuin tämä ovat ainakin Osmo Saarikummun Mitä on validointi? ja Jukka Korpelan "HTML validation" is just a tool.