Bruger du XHTML, gør du det nok forkert!

Posted on 23.11.2007 by Kim N. Lesmer.
Hvis du bruger XHTML, er sandsynligheden meget stor for at du gør det forkert. XHTML skal fremvises med den rigtige Internet Media Type før at det kan være XHTML, og de fleste servere fremviser XHTML med en "text/html" Internet Media Type, hvilket betyder at dokumentet bliver læst af browseren som almindeligt HTML, og det er selvom at du bruger en DTD, der siger, at det er XHTML.

Fakta

Lad os starte med at sætte nogle fakta på plads:

  • XHTML virker ikke med Internet Explorer 6 og 7, og det vil heller ikke blive understøttet i version 8.
  • XHTML 1.1 må ikke fremvises med en Internet Media Type, der hedder "text/html".
  • XHTML 1.0 må gerne fremvises med en Internet Media Type, der hedder "text/html", men så er det ikke XHTML, men derimod almindeligt HTML.
  • XHTML har ikke fuld understøttelse i de forskellige browsere. Selv ikke Mozilla Firefox understøtter 100% XHTML.
  • Der er flere problemer forbundet med brugen af XHTML herunder problemer med CSS, Javascript, DOM og incremental rendering.
  • Den eneste grund til at bruge XHTML er når man reelt benytter sig at den ekstra understøttelse, som XHTML giver. Det drejer sig bl.a. om teknologier som MathML, SVG og Ruby markup. Hvis man ikke gør brug af en af disse teknologier er brugen af XHTML fremfor HTML overflødig.
  • Samtlige browser producenter anbefaler HTML og ikke XHTML.
  • HTML er ikke død. HTML5 er under udvikling.

Hvad er Internet Media Type?

Mime Type, Internet Media Type eller Content Type bruges til at identificere indhold på Internettet. På http://en.wikipedia.org/wiki/Internet_media_type kan du se en liste over de forskellige slags.

En media type er en tekst streng der indeholder mindst to dele: En type deklaration og en undertype deklaration. En typisk og meget brugt media type er f.eks. text/html, der bruges til at beskrive at indholdet består af HTML tekst. En anden media type er text/plain der beskriver at indholdet består af rent tekst.

Problemet med XHTML

Når du udvikler hjemmesider eller dokumenter i (X)HTML, skal du ikke alene sikre at dine dokumenter har den rette DOCTYPE deklaration, men du skal også sikre at dine dokumenter bliver leveret af serveren med den rette Internet Media Type!

Hvis du bruger DOCTYPE XHTML 1.1 eller XHTML 1.0, men samtidig bruger en server der bruger en Internet Media Type, der hedder text/html, så vil dine dokumenter blive præsenteret til browseren som værende HTML og ikke XHTML!

Hvis du kan få serveren til at bruge den rette Internet Media Type til XHTML, som er application/xhtml+xml, enten ved at ændre på serverens konfiguration eller ved at bruge et serverbaseret scriptsprog som PHP eller ASP, så vil dine dokumenter blive leveret som XHTML, men så kan de tilgengæld ikke vises i Internet Explorer 6 eller 7, og der vil være forskellige problemer i nogle af de andre browsere afhængig af hvilke funktioner dine dokumenter benytter sig af.

Teori kontra den virkelige verden

Da XHTML kom frem blev det præsenteret som afløseren til HTML og eftersom XHTML er XML, er der også nogle gode muligheder med det.

I teorien virker alt perfekt, og samtlige browsere bør overholde standarderne, og alle udviklere skal bruge de rette sprog til de rette opgaver. Men i den virkelige verden ser tingene helt anderledes ud. Intet virker perfekt. Ingen af browserne overholder standarderne 100%. Kun et fåtal af udviklere bruger de rette sprog til de rette opgaver. Og rent faktisk er det ikke muligt for en browser at være bagud kompatibel med HTML hvis den kun skal behandle rent XHTML.

