Possible Solution
I uploaded two files for you to see it in action:
- As HTML file: try it out, headers are
text/html
.
- As XML file try it out, headers are
text/html
.
the first will work in all browsers. The second will fail in IE (and work in others) because it ignores the headers of the server. The reason: the *.xml
ending of the filename part. This is wrong behavior of IE, but we'll have to deal with it. If your filename ends on xml or your server sends it through as application/xml then change these settings.
Background
The resource identifier that you refer to is not a resource identifier. It is a unique identifier, a placeholder so to speak. It was never meant for being downloaded in cases of HTML being served (regardless it being XHTML as in this case). This is misbehaving IE.
The post you refer to suggests that they might take the resource offline. The DTD is still online. With other standards, they used different approaches, where the resource is not online on the same location as the identifier (same issue people have with namespaces: it is not a resource, it is an identifier).
This is not XML horror, but simply IE behaving oddly. To work with IE and XHTML, you must serve it as text/xml
as MIME type. If you run it locally, you can get this error. Try to serve it differently.
NOTE: before you ask: the XML specification states that the DTD should not be downloaded, but should be seen as a unique id. Only for validating XML downloading the resource is good, but the standard says that the resource ID and the actual resource do not need to be same.