I use xhtml docs to store content for my site – it’s a custom built cms written in php.
So, my content files all use a template that looks like this:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.manick.co.uk/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
<head>
</head>
<body>
</body>
</html>
Anyway, I’ve noticed that IE8 fails to show these files, though FF has no issue. Very annoying. It would show an error like this:
The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
System error: -2146697204. Error processing resource ‘http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd’.
Anyway I finally decided to research the problem and find out what is wrong…
I found a very relevant blog post about DTDs here:
http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic
It seems that w3 suffer from excessive traffic when these DTD documents are repetitively called for over the Internet resulting in a kind of DOS attack.
There seems to be a great deal of ongoing debate regarding this issue – as I was looking for a quick fix I decided to host the relevant DTDs on my own server.
I was happy to do this as these XHTML files are not served directly to web browsers but are processed by PHP on my webserver.
The resulting document that is returned to the webrowser can continue to list the www.w3.org DTD document.
I’m guessing that IE8 shouldn’t be attempting to load these documents from w3.org when I try to view my xml files that contain the xhtml.
Also it appears that the w3.org have now gone so far as to block browsers requesting the DTD based on the User-Agent string of the HTTP request.
I gleaned this info from: http://www.outofcontrol.ca/2009/02/20/w3org-dtdxhtml1-strictdtd-blocks-windows-ie-users/
It seems odd to me that we are still struggling with this and it’s now nearly 2010.