Standarder er en god ting, og jeg er selv fortaler for dem, uanset hvilken teknologi der er tale om. Men verden roterer uafhængig af standarder, og det betyder i praksis at standarder ofte ikke overholdes eller respekteres. I nogle tilfælde er det godt, i andre tilfælde er det skidt.

Indenfor IT teknologi er standarder gode for forbrugerne. Når virksomhederne enes om at udvikle produkterne efter en bestemt standard betyder det at man kan bruge de forskellige producenters produkter til de samme ting. Hvis man f.eks. ikke havde enes om en standard indenfor DVD ville det betyde, at man kun kunne bruge en bestemt slags DVD film til en bestemt slags DVD afspiller.

Indenfor Internettet er standarderne også en god idé, men de overholdes ikke i praksis, og Microsoft er den største problemstifter på dette område. W3C fastlægger standarder til brug på Internettet, men producenterne af browserne kan ikke tvinges til at overholde standarden, og resultatet er at man som udvikler skal tage hensyn til utroligt mange detaljer hvis man vil udvikle et kvalitets produkt.

Nu er der så nok nogen der siger: "Jamen, jeg bruger XHTML med Internet Media Type text/html, og det virker fint!" og igen er der andre der siger: "Jeg følger slet ikke nogen standard og mine hjemmesider virker både i Internet Explorer og i Mozilla Firefox!"

Her kommer hvorfor din side virker alligevel..

Quirks mode vs. standards compliance mode

Quirks mode er en metode der bruges af browser producenter til at sikre, at ældre hjemmesider på Internettet bliver vist på en måde hvor man stadig kan bruge dem.

Quirks mode gør at browseren simulerer forskellige fejl, primært fejl der oprindeligt var en del af Internet Explorer, for at sikre at indholdet vises sådan som det oprindeligt blev vist. Quirks mode bruges også til nutidige hjemmesider der ikke er lavet korrekt, og metoden fungere ved at browseren gætter indholdet på hjemmesiden.

Quirks mode ville ikke være nødvendigt hvis samtlige hjemmesider blev udviklet efter standarden. Quirks mode kommer kun til syne når en hjemmeside ikke er opbygget korrekt efter standarden, og man kan groft sige det sådan: Den eneste grund til at din hjemmeside virker rigtigt, selvom den ikke overholder standarden, er på grund af at browseren går i quirks mode. Hvis browserne ikke kunne gå i quirks mode så ville alle de hjemmesider der ikke overholder standarden, ikke kunne blive vist korrekt i browseren.

Hvis du udvikler hjemmesider og ikke overholder standarden, men bare synes at det er helt fint, så skal du vide at den eneste grund til at din hjemmeside ikke bliver fremvist som en gang "tag suppe", skyldes at browseren "tilgiver dig" når den går i quirks mode. Tilgengæld vil din hjemmeside ikke være helt ens i de forskellige browsere, og der er nogen som den slet ikke vil virke i. Implementeringen af quirks mode er forskellig fra browser til browser.

Fakta er at din hjemmeside er ikke lavet korrekt hvis den får browseren til at køre i quirks mode!

Standard compliance mode er den mode som browseren bruger til at vise en hjemmeside, når hjemmesiden overholder standarden. Og med samtlige nyere browsere overholdes standarden til HTML 4.01 Strict, hvilket betyder at du vil få en ens udseende hjemmeside uden fejl, hvis du overholder den standard. Internet Explorer 6 har dog en del problemer selv med HTML 4.01 Strict, og det skyldes at det er en meget fejlbehæftet browser.

Hvordan skal jeg gøre det rigtigt?

Det første du skal sikre dig er, at du vælger XHTML eller HTML ud fra behovet på selve hjemmesiden. Hvis du ikke specifikt har brug for funktioner der kun understøttes af XHTML, så skal du altid bruge HTML.

Hvis du har brug for funktioner der kun understøttes af XHTML, så skal du sikre dig at serveren virker med den rette Internet Media Type, da det ellers alligevel bliver til HTML. Og du skal samtidig sikre dig at du ved hvad du skal stille op med alle de browsere, herunder Internet Explorer 6 og 7, og også den kommende 8, der ikke virker med XHTML.

