RE: Erratum in section 1.1 of Canonical XML

At 1:08 PM -0700 5/9/01, John Boyer wrote:
>Hi Elliotte,
>
>[Definition: The XML document type declaration contains or points to
>markup declarations that provide a grammar for a class of documents.
>This grammar is known as a document type definition, or DTD. The
>document type declaration can point to an external subset (a special
>kind of external entity) containing markup declarations, or can
>contain the markup declarations directly in an internal subset, or
>can do both. The DTD for a document consists of both subsets taken
>together.]
>
>I think we read the last sentence of this definition differently.  I
>read it as pretty much establishing that they are the same thing since
>the DTD for a document consists of precisely that which is represented
>by a document type declaration.

I think it's quite clear. "The document type declaration contains or points to
markup declarations that provide a grammar for a class of documents.
This grammar is known as a document type definition, or DTD." This 
does not state that the document type declaration IS the DTD. It 
states that it points to or contains the DTD. Then it goes on to say 
that the document type declaration may in fact do both, in which case 
there's an internal subset and an external subset. In this case the 
document type declaration contains the internal subset and points to 
the external subset. In other words it contains part of the DTD and 
points to the other part of the DTD, but it still isn't the DTD!

>To wit, immediately below the
>definition you cited, there appears the following:
>
>Document Type Definition
>
>[28]    doctypedecl    ::=    '<!DOCTYPE' S Name (S ExternalID)? S? ('['
>(markupdecl | DeclSep)* ']' S?)? '>' [VC: Root Element Type]
>
>In other words, a document type definition is defined to be that which
>gramatically resolves to a document type declaration.
>

I agree that's confusing and I should probably file an request for 
clarification on that as well. However, that heading is NOT the 
normative definition of a document type definition or DTD. The 
normative definition is given in the Definition paragraph quoted 
above.

It seems we're now arguing not about whether you can use "DTD" to 
mean document type declaration. but about whether there is in fact 
any difference between the document type definition and a document 
type declaration. There is in fact a HUGe difference, and this should 
be quite clear. A document type declaration specifies a root element, 
a system ID, and a public ID. A document type definition does none of 
these things. In the BNF grammar the document type declaration is 
represented by production 28. The DTD is represented by the 
combination of part of production 28 and all of production 30. Other 
specs like DOM and the XML Infoset are even clearer on this point.

-- 

+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo@metalab.unc.edu | Writer/Programmer |
+-----------------------+------------------------+-------------------+
|                  The XML Bible (IDG Books, 1999)                   |
|              http://metalab.unc.edu/xml/books/bible/               |
|   http://www.amazon.com/exec/obidos/ISBN=0764532367/cafeaulaitA/   |
+----------------------------------+---------------------------------+
|  Read Cafe au Lait for Java News:  http://metalab.unc.edu/javafaq/ |
|  Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/     |
+----------------------------------+---------------------------------+

Received on Wednesday, 9 May 2001 19:46:06 UTC