Singletons in a DTD

Joshua E. Smith jesmith at
Thu May 13 17:51:21 BST 1999

I have an element which can contain 0 or more instances of some element
types (call these collections), and 0 or 1 instances of others (call these
singletons), and I don't want to contrain the order.

If I have collections C1, C2, C3
and I have singletons S1, S2, S3

And I declare:

(S1? , S2? , S3? , (C1 | C2 | C3)*)

Then the singletons, if they appear, would have to be in that order and
would have to be first.  So that's not what I want.

I suppose I could declare some combinatorics:

( S1? | S2? | S3? | (S1 , S2)? | (S2 , S1)? | (S1 , S3)? blah blah blah

but I'd have to mix in the C1, C2, C3, etc., too, and I have about 8
singleton classes, so this would quickly get totally out of control.

Am I missing something, or is what I want to describe not really practical
in a DTD?  I'm perfectly comfortable leaving the singletonness out of my
DTD (my application will detect duplication errors anyway), if that's the
only answer.  But if there *is* a way to capture this without waiting for
XSchema to be finished, I'd love to hear it!

-Joshua Smith

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