Yet another validity question

roddey at roddey at
Fri Apr 23 01:22:53 BST 1999

I just now, for whatever reason, got around to noticing that the James
Clark 'valid' tests imply that you can reference an element in a content
model without its ever having been declared, for instance:

   <!DOCTYPE doc [
   <!ELEMENT doc (a*)>

This seems like it would be fine if you were doing WF tests and just were
parsing the DTD because it was there and you need to get through it to find
entities and such. But, when checking for validity this seems a bit lax.

I didn't see anything in the spec that explicitly says "you must (or don't
have to) declare all elements referenced in content models", though I
certainly could have missed it like so many other things. But, even if it
does not say so explicitly, I would think that it would be a bad thing not
to require this. If A is in the content model of some other element B, then
an A can occur if a B occurs. If an A can occur, you must check the content
of A as well. If A isn't defined, you cannot check its content. Therefore,
the DTD would seem valid until you actually used A or B (or some other more
removed element that eventually used an A.)

It does not seem reasonable to me that it would be deemed desirable that a
DTD would work like this, when all it required to make it knowably correct
(in this sense anyway) is to confirm that all referenced elements are
declared (which I am doing right now.) I also check that any attribute list
maps to some element regardless of whether that element was actually used
or not, which seems to me to fall into the same ballpark.

What am I missing here?

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list