Hi Elliotte,

>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.

Actually, I think the fact that there is NOT a HUGE difference is precisely why we are having this conversation in the first place.  You're using the first couple of sentences in the so-called definition to make a distinction that really doesn't make a lot of difference.  You cannot introduce a document type 'definition' into an XML document without a DOCTYPE, and you cannot have a DOCTYPE which does not introduce a document type 'definition'.  The XML 1.0 spec refers to the production 28 as the Document Type Definition, then proceeds to define the doctypedecl non-terminal.  And, based on who reads the so-called definition, there seems to be nothing wrong with this.  Moreover, all of the things inside of a document type 'definition' are all referred to as 'declarations'. 

These facts make it clear to me that the XML 1.0 spec is using the terms interchangeably.  If that is changing, then an erratum to XML 1.0 (Second Edition) should be issued so that the corresponding C14N erratum can have something to reference.

I should also point out that the parts outside of the definition sections you're reading are also normative.  To wit, your interpretation of the 'normative' definition of document type declaration and DTD is incorrect if you accept only the definitions as normative.  The document type declaration is 'defined' to contain markup declarations, and markup declarations are NOT 'defined' to include material in parameter entity references-- unless you consider the sentence after (outside of) the 'normative' definition.  Since I don't think you get to pick and choose which parts of the normative XML 1.0 recommendation you are allowed to read and/or ignore, the parts that I'm referring to should have at least as much consideration as the parts you need to make your interpretation stick.

In essence, I don't think there's more, and in fact I think there is less, justification for the interpretation you've adopted-- based solely on reading the XML 1.0 (Second Edition) spec.  Whether a particular interpretation tracks current trends in other specs is, to me, only useful if the corresponding root-level specifications track current trends in interpretation.  We can only write meaningful specs based on what is written in the specs we reference + written errata, not the word-of-mouth understandings that evolve (even if they do find their way into other documents that are subordinate to XML 1.0).  The responsible organization, the W3C, must ensure that there are no conflicts (remember the relative namespace URI fiasco?), and that isn't going to happen if everyone who writes a spec takes it upon themselves to make interpretations that do not appear to have a firm basis in XML 1.0 (or whatever root-level spec is needed in a given context).

So, over to you, Joseph.  What is the W3C position on this?  As far as I'm concerned, it's a really trivial point and a really trivial process to omit '(DTD)' in the two locations specified, so whatever the W3C wants to do (file or not file an erratum) is fine by me.

John Boyer
Senior Product Architect, Software Development
Internet Commerce System (ICS) Team
PureEdge Solutions Inc.
Trusted Digital Relationships
v: 250-708-8047  f: 250-708-8010
1-888-517-2675   http://www.PureEdge.com <http://www.pureedge.com/>