Re: D.1 Distinguish partial and full DTDs?
> From email@example.com Thu Oct 24 15:11:24 1996
> Date: Thu, 24 Oct 96 14:08:08 CDT
> D.1 What behavior should XML systems exhibit if no DTD, or only a
> partial DTD, is given with a document? In particular, should there
> be a way to distinguish a document instance for which a DTD exists
> but is not given from an instance for which no DTD exists?
First, I assume that the question is talking about a way to say "a DTD
does exist" (i.e., a boolean), rather than a way to say "the DTD for
this instance is ..." (where ... provides enough information to access
the wayward DTD). (For the latter, I'd use a doctype declaration with
a reference to the DTD, in other words, a valid 8879 doctype decl.)
First of all, it seems to me that there is no qualitative difference
between a partial and no DTD. The options seem to be (1) being in
possession of a set of declarations (henceforth called DTD) that cover
all of the markup in the document instance in question, (2) being in
possession of the best DTD (if any) available that, however, still leaves
some markup in the instance in question undeclared, (3) being in possession
of the fact that some DTD exists, but you don't have it.
Being in possession of no DTD because there is none available is a
degenerate case of (2). What one does about declarations missing
from a partial DTD and what one does about a completely missing DTD
seem to be the same problem.
The above issue doesn't ask what to do when given a complete DTD, so
we're down to whether XML should define some way for an XML document
user/tool to distinguish between a subset of (2) above (the degenerate
case of there being no DTD available) and case (3).
What are the possible responses in those two cases:
1. the tool/user doesn't need a DTD. In this situation, there is no
difference in the response in the two cases.
2. to tool/user needs a DTD. Then we have:
a. the tool/user has the capacity to create/intuit a DTD
so it does so. In this situation, there is no difference in
the response in the two cases.
b. the tool/user doesn't have the capacity to create/intuit
a DTD so it would need to access the DTD before it can continue.
Only in this situation would the response be different in the two
cases: if there is a DTD, it would access it, and if not, it
would give an apologetic error message and quit.
Only in case 2b is there a difference in behavior, and this only if
it can, in fact, access the existing DTD which it currently does not
possess. But, it can only access the DTD if it's told where it is,
and by my initial assumption, the original question is only talking
about a boolean which does not give enough information for the tool
to be able to access the DTD.
So I end up saying that there is no reason to distinguish an instance
with no DTD from one with an absent DTD, because with only the knowledge
that an absent DTD exists (but without a pointer to it), there can be no
difference in tool behavior.