XHTML eller HTML doctype ?

Diskusjonen rundt dette temaet har pågått i mange år og man blir vel aldri helt enige om hva som er mest riktig. Dette er naturligvis et resultat av at vi er på vei fra en standard til en annen og at ting tar litt tid når flere millioner pc-brukere skal bytte nettlesere og gjøre seg klar for en ny standard på nettet. I denne artikkelen forklares det litt hva XHTML egentlig er og litt argumenter for og mot bruken av det.

XHTML eller HTML?

Hvert element i et markup språk har en relasjon til andre elementer i samme språk. Relasjonen mellom elementene definerer strukturen av data. En dokument type definisjon (Document Type Definition, DTD) gir en formell definisjon av elementer og tilhørende attributter for dokumentets struktur. En DOCTYPE (dokumenttype) er en angivelse som bør stå øverst i alle dine dokumenter og skal identifisere hvilken DTD du bruker. W3C har definert en rekke DTD’er som kan brukes for å publisere dokumenter på internett. To av de mest vanlige er HTML og XHTML og om disse skal være såkalt Strict eller Transitional.

HTML 4.01 er den nyeste versjonen av HTML definert av W3C. Det vil trolig ikke komme noen nyere versjon av HTML ettersom XHTML tar over. HTML er fremdeles en gyldig standard og siden det finnes millioner av dokumenter på nettet som er av typen HTML så vil denne standarden være gyldig i mange år fremover. På grunn av den dårlige støtten for XHTML i de siste versjonene av Internet Explorer (den mest brukte nettleseren i verden), så er HTML 4.01 fremdeles et godt velg for de som lager websider. XHTML har den fordelen at koden må være korrekt formet og den kan lastes inn i en XML-parser som igjen kan manipulere dataene med alle fordelene XML har med seg. Men finnes det noen god grunn til å bruke XHTML hvis du ikke skal dra nytte av noen XML-verktøy. Overgangen fra HTML til XHTML er rett og slett en måte å få dokumentene til å inneholde korrekt kode (markup). Kort oppsummert er det ingen fordeler ved å bruke XHTML slik internett er i dag.

Det ser ut til å være en utbredt misforståelse at XHTML Transitional DOCTYPE er laget for å gjøre at utviklere konverterer fra HTML til XHTML. Det er tull, siden HTML 4.01 DTD og XHTML 1.0 DTD er veldig like. Den eneste forskjellen er at XHTML dokumenter MÅ være korrekt kodet slik XML krever uansett om man bruker Transitional eller Strict. Så hvilken DOCTYPE skal jeg velge? HTML 4.01 Strict DOCTYPE er nok for de fleste et bedre valg enn XHTML Transitional, fordi XHTML ikke godtar elementer som font og presentajonsattributter som align. XHTML Transitional hjelper deg bare med å sørge for at dokumentet ditt er korrekt kodet.

Når det er sagt så er fakta at veldig mange sider som produseres i dag bruker XHTML Transitional DOCTYPE. I følge W3C er XHTML Transitional en gyldig standard og de skulle vel vite hva de prater om. Poenget er at XHTML egentlig er et XML-format og bør dermed sendes som XML vha mime-typen application/xhtml+xml. Men det er her det stopper for mange nettlesere. Derfor har W3C gått ut med noen anbefalinger om hvordan man skal forholde seg til dette.

Media types summary for serving XHTML documents
Media type HTML 4 XHTML 1.0 (HTML compatible) XHTML 1.0 (other) XHTML Basic / 1.1 XHTML+MathML
text/html SHOULD MAY SHOULD NOT SHOULD NOT SHOULD NOT
application/xhtml+xml MUST NOT SHOULD SHOULD SHOULD SHOULD
application/xml MUST NOT MAY MAY MAY MAY
text/xml MUST NOT MAY MAY MAY MAY

Anbefalingene fra W3 sier helt klart at man kan servere XHTML dokumenter som text/html i noen tilfeller, men de bruker ordet may, mens de skriver at man should servere xhtml som application/xhtml+xml.

Tanken om å bruke XHTML som det foretrukne dokumenttypen er god. HTML ble laget for å presentere data mens XML er designet til å beskrive data. Med kombinasjonen XHTML og CSS vil man kunne skille helt mellom data og presentasjon. Et annet argument er som nevnt tidligere muligheten til å behandle disse dokumentene som xml-filer og dermed dra nytte av de funksjonene xml har. Dette vil man bl.a. få nytte av dersom man ønsker å presentere sine dokumenter på andre enheter enn pc.

Siden det er gyldig å servere XHTML dokumenter som text/html så er det ingenting i veien for å faktisk gjøre det. Konklusjonen må vel være at det egentlig ikke spiller så veldig stor rolle. Dersom du vet hva du driver med så er det egentlig bare å bruke den dokumenttypen du foretrekker. Dersom du ikke aner hva mime-type og doctype er, så er nok HTML 4.01 løsningen for deg.

De ulike doctype’s

  • HTML 4.01 Transitional
    <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
  • HTML 4.01 Frameset
    <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”>
  • HTML 4.01 Strict
    <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
  • XHTML 1.0 Transitional
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
  • XHTML 1.0 Frameset
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”>
  • XHTML 1.0 Strict
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
  • XHTML 1.1
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
  • XHTML Basic 1.0
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML Basic 1.0//EN” “http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd”>
  • XHTML Basic 1.1
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML Basic 1.1//EN” “http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd”>