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