Hopp til innholdet

cjohansen.no

Hvorfor bruker vi XHTML?

Allerede tilbake i 2002 påpekte ildsjeler mangler ved - og forlot - XHTML slik mange av oss fortsatt bruker det idag. Selv har jeg mange ganger de siste årene vurdert å bytte tilbake til HTML 4.01 Strict. Hvorfor bruker vi fortsatt XHTML?

XHTML kom... og gikk?

Det begynner å bli klart for de fleste at XHTML - ihvertfall i sin nåværende form - ikke kommer til å redde verden med det første. HTML 4.01 er fortsatt bredt i bruk, og med HTML5 som nærmeste nye standard kommer ikke HTML til å forsvinne veldig snart.

Stadig flere XHTML-entusiaster har de siste årene har gått tilbake til HTML 4.01. Hva er problemet med XHTML, og hvis de er så store at vi ikke kan bruke XHTML - hvorfor har ikke alle gått tilbake til HTML 4.01?

Misforståelser rundt XHTML

XHTML vokste frem parallellt med arbeid for å øke kunnskap og bevissthet om webstandarder, tilgjengelighet og mange av best practice-retningslinjene som mange av oss følger idag. Samtidig har W3C jobbet for at XHTML skulle bli det nye lingua franca på nettet.

Disse to aspektene kan nok delvis være med på å forklare hvorfor XHTML har fått så godt fotfeste - og ikke minst blitt tilskrevet fordeler som ikke hører XHTML til. En eldre artikkel hos techrepublic.com (2005) gir ett eksempel på dette. I denne artikkelen påstås det at XHTML blant annet

"XHTML er striktere enn HTML"

Dette er en påstand som med riktig forutsetning forsåvidt stemmer. XHTML har, i kraft av å være XML, strengere definerte regler for å være velformet. De viktigste syntaktiske forskjellene er:

Noen flere subtile forskjeller finnes, og jeg kommer tilbake til disse.

Samtidig er også HTML av og til mer presist. Som Tina Holmboe trekker frem i sin omstendelige artikkel denne uka, kan HTML f.eks spesifisere at et form-element ikke kan inneholde et annet form-element mens XHTML ikke har denne muligheten.

Teknisk sett er XHTML-syntaks striktere enn HTML fordi parseren tillater færre unntak, og fordi XML-parsere benytter seg av drakonsk feilhåndtering. Men, ofte er det ikke dette folk tenker på når de kommer med denne påstanden, det er snarere neste punkt på lista:

"XHTML gir bedre skille mellom struktur og design"

Dette er den største misforståelsen som har kommet ut av at XHTML vokste opp sammen med webstandard-bevegelsen.

Skille mellom design og struktur oppstår når vi rensker dokumenter for formatteringsinnstruksjoner så som font-tagger, bgcolor-attributter, style-attributter og mer, og heller benytter (ekstern) CSS for disse tingene. Ved å kode dokumentet med semantisk markup drar vi ytterligere nytte av verdiene i å skille design og struktur. Men dette har ingenting med XHTML å gjøre. Det har noe med DOCTYPE å gjøre.

Da jeg skrev utkast til en sjekkliste for gode grensesnitt, skrev jeg:

HTML eller XHTML er langt mindre viktig enn at det brukes en strict DOCTYPE fremfor en transitional en.

Et søk på advantages of xhtml ga meg følgende sitat, som jeg føler godt oppsummerer holdningen til XHTML blant mindre teknisk opplyste mennesker:

So in retrospect, XHTML shows professionalism and is the future of the World Wide Web. So why not stay ahead of the game and switch over now It is worth your time, believe me.

Fordelene med XHTML

De faktiske fordelene med XHTML viser seg stort sett gjennom at XHTML er en XML-applikasjon, og dermed kan dra nytte av blant annet

Innholdstyper, XML og "tagsoup"

For å dra nytte av fordelene over må nettleseren behandle XHTML-dokumentet som XML. Dette er ikke tilfelle for de aller fleste XHTML-dokumenter på nett idag. Istedet behandles de som "tagsoup", stort sett fordi det er det de blir servert som. Når dokumentene behandles som tagsoup kan man ikke blande inn f.eks. MathML og man får for en del subtile ting med HTML-semantikk fremfor XHTML-semantikk (se nedenfor).

For at dokumentet skal tolkes som XML, så må en av de tiilgjengelige mime-typene for XHTML benyttes, den mest aktuelle er application/xhtml+xml. Husk at mime-typen må sendes via Content-Type-headeren fra serveren. Å legge dette i en meta-tag er ikke godt nok.

Når nettleseren så behandler dokumentet som XHTML kan du begynne å virkelig dra nytte av fordelene over.

Internet Explorer og XHTML i det virkelige liv

Desverre er det ikke "bare" å gjøre som beskrevet over. Det viser seg nemlig at Internet Explorer, tilogmed versjon 8, støtter ikke XHTML. I det hele tatt. Derfor vil et dokument sendt som application/xhtml+xml resultere i en nedlastingsforespørsel i Internet Explorer.

Dette, sammen med faktumet at draonsk feilhåndtering sjelden anses som være positvt hverken for brukere eller business, er grunnen til at XHTML idag sendes som text/html, akkurat som HTML. Dette gjør også at XHTML-dokumenter idag for det meste behandles som HTML-dokumenter, eller tilogmed "tagsoup" ettersom XHTML ofte er "ødelagt" HTML:

"Content negotiaton"

Tilstandene for XHTML er idag altså smått sørgelige. Enkelte har tydd til såkalt content negotiation, hvor dokumenter sendes som XML til nettlesere som støtter det (dette sjekkes via Accept-headeren), og som HTML til andre. Ofte impliserer dette også at dokumentet må gjennom en transformasjon av noe slag for å utligne de syntaktiske forskjellene.

