Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

application/xhtml+xml in Internet Explorer

Pagina: 1
Acties:

  • Alfredo
  • Registratie: Maart 2007
  • Laatst online: 31-07 19:40
Ik weet dat dit onderwerp honderduit besproken is, maar mijn zoektocht op W3, Wikipedia, GoT, ... heeft niet het gewenste resultaat bereikt.

Ik dacht dat IE niet overweg kon met application/xhtml+xml en je dan een download prompt toonde (of iets dergelijks). De enige manier om dit gedrag te triggeren, is echter de pagina een .xhtml extensie te geven.
Het begin van mijn pagina ziet er zo uit:
HTML:
1
2
3
4
5
6
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" 
        content="application/xhtml+xml;charset=utf-8" />

Bij mijn weten serveer ik hem dus als application/xhtml+xml. Hoe komt het dat IE hier geen problemen van maakt, terwijl zowat alle sites die ik ben tegengekomen aangeven dat dit problemen moet geven?
Dit is geen html vs. xhtml zaak, ik vraag me gewoon af waarom dit wel werkt en wat ik (niet) fout doe.

Bedankt

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

IE kijkt eerst naar de bestandsextensie en gebruikt de daarmee geassocieerde contenttype en programma wanneer de bestandsextensie bekend is. Wanneer de bestandsextensie onbekend is, dan kijkt het naar de gegeven contenttype en gebruikt het daarmee geassocieerde programma. Wanneer de contenttype onbekend is, dan zal het de source in plain/text tonen. Probeer maar eens diezelfde source met de extensies .xml en .nietBestaandExtensie in zowel IE als de 'betere' browsers die puur naar de gegeven contenttype kijken (FF enzo).

[ Voor 5% gewijzigd door BalusC op 01-10-2008 03:18 ]


Verwijderd

Als je toegang tot PHP of htaccess hebt moet je ook eens proberen om als HTTP header mee te geven dat de pagina application/xhtml+xml is. Dan kan IE er ook niet meer mee overweg. Bij echte browsers zorgt dat ervoor dat de pagina met de xhtml renderer weergegeven wordt.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-11 10:24

Bosmonster

*zucht*

Een meta-tagje toevoegen is nog geen 'serveren als'. Daar zit je denkfout.

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Inderdaad, stuur volgende header maar eens mee (als je over php beschikt):

PHP:
1
header ( "Content-Type: application/xhtml+xml; charset=UTF-8" );

March of the Eagles


  • Alfredo
  • Registratie: Maart 2007
  • Laatst online: 31-07 19:40
Ach zo, waarvoor dient content-type in een html pagina dan? Ik kwam dit tegen op Wikipedia, en dacht dus dat een browser hier rekening mee hield.
This specifies that the page should be served with an HTTP header called 'Content-Type' that has a value 'text/html'. This is a typical use of the meta element, which specifies the document type so a client (browser or otherwise) knows what content type to render.
En waarom biedt w3.org dan verschillende pagina's aan over dit onderwerp, als het niet eens iets met xhtml zelf te maken heeft? Je hebt php nodig om het juiste content-type mee te geven...

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 15-11 15:42

Sebazzz

3dp

Alfredo schreef op woensdag 01 oktober 2008 @ 10:10:
Je hebt php nodig om het juiste content-type mee te geven...
Of een goed geconfigureerde webserver.
Ik zou trouwens als je toch voor XHTML icm met je xml MIME-type gaat, gelijk voor 1.1 gaan, dat is pas pure XHTML ;)

[ Voor 3% gewijzigd door Sebazzz op 01-10-2008 10:15 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Alfredo schreef op woensdag 01 oktober 2008 @ 10:10:
Ach zo, waarvoor dient content-type in een html pagina dan? Ik kwam dit tegen op Wikipedia, en dacht dus dat een browser hier rekening mee hield.
Dat is voor als het document op een andere manier dan via HTTP wordt aangeboden.
Bij gebrek aan een content-type HTTP header zullen browsers overigens eerder voor content-sniffing gaan dan dat ze deze meta-tag zullen honoreren.
[...]

En waarom biedt w3.org dan verschillende pagina's aan over dit onderwerp, als het niet eens iets met xhtml zelf te maken heeft? Je hebt php nodig om het juiste content-type mee te geven...
Omdat XHTML serveren als XHTML (dus met een XHTML mimetype als HTTP header) gewoon de norm is en je XHTML bij uitzondering en onder bepaalde voorwaarden als HTML mag serveren. De uitzondering wordt daarom beschreven.

In de praktijk is de uitzondering echter regel geworden en worden bijna alle documenten die voorzien zijn van een XHTML DTD als HTML verstuurd (en dus ook zo behandeld door browsers). Een XHTML DTD heeft praktisch gezien dan ook weinig meer met XHTML te maken, temeer daar de meeste 'XHTML' documenten in het wild niet voldoen aan de criteria voor XHTML (vaak mallformed of maken gebruik van technieken die bij een XML verwerking niet of niet als beoogd zouden werken). Daar is een term voor: Faux XHTML ;)

