Jeg har sagt det før, og jeg sier det igjen. Html og css er noe svineri. La meg sitere fra «The Zen of Python», av Tim Peters (for å lese resten, åpne en python prompt og skriv
import this)
Errors should never pass silently.
Unless explicitly silenced.
Og der har vi antagelig mesteparten av grunnen til at jeg ikke liker html og css. Hvis du gjør noe feil stopper den nemlig ikke opp og forteller deg at det er feil, slik som et skikkelig språk gjør. Den sprenger ikke engang i ansiktet ditt, slik fortran kan finne på. Nei, den prøver etter beste evne å glatte over feilen. For å ta et eksempel:
<i><blockquote>hei</blockquote></i>
Dette er ikke gyldig html, fordi blockquote er en block-level tag, mens i er en inline tag, og du kan ikke putte en block-level tag inni en inline tag. Men alle nettleserne skjønner hva du mener, og resultatet blir antagelig som forventet. Og akkurat i dette tilfellet er det sikkert greit nok, men i mer kompliserte tilfeller, der det begynner å bli rom for tolkning, støter vi på problemer.
Her må jeg nesten ta en liten digresjon. Html, i likhet med andre språk, er ikke en ting. Det er ikke et program som heter html, for eksempel. Html er en standard (eller egentlig en bråte med standarder), som er et dokument som beskriver hvordan resultatet skal se ut når man bruker ulike deler av html. Men med standarden alene blir det ikke noe fres. Derfor har vi også nettlesere, som er programmer som kan lese html, og konvertere det til en nettside man kan se. Digresjon ferdig.
Når jeg sier at nettleseren skjønner hva du mener når du skriver ugyldig html er det naturligvis ikke html sin feil, men derimot de som skrev nettleseren. Html-standarden spesifiserer neppe (håper jeg, jeg har ikke sjekket) at ugyldig html skal være tillatt, men det er det altså som regel. Problemet da er at når standarden ikke gjelder, er det mer opp til hver enkelt hvordan man skal tolke resultatet, og når man begynner å rote seg bort i litt mer intrikate feil betyr det at resultatet fort kan bli at man får opp noe som ser helt feil ut, men der det ikke er åpenbart hvor feilen ligger, for ikke å snakke om at resultatet kan se helt forskjellig ut i forskjellige nettlesere. Alt dette kan bidra til å gjøre det til et aldri så lite helvete å finne små tullefeil i html og/eller css. Feil man lett hadde oppdaget hvis nettleseren hadde gjort det eneste riktige, nemlig å sprenge i ansiktet ditt med en gang den fant en feil. Eventuelt fortalt deg hvor feilen ligger.
Så hvorfor gjør ikke nettleseren det? Vel, hvis man skal lage en nettleser i dag vil det være et meget dårlig bissniss-avgjørelse å ikke vise sider med feil i kildekoden. Jeg gjetter forsiktig på at 95% av alle sider på nettet har en eller flere (helst flere) feil i kildekoden (bare gå til
validator.w3.org, og putt inn adressen til en side du tror er bra, så får du se), så før man kan begynne å være streng har man et arbeid å gjøre. Jeg vil imidlertid også gjette på at denne situasjonen har oppstått fordi nettlesere er så sloppy med hva de tillater, skjønt det er mulig jeg har feil, og at den egentlige grunnen er noe med manglende standarder i gamle dager og slikt. Uansett, det eneste som kan redde oss er xhtml, servet som application/xml, for da sprenger det faktisk i ansiktet ditt om du har en aldri så liten feil. Men personlig har jeg mer tro på html5. Utdyping følger kanskje senere.
-Tor Nordam
Comments