Re: B.10 Empty elements?
> From email@example.com Mon Oct 14 14:21:16 1996
> Date: Mon, 14 Oct 1996 14:39:18 -0400
> To: Bill Smith <firstname.lastname@example.org>, email@example.com
> From: "Eve L. Maler" <elm>
> Subject: Re: B.10 Empty elements?
> Resent-From: firstname.lastname@example.org
> Sender: email@example.com
> At 10:22 AM 10/14/96 -0700, Bill Smith wrote:
> >Requiring partial DTDs is the first step on the slope to requiring DTDs and
> >greatly complicating XML for everyone. How will validating XML parsers
> >distinguish between partial DTDs and full DTDs? How will authors know the
> I don't think full DTDs ever *need* to be required; pretty much all the
> "read-only" applications (such as browsers) would do just fine if they
> had the tiny subset of information that includes, e.g., EMPTY elements.
> You make a really good point about distinguishing partial and full DTDs.
> Perhaps a PI such as <?XML partialdtd> is a good way to handle this;
> otherwise the DTD would be assumed to be full, and the instance could
> generate some errors accordingly if some declarations are missing.
Another way would be to say that XML doesn't require full DTDs. Period.
Without any way to say whether a DTD is full or partial. Basically, the
application can opt to make whatever use it wants of whatever DTDs it's
given. If the application comes across an element for which there is no
declaration in the DTD, it does whatever it is able to do rather than
necessarily issuing an error message.
This way, someone could send what they think is a "full" DTD, an then if
there is an extra element, the application could still work. Better yet,
if the user of the application decides to extend the language (the one that
is defined in the DTD that exists) and add a new element, they can do that
if the application supports that. If we require that all DTDs be marked as
full or partial, then what was a full DTD given one version of the instance
can't automatically become a partial DTD for an extended version of the
That is, for XML, all DTDs become "possibly partial" where both an omitted
DTD and a full DTD are just 'degenerate' cases.
Tying this back to empty elements, if the instance uses no empty
elements, a read-only application may well be able to get away with no
DTD. If there are empty elements, perhaps only those declarations need
to be included and sent in the partial DTD.