Hop til indhold
Udvikling og programmering

XHTML (Extensible HyperText Markup Language)

Extensible HyperText Markup Language

XHTML, forkortelse for Extensible HyperText Markup Language, er et markupsprog til at strukturere websider. Sproget bygger videre på de velkendte tags og attributter fra HTML, men kræver at koden er skrevet efter de strengere regler i XML: alle elementer skal lukkes korrekt, attributværdier skal stå i anførselstegn, og dokumentet skal være velformet fra ende til anden. Hvor en browser traditionelt har kunnet rette op på en glemt lukketag i almindelig HTML, vil en fejl i et strengt XHTML-dokument i princippet stoppe browserens fortolkning af siden.

Et konkret eksempel: i almindelig HTML kan man skrive et linjeskift som “br” uden at lukke tagget, og en attribut kan i mange tilfælde stå uden anførselstegn. I XHTML skal det samme linjeskift skrives med en selvlukkende skråstreg, og en attribut som class skal altid skrives med anførselstegn om værdien, fx class=”eksempel”.

Baggrund: fra SGML og XML til XHTML

Både HTML og XHTML har rødder i SGML (Standard Generalized Markup Language), et ældre metasprog der bruges til at definere regler for andre markupsprog. XML blev udviklet som en enklere udgave af SGML, hvor udviklere selv kan definere deres egne tags, så længe de følger XML’s regler for struktur. XHTML opstod ved at tage HTML’s eksisterende tags og attributter og omskrive dem, så de overholder XML’s syntaks — derfor beskrives XHTML ofte som en anvendelse af XML snarere end et helt nyt sprog.

Forskellen på HTML og XHTML

Den grundlæggende forskel handler om, hvor strengt sproget håndterer fejl og skrivemåde:

  • Alle elementer skal have en lukketag i XHTML, også dem der ikke omslutter indhold, som billed- og linjeskift-tags.
  • Attributværdier skal altid stå i anførselstegn i XHTML, mens HTML ofte tillader dem uden.
  • Tags skal nestes korrekt, altså åbnes og lukkes i rigtig rækkefølge — noget browsere traditionelt har været fleksible omkring i HTML.
  • XHTML er versalfølsomt (case-sensitive), så tags og attributter skal skrives med små bogstaver, mens HTML ikke skelner mellem store og små bogstaver.
  • Et XHTML-dokument skal indledes med en DOCTYPE-erklæring og en DTD (Document Type Definition), som findes i tre udgaver: Transitional, Strict og Frameset. Samtidig skal rodelementet indeholde en xmlns-attribut, der angiver XML-navnerummet.

Reglerne betyder, at browseren i teorien kan stoppe med at vise en XHTML-side, hvis der er fejl i koden, mens en tilsvarende fejl i almindelig HTML ofte bare bliver rettet stiltiende af browseren og vist alligevel.

Hvor og hvordan er XHTML blevet brugt?

XHTML vandt frem i begyndelsen af 2000’erne som en mere struktureret afløser for HTML 4.01, blandt andet fordi W3C ønskede et sprog, hvor præsentation i højere grad blev styret af CSS, mens strukturen forblev ren og logisk. Tanken var også, at strengere kode kunne gøre det lettere at vise websider korrekt på andet end klassiske computere og webbrowsere, fx tidlige mobiltelefoner og andre apparater med begrænset regnekraft, hvor en simplere fortolker kunne forvente korrekt kode fremfor selv at skulle rette fejl undervejs.

I praksis blev XHTML dog sjældent leveret til browseren med den MIME-type, som reglerne egentlig lagde op til. Internet Explorer, som dengang var den mest udbredte browser, understøttede den korrekte MIME-type mangelfuldt, så mange udviklere endte i stedet med at sende deres XHTML-sider som almindelig HTML-tekst. Når en side hentes fra en server og serveres på den måde, bliver den reelt fortolket som HTML af browseren, og en stor del af XHTML’s fordele ved streng fejlhåndtering går dermed tabt.

XHTML i dag

XHTML’s udbredelse toppede i midten af 2000’erne, hvorefter interessen gradvist blev afløst af HTML5, der tilbød en mere tilgivende syntaks kombineret med nye funktioner til blandt andet lyd, video og semantisk opmærkning. W3C har siden trukket sine anbefalinger for de tidlige XHTML-versioner tilbage, og langt de fleste moderne websider bygger i dag på HTML5 frem for XHTML. Sproget kan i den forstand sammenlignes med andre webteknologier fra samme periode, som fx ActiveX, der også var udbredt på et tidspunkt, men i dag primært lever videre i ældre systemer og i stigende grad er afløst af nyere standarder.

Man kan stadig støde på XHTML-mærket kode i ældre systemer, valideringsværktøjer og enkelte sammenhænge hvor XML-kompatibilitet er et krav, men til nye projekter anbefales det i praksis at bruge HTML5.

Eksempel
I HTML kan et linjeskift skrives uden lukketag, men i XHTML skal det samme element altid lukkes med en selvlukkende skråstreg, og attributter skal stå i anførselstegn.
Ofte stillede spørgsmål
Hvad betyder forkortelsen XHTML?
XHTML står for Extensible HyperText Markup Language og betegner en udgave af HTML, der er omskrevet til at følge XML's strenge regler for syntaks.
Hvilke tre typer DTD findes der i XHTML 1.0?
XHTML 1.0 opererer med tre DTD-varianter: Transitional, Strict og Frameset, som hver definerer hvilke tags og attributter et dokument må indeholde.
Hvorfor mistede mange udviklere interessen for XHTML?
En stor del af interessen forsvandt, fordi browsere som Internet Explorer ikke understøttede den korrekte MIME-type for XHTML fuldt ud, hvilket tvang udviklere til at servere siderne som almindelig HTML og dermed miste fordelene ved den strenge syntaks.
Er XHTML det samme som XML?
Nej. XHTML er et konkret markupsprog bygget med HTML's tags, mens XML er et bredere metasprog, som bruges til at definere helt nye, brugerdefinerede tags til mange forskellige formål.
Bruges XHTML stadig på nye websider?
I nye projekter anvendes det sjældent, da HTML5 i dag er den dominerende standard, men ældre systemer og enkelte validerings- eller XML-værktøjer kan stadig indeholde XHTML-mærket kode.
Ligesom XHTML er ActiveX endnu et eksempel på en webteknologi, der prægede tidlige browsere, men i dag primært er historisk relevant.
ActiveX →