This is not the first time I've seen issues about getting HTTP Error 503 when trying to access the W3C xhtml1-strict.dtd file. W3C has explained why it was blocking the file since they were getting "up to 130 million requests per day".

There were comments that called for Sun, now Oracle, to fix the JAXP/JDK XML library. However, as a general purpose library, I don't think we can make it a special case. When a parser encounters a DTD declaration, it would attempt to read and parse it. It is an application's decision if it should be (reading the dtd).

That said, some libraries are indeed short on providing users the ability to control the behavior of the underlying parser. The forum question mentioned above is an example of such libraries. The XPath API does not have an option to allow users to tell the parser, in this case, to ignore the DTD. One way to overcome the problem is to supply your own parser, that is instead of passing an inputsource (xpath.evaluate(expression, inputSource), using a document (xpath.evaluate(expression, document) and disable DTD before creating the document:
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

As explained in the W3C document, the URI is used for identification, a way to say it's HTML. If one is parsing incoming html pages, one does not really need it to tell it's a html page.



Read More about [503 Error when parsing some XHTML files...