Blog van Jeroen van der Gun

Dit is pas echt XHTML

13 december 2009, 15:49

XHTML, wie gebruikt het niet tegenwoordig? In de broncodes van veel websites ziet men immers XHTML in de DOCTYPE staan. Zo nu en dan is de pagina zelfs geldig. Maar is dit allemaal wel XML?

Dat lijkt een domme vraag, immers XHTML is per definitie XML. Die definitie is echter niet helemaal waar. Het komt allemaal neer op het MIME-type, oftewel de inhoud van de HTTP-header genaamd Content-Type. De specificatie van XHTML 1.0 stelt namelijk dat het MIME-type text/html mag zijn, terwijl de XML-specificatie juist zegt dat dit iets in de richting van application/xml moet zijn. In het geval van XHTML is het echte MIME-type hierdoor application/xhtml+xml.

Wat er gebeurt is nu eenvoudig uit te leggen. Browsers gebruiken een XML-parser bij application/xhtml+xml en een HTML-parser bij text/html. Nette XHTML-pagina's wordt met het verkeerde MIME-type dus gewoon als tag soup mishandeld. Validators zoals die van het W3C vormen de enige uitzondering.

Deze mishandeling heb ik beƫindigd door op deze website het MIME-type aan te passen. Er waren hierbij twee grote obstakels:

  1. Het Documentobjectmodel (DOM) van HTML is niet meer beschikbaar. De belangrijkste consequentie is de afwezigheid van de bekende methode document.write. Google AdSense maakt hiervan gebruik om advertenties te tonen. Na veel speuren op het Internet en vier uur programmeren heb ik dit opgelost door zelf een slordig HTML-parsertje in JavaScript te schrijven dat als vervanging van de beruchte methode kon dienen.
  2. Slechts bijna alle browsers ondersteunen XHTML. Internet Explorer is uiteraard de uitzondering hierop. Zelfs in versie 8 krijgt men nog een scherm of dit XHTML-document gedownload en opgeslagen moet worden. Daarnaast hebben crawlers van zoekmachines er problemen mee. Dit is opgelost met content negotiation, oftewel over HTTP onderhandelen met de header genaamd Accept. Deze header wordt gelezeen door mijn PHP-script en hiermee wordt gekozen in welk formaat het document wordt verzonden.

Nu is deze site dus pas echt XHTML en kunnen browsers toestemming krijgen om hun XML-parser te gebruiken. Ik heb dit ook genoemd op de pagina over webstandaarden; u kunt zelfs zien of uw eigen browser geen Internet Explorer heet XHTML echt ondersteunt.

Tot slot dan nog maar wat andere nieuwtjes. Zoals reeds zichtbaar is dit blogsysteem keurig tweetalig gemaakt. In mijn profiel heb ik een recentere foto geplaatst. Ook staat daar nu dat ik geslaagd ben voor mijn propedeuse. De recente blogitems staan nu ook in mijn profiel vermeld.

Reacties (3)

Jasper
28 december 2009, 8:17
Ik snap het niet :D
Jeroen van der Gun
28 december 2009, 16:45
Vanaf waar precies? :)
Jeroen van der Gun
28 december 2009, 16:51
Ik had een mooi Yellow Screen of Death bij het plaatsen van die reactie. Controleer je al je pagina's van je site, en dan denk je dat nergens meer fouten zitten, en dan zit er plots een well-formedness error in je afhandeling van formulieren. Heb ik weer.
opt.
opt.
7 × 9 =

Feeds Blogbelevenisoptimalisatie

  1. Informatie over de auteur staat op mijn portfoliosite, met name in mijn profiel.
  2. Voel u vrij te reageren op artikelen. Gaat uw reactie niet over een specifiek artikel, dan kunt u het gastenboek gebruiken.
  3. U kunt meldingen van nieuwe berichten ontvangen via feeds: zie de instructies. Dit geldt voor zowel blogitems als reacties.
Blognavigatie: 12 11 10 9 8 7 6
Copyright © 2005–2010 Jeroen van der Gun, alle rechten voorbehouden.
Lees mijn disclaimer en privacyverklaring.
Alle pagina’s van deze site zijn printvriendelijk.
W3C: XHTML 1.0 W3C: CSS level 2 Atom: Valid
Wat betekenen deze pictogrammen?