Efterfølgende skal du vælge en standard sådan at du kan få browseren til at køre i "standard compliance mode", og så du kan sikre at du ikke laver "tag suppe". Hvis du bruger HTML, skal du vælge HTML 4.01 Strict som din standard, da standarden "transitional" også vil få browseren til at køre i quirks mode.

Set dig ind i brugervenligs standarderne udviklet i forbindelse med internetguruen Jakob Nielsens undersøgelser på folks Internet vaner. Disse undersøgelser tager udgangspunkt i den virkelige verdens brug af Internettet, og de er meget værdifulde for den kvalitetsbevidste udvikler. Undersøgelserne viser hvordan folk bruger Internettet, og de sikrer at du udvikler dine hjemmesider på en måde, der stemmer overens med folks vaner. Nogle vaner ændre sig med tiden, mens andre er baseret på faste og uforanderlige menneskelige behov. En af de meget kendte regler er at du bruger de rigtige dokumenttyper til de rigtige ting. Som eksempel kan nævnes at det er meget uhensigtsmæssigt, at man bruger DOC formatet til artikler. DOC formatet er beregnet til at skrive dokumenter i Microsoft Word ikke til at læse artikler på Internettet.

På nuværende tidspunkt viser statistikken at omkring 36% af brugerne gør brug af Mozilla Firefox, mens 34.5% bruger Internet Explorer 6, og 21% gør brug af Internet Explorer 7. 1.7% gør brug af Safari, og 1.6% gør brug af Opera. Omkring 5.5% bruger andre løsninger.

Skal du tage hensyn til den lille gruppe på kun 1.6% der bruger Opera? Det kommer an på hvem din målgruppe på Internettet er. Hvis hjemmesiden som du udvikler, har et politisk budskab og dermed et budskab som du ønsker, skal nå bredt ud, så er det ikke kun vigtigt, men også nødvendigt, at du tager hensyn til 1.6%. Ud af tusind besøgende vil 16 mennesker høre til den gruppe. Ud af titusinde besøgende bliver 1.6% til 160 mennesker, og det er mange mennesker, men du bestemmer selv.

Internet Explorer dur ikke til udvikling

Internet Explorer er en non-standard compliance browser, hvilket betyder at browseren ikke overholder standarden.

De fleste der udvikler på Windows platformen har en rigtig slem vane for at teste deres design i Internet Explorer, og først når designet er ved at være færdigt, så bliver det testet i andre browsere. Når designet så ser forkert ud i de andre browsere, så tror de at det skyldes fejl i de andre browsere, men i virkeligheden skyldes det at det de har lavet er fejlbehæftet.

Hvis du starter med at teste dit design i Safari eller Firefox, så er du sikker på at det ser ud som det skal, i en browser der overholder standarden. Hvis det derefter ikke virker rigtigt i Internet Explorer må du forsøge at finde løsninger til problemet.

Verden går ikke under uden standarder

Afslutningsvis skal det nævnes at selvom det er vigtigt, at indholdet på hjemmesiderne er korrekt opbygget, og at standarderne er overholdt, så betyder det ikke at verden går under fordi en standard ikke overholdes i alle detaljer, men grunden til at bryde standarden skal aldrig være dovenskab eller inkompetence, der skal være en god grund.

OpenBSD der bl.a. udvikler verdens mest sikre Unix lignende Open Source operativsystem går meget op i standarder, kvalitet og sikkerhed, alligevel overholder deres hjemmeside ikke W3C standarderne. Årsagen er den simple at de gerne vil have, at hjemmesiden virker i alle browsere, og i en masse PDA'er og andre klienter. Hvis man skal tage hensyn til så mange klienter som OpenBSD ønsker, kan man ikke overholde standarden fordi end ikke standarden tager den slags hensyn. Men her taler vi også om en rigtig god grund til at bryde den, og deres hjemmeside virker ens i stort set alt.