Enden på visa er at du fortsatt ikke blir kvitt feilhåndteringen i XML-representasjonen, og du kan heller ikke gjøre utstrakt bruk av XHTMLs egenskaper som XML med mindre du er klar for å droppe IE-publikummet totalt. Bortkasta energi spør du meg.

HTML5 og XHTML5

En av lovnadene som gjorde at vi lenge brukte XHTML i "kompatibilitetsmodus" var at XML er fremtiden, og XHTML blir fremtidens lingua franca på nettet. Når vi nå ser at HTML i form av HTML5 kommer til overleve et tiår eller to til så forsvinner på en måte det argumentet.

HTML5 kommer også med en XML-serialisering, XHTML5. Såvidt meg bekjent er det ikke en mulighet å sende XHTML5 som text/html, da må du bruke HTML5. Så XHTML5 vil kjempe mot de samme utfordringene som XHTML1 og 1.1 har idag. Spesielt dersom IE fortsetter å holde på så mange brukere, og ikke begynner å støtte XHTML.

For utviklerne

Jeg har tidligere vært inne på at XHTML servert som XML kan være et nyttig hjelpemiddel for (grensesnitts)utviklere fordi det letter jobben vår. Feilhåndteringen er altså fordelaktig når man ønsker å komme feilene i forkjøpet.

Videre er syntaks-reglene for XHTML langt lettere å jobbe med, fordi de ikke levner noen tvil om hva meningen er. Idéellt sett skal heller ikke HTML-syntaks gjøre det, men å jobbe med en parser som tar lett på manglende slutt-tagger osv kan fort bli slitsomt.

Ettersom vi har sett at XHTML idag ikke fungerer på en måte som gir oss tilgang til XML-verktøyene (ihvertfall på klientsiden), kommer fordelene ved XHTML ned til syntaks og komfortabilitet for utvikleren.

Noen ord til forsvar for XHTML

Det kan virke som om jeg er svært skeptisk til XHTML i dette innlegget - noe som sannsynligvis fremstår som merkverdig ettersom jeg bare for to uker siden relanserte bloggen med XHTML 1.0 Strict. Vel, dette er et forsøke på å belyse saken "XHTML vs HTML", og selvom jeg enn så lenge holder meg til XHTML er det lettere å komme opp med argumenter den andre veien.

Det er vanskelig å komme med noen gode argumenter for hvorfor XHTML bør foretrekkes fremfor HTML hvis man skal gjøre dette i lys av brukeren fremfor utvikleren. På den annen side så vil heller ikke XHTML som text/html gjøre noen skade dersom det er implementert skikkelig. Med dette i bakhodet kan argumentene fra utvikleren kanskje være gode nok?

Hva gjør folk i den store verden?

Jeg begynte dette innlegget med å nevne at mange allerede har forlatt XHTML og byttet tilbake til HTML 4.01. Noen eksempler på folk som har gjort dette er:

Andre holder seg til XHTML:

Merk at både A List Apart og relaterte zeldman.com benytter seg av en transitional DOCTYPE. Jeg skal være forsiktig med å slenge med leppa mot disse dinosaurene, men jeg kan ikke hjelpe å undre meg om dette er en slags misoppfattet form for overgang. Jeg kan ikke se så mange elementer ved feks ALAs design som krever transitional DOCTYPE for å fungere i dagens nettlesere. Det virker nesten som om de mener at det er en rolig overgang fra HTML til XHTML, men det er jo slettes ikke dette som ligger i en transitional DOCTYPE. Men, dette er bare ondsinnet spekulering fra min side.

Hva gjør du?

Vi har fått saken "XHTML vs HTML" belyst fra mange vinkler nå, og spørsmålet er hva gjør du? Hva bruker du idag, og hvorfor? Jeg håper dere blir mer i diskusjonen i kommentarene eller på andre måter, for jeg ønsker å se flere argumenter rundt disse tingene.

Selv bruker jeg som dere ser fortsatt XHTML, men har som nevnt lenge vært i tvil om jeg burde bytte tilbake. Om HTML5 blir det mest realistiske verktøyet fremover uansett er det på en måte bare å hoppe i det. Jeg tror noe av det som holder meg igjen er at å gå tilbake føles noe som et nederlag, og at man innrømmer feil. Men egentlig er det ikke så dramatisk - vårt fagfelt får nye best practices hver dag, og kun ved å ikke endre sine vaner kan man sakke akterut.

Jeg er ellers en stor tilhenger av syntaksen og utvikler-fordelene. Uansett tror jeg det er fullt rom for å levere HTML til ett prosjekt og XHTML til et annet så lenge man vet hva man holder på med og gjør det som passer situasjonen best.

Ian Hixie, som er en av nøkkelpersonene bak HTML5 skrev i 2002 en lang "rant" om hvorfor XHTML som text/html nesten aldri er en god idé. Jeg har derfor noen spørsmål til de av dere som fortsatt bruker XHTML. Er dere klar over, og bevisste på disse mer subtile forskjellene mellom XHTML og HTML?

Når XHTML sendes som text/html får man i de fleste tilfeller HTML-semantikk, noe som kan gjøre det vanskelig å lage faktiske "HTML-kompatible XHTML-dokumenter.

Selvom du tar hensyn til punktene over - hvor bevisst er du på at tredjepartskode gjør dette riktig? Er du sikker på at annonse- og statistikkscriptene dine fungerer dersom dokumentet ditt virkelig behandles som XML?

Så - hva gjør du, og hvorfor? Hva når HTML5 er den gjeldende standarden - velger du HTML5 eller XHTML5?

Muligens relatert