Overigens heb je helemaal geen PHP nodig om de juiste mimetype associatie te maken, dat kan je ook op webserver niveau regelen bijvoorbeeld op basis van extentie.

[ Voor 4% gewijzigd door crisp op 01-10-2008 11:18 ]

Intentionally left blank


  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 10-11 23:44
Ik zelf gebruik altijd zo iets:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

if(checkMime("application/xhtml+xml") == true) { $xml = true; }

if(isset($xml) AND $xml == true)) { echo '<?xml version="1.0" encoding="ISO-8859-15"?>'; }

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl">
<head>';

if(isset($xml) AND $xml == true) {
    echo '<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-15" />';
} else {
    echo '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />';
}
?>


En dan is checkMime:

PHP:
1
2
3
4
5
<?php
function checkMime($type) {
if(stristr($_SERVER["HTTP_ACCEPT"], $type)) { return true; } else { return false; }
}
?>

[ Voor 6% gewijzigd door Svennetjee op 01-10-2008 18:09 . Reden: Foutje :) ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Svennetjee schreef op woensdag 01 oktober 2008 @ 18:07:
Ik zelf gebruik altijd zo iets:
[...]
Maar uiteindelijk stuur je geen XHTML Content-Type HTTP header? (not to mention dat de client accept-header ook nog zoiets heeft als quality-factors welke je ook zou moeten honoreren en dat je dan ook VARY headers zou moeten sturen voor cacheing proxies).

Intentionally left blank


  • Alfredo
  • Registratie: Maart 2007
  • Laatst online: 31-07 19:40
Vermits ik pagina's enkel via HTTP aanbiedt (welke manieren zijn er nog?), is die Content-Type in het document zelf dus onnodig. Maar goed, het is mijn keuze ook niet geweest om HTML pagina's te produceren met een XHTML DTD, dat bepaalt mijn docent Static Webdevelopment.
Als je de Content-Type dan via je server regelt op basis van extensie, wordt je dan verwacht er .xhtml van te maken? Of bestaat die (ongeschreven) regel niet?

Bedankt voor de verduidelijking in ieder geval.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-11 10:24

Bosmonster

*zucht*

Altijd handig als je IE quirksmode in wil knikkeren inderdaad.
Alfredo schreef op woensdag 01 oktober 2008 @ 19:40:
Vermits ik pagina's enkel via HTTP aanbiedt (welke manieren zijn er nog?), is die Content-Type in het document zelf dus onnodig. Maar goed, het is mijn keuze ook niet geweest om HTML pagina's te produceren met een XHTML DTD, dat bepaalt mijn docent Static Webdevelopment.
Als je de Content-Type dan via je server regelt op basis van extensie, wordt je dan verwacht er .xhtml van te maken? Of bestaat die (ongeschreven) regel niet?

Bedankt voor de verduidelijking in ieder geval.
Of je vertelt je docent dat ie een aap is en alleen maar de (al lang afgelopen) x-hype achternaholt. Ik verwacht niet dat ie als docent enige uitgebreide ervaring heeft in het daadwerkelijk bouwen van moderne websites.

Maar misschien heb ik gewoon een aversie tegen zogenaamde 'praktijkdocenten' :+

[ Voor 67% gewijzigd door Bosmonster op 01-10-2008 21:37 ]


Verwijderd

crisp schreef op woensdag 01 oktober 2008 @ 18:19:
[...]

Maar uiteindelijk stuur je geen XHTML Content-Type HTTP header? (not to mention dat de client accept-header ook nog zoiets heeft als quality-factors welke je ook zou moeten honoreren en dat je dan ook VARY headers zou moeten sturen voor cacheing proxies).
Let ook op dat je bij IE de accept header niet al te veel moet vertrouwen

text/html wordt bijvoorbeeld al niet (altijd) meegestuurd...
Pagina: 1