Re: Why DOCTYPE Declarations for XHTML?

On Fri, 14 Jan 2000, Dave Raggett wrote:

> The doctype is the means to bind the document to a DTD, 

Not really: a DTD is not an independent object that has or needs to be
bound.  The relevant declarations are syntactically an integral part of
the document, and one of the purposes of the doctype declaration is to
incorporate - not refer to - any declarations relevant to the instance
markup.  As the discussion in the SGML Handbook (p 402ff on Clause 11)
makes quite clear, the external subset per se is superfluous - indeed, Dr.
Goldfarb once proposed that it should be eliminated in XML! - because

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN">

is just syntactic sugar for

  <!DOCTYPE html [
   <!ENTITY % dtd PUBLIC "-//W3C//DTD XHTML 1.1//EN">
   %dtd; ]>

and, depending on how much parameter entity voodoo is enabled in that
%dtd; subset, an appropriately devised internal subset in the document
instance could set up almost anything one wanted as *valid* 'html'.  The
upshot is that the mere presence of a specific FPI doesn't identify the
*document type* semantically.

  http://www.deja.com/getdoc.xp?AN=325927738

> and without it you can't validate the document without a priori knowledge. 

The a priori knowledge can't be ruled out.  In fact, even traditional SGML
systems are allowed implicit or assumed declaration subsets via
"shortened" doctype declarations like these

  <!DOCTYPE html SYSTEM>
  <!DOCTYPE html>

where nothing is awry as long as the consuming application knows somehow
what it's dealing with - the point is that this "somehow" need not be
predicated on the doctype declaration - let alone a particular form.  
Erik Naggum made the general point a long time ago on the www-talk list:

  http://www.nyct.net/~aray/notes/

(The lists.w3.org archives don't don't carry www-talk for 1993-94.)

> For XHTML 1.0 you aren't required to supply a doctype, but without it
> all that can be said is the document is well-formed.

And with it, all that can be determined beyond that, at application option
(to use a validator), is the document is valid with respect to *some*
effective set of declarations.   The text I quoted from the WD said:

: If present, the public identifier included in the DOCTYPE declaration
: must reference the DTD found in [some appendix] using its Formal Public
: Identifier.

Given the 'If present' proviso (implying that this specific FPI need not
be present), I'm not sure why the essential requirement - validity with
respect to a *specific* set of declarations - wasn't simply stated in
general terms (as Erik Naggum implies), leaving the determination open to
alternatives in methods.


Arjun

Received on Friday, 14 January 2000 05:50:41 UTC