XHTML met het juiste MIME type

Velen onder ons, tot voor kort ikzelf, zijn zich niet bewust dat ze ondanks het gebruik van het XHTML doctype toch HTML webpagina's presenteren. Het zit hem allemaal in de Content-Type header oftewel het MIME type van het document. Een pagina met MIME type text/html zal door een browser altijd als HTML geïnterpreteerd worden wat het doctype ook is. Wil je echte XHTML-webpaginas presenteren moet je je pagina's als application/xhtml+xml versturen. Dit doe je door in je head sectie <meta http-equiv="Content-Type" content="application/xhtml+xml;" />toe te voegen. Dit volstaat meestal niet aangezien webservers zoals Apache bij het versturen van bestanden met extentie .htm standaard Content-Type: text/html; in de header meesturen. Je kan in je config of .htaccess een nieuwe extentie aanmaken zoals volgt: AddType application/xhtml+xml;charset=utf-8 .xht. Als je met PHP werkt is het nog makkelijker: gewoon header('Content-Type: application/xhtml+xml;'); bovenaan je document toe te voegen.

Verschillen tussen text/html en application/xhtml+xml

Nu heb je een echte XHTML-pagina. Je zal merken dat deze niet werkt in IE. Fouten in je XHTML worden meteen afgestraft door een XML parse error in XHTML compatibele browsers. Screenshot van XML-parsing-error in een webbrowser Je zult ook merken dat CSS en JavaScript in commentaren <!-- ... --> niet meer geparsed worden. Dit is omdat in XML dit écht commentaar secties zijn. Gebruik <![CDATA[ ... ]]> in de plaats, XML-parsers negeren deze sectie bij het parsen en zullen dus niet struikelen over < of >.
JavaScript moet in XHTML ook stricter geschreven worden. document.write([string]) zal in bijna geen enkele browser meer werken en [object].innerHTML zal in sommige browsers ook niet meer werken. Let ook op voor de encodering van je XHTML-bestand. HTML wordt standaard geïnterpreteerd als iso-8859-1 terwijl dit bij XHTML utf-8 is (zoals ieder XML-bestand).

XHTML 1.0 is om in een overgangsfase van HTML naar XHTML te gebruiken. Je mag deze zowel als text/html als applicaton/xhtml+xml versturen. XHTML 1.1 verschilt misschien niet veel van XHTML 1.0 strict maar is niet achterwaarts compatibel met HTML. Gebruik dan ook nooit XHTML 1.1 samen met content-type text/html. Dit is tegen de richtlijnen.

XHTML en Internet Explorer

Aangezien IE XHTML bestanden met MIME type applicaton/xhtml+xml niet ondersteunt heeft het geen zin om dit te gebruiken. XHTML 1.1 valt dus al zeker niet te gebruiken. IE kan XML en HTML parsen, XHTML is voor hem nog onbekend en zelfs in IE 7 zal dit zo blijven. Vervelend maar geen slechte beslissing van MS om dit nog zo te laten. Het toont aan dat ze het begrepen hebben wat standaarden zijn en dat ze ook niet iets maar half of totaal verkeerd willen ondersteunen. Safari ondersteunt ook geen XHTML (of vergis ik me hierbij?). Het herkent wel het content type maar parsed deze gewoon als HTML wat eigenlijk verkeerd is.

De pot op met XHTML terug naar HTML

Dit moet je voor jezelf uitmaken. HTML 4 is achterwaarts compatibel en voorwaarts compatibel. XHTML 1.0 is achterwaarts compatibel maar niet voorwaarts compatibel met XHTML 2.0. XHTML is uitbreidbaar, je kan makkelijk inline SVG of MathML in je code toevoegen wat niet mogelijk is met HTML.
Ik heb gekozen voor XHTML. Reden is ik schreef het al langer en ik zou alles terug moeten omzetten. En in wezen maakt het niet echt veel uit wat je nu kiest. Veel belangrijker is dat je bij (X)HTML kiest voor het strict doctype en aandacht schenkt aan toegankelijkheid.

Meer leesvoer hierover vind je op:

Gepost: 9 september 2006 17u41 | 0 reacties


Event Streaming to Web Browsers

De informatie in dit artikel is mogelijk verouderd.

Op de Web Applicatons Blog van Opera is er een preview verschenen van een nieuw stukje technologie dat het web enorm kan doen veranderen.

Het gaat om event streaming naar web browsers, dit houdt in dat de server een request kan sturen naar de browser. Tot nu toe kon een webserver enkel reageren op een request van een browser. Het werkt simpel, de connectie met de webserver wordt behouden zodat er een constante verbinding is om DOM events te sturen naar de browser.

Op de blogpost staat een simpel voorbeeldje hoe je de tijd om de 4 seconden kunt doorsturen naar een browser. Beschik je over een webserver met php, probeer dit dan zeker eens uit! Screenshot van Opera web chat Ben je nog niet overtuigd over de mogelijkheden van deze techniek, klik dan zeker eens door naar de Opera Web Chat. Meer uitleg over Event Streaming kan je in de WHATWG Web Applications 1.0 specificatie lezen.

Gepost: 2 september 2006 02u29 | 3 reacties