?? XML Mode, Using a Custom DTD ??

Hi All...

It was pointed out to me recently (by Lachlan Hunt) that using a "known 
public identifier" (e.g., "-//W3C//DTD XHTML 1.0 Strict//EN") in a 
DOCTYPE causes the validator to go into "XML mode", even if the content 
type of the document is non-XML
(e.g., "text/html"). In fact, my testing shows that using a "known 
public identifier" seems to cause the validator to ignore the system 
identifier completely! For example, using the following DOCTYPE, my 
XHTML Strict document validated just fine:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "Queen 
Victoria">

It seems that once the validator recognized the public identifier 
("-//W3C//DTD XHTML 1.0 Strict//EN", in this case) it used some 
existing, cached copy of the "xhtml1-strict.dtd" DTD to validate the 
document. It did *not* consult the DTD in the system identifier ("Queen 
Victoria", in this case), but instead, completely ignored it.

This leads to my question: Is it possible to use a "known public 
identifier" *AND* still tell the validator to use a custom DTD? In 
other words, I want to use a "known public identifier" (so that the 
validator goes into "XML mode") BUT I want the validator to use *my* 
version of the DTD, not the one it has cached somewhere.

As a final note, I find I am able to get the validator to use my custom 
DTD but to do so I have to specify an unknown, "custom" public 
identifier *AND* I have to serve my XHTML document as an XML document 
(e.g., "application/xhtml+xml") so that the validator stays in XML 
mode. I realize it is "more correct" to server XHTML as 
"application/xhtml+xml" but I prefer to serve it as "text/html" as a 
concession to IE 6.

Thanks very much
--
Bob Bronson 

Received on Thursday, 6 October 2005 03:38:41 UTC