Hopp til innholdet

cjohansen.no

application/xhtml+xml som utviklingsverktøy

Jeg og flere andre har tidligere slått fast at XHTML som XML ikke er godt egnet i produksjon idag. Men som utviklingsverktøy kan det fungere glimrende.

I "XHTML som XML" påpekte jeg noen forskjeller mellom XHTML og HTML som blir tydelige først når XHTML-dokumentet behandles som XML:

CSS

Javascript

Mange er ikke klar over disse forskjellene, og derfor vil mange XHTML-sider på dagens nett ikke overleve dersom man bare bytter MIME-type. Dermed er ikke siden i sin helhet gyldig XHTML.

For mange er dette et kjent problem som de er villige til å leve med; XHTML servert som HTML er den måten vi realistisk kan bruke XHTML på nå, og det vil bli lenge til man i utstrakt grad kan bruke XHTML som XML.

En måte å unngå disse problemene på er å jobbe med XHTML som XML lokalt. Gjør du det kan du også dra nytte av drakonsk feilbehandling slik at du er garantert at dokumentene dine er velformede (MERK: ikke nødvendigvis gyldig, sidene valideres ikke mot angitt DTD).

Hvordan?

Først må man altså få dokumentene sine parset som XML. Dette krever en klient (nettleser) som støtter XHTML, så som Firefox eller Opera. Deretter må du se til at dokumentene blir sendt til klienten med riktig MIME-type.

Statiske filer, lokalt

Statiske filer lokalt behandles som XML i Firefox og Opera dersom filen har filendelsen .xhtml. Så enkelt som det. .xhtml-filer kan åpnes med Ctrl+O eller bare ved å dra filen over i nettleseren. Dersom du også bruker meta-taggen til å angi innholdstype, husk å oppdatere den til (karaktersettet må settes riktig):

<meta http-equiv="content-type" content="application/xhtml+xml; Charset=utf-8;" />

Apache

Nyere Apache-installasjoner skal automatisk sende .xhtml-filer til klienten som application/xhtml+xml. Dersom den ikke gjør det kan du legge til følgende linje i httpd.conf:

AddType application/xhtml+xml .xhtml

Dynamiske sider

Dersom sidene dine er dynamisk generert på serveren med feks Java, Ruby, PHP eller .NET kan du programmatisk sette respons-headeren Content-Type.

Eksempel i PHP:

<?php header('Content-Type: application/xhtml+xml; Charset=utf-8;'); ?>

Eksempler på bruksområder

Veldig ofte når jeg implementerer nye nettsteder begynner jeg stort sett med å skrive XHTML for dokumentet i statiske filer. Deretter implementerer jeg design i CSS og legger til Javascript dersom det er nødvendig. Disse statiske malene kan jeg senere implementere inn i publiseringsløsningen eller applikasjonen som skal utvikles.

I denne innledende delen av prosjektet kan XHTML som XML være veldig nyttig. Drakonsk feilhåndtering vil hjelpe deg å holde dokumentet i velformet stand. Dette er ingen garanti for at dokumentet vil validere, men dersom du kan XHTML/HTML godt nok til å unngå elementer og attributter som ikke støttes så er du godt på vei til et validerende nettsted.

Siden Internet Explorer ikke støtter XHTML skikkelig må man desverre også lage en versjon av dokumentet som behandles som HTML. På denne måten vil du være sikker på at Javascript og CSS du skriver støttes både i XHTML- og i HTML-modus.

Muligens relatert

2006 - 2012 Christian Johansen Creative Commons Lisens