DTD design

heiko.grussbach at crpht.lu heiko.grussbach at crpht.lu
Wed Dec 22 10:11:17 GMT 1999


Hi,

I have the following problem, I want to define an element E that may
contain elements A,B,C. Order should be insignificant and A,B and C are all
optional. Furthermore, A,B and C may each be replaced by X.
The first example was simply like this:

<!ELEMENT E (
     ( A?, B? ) |
     ( B?, A? ) |
     ( A?, X? ) |
     ( B?, X? ) |
     ( X?, A? ) |
     ( X?, B? ) |
     ( X?, X? )
) >

My XML-editor (XMetal 1.2) reports an ambigous content model error. After carefully studying the appendix of the XML rec, and with some help
by the support of XMetaL , I came up with the following:

<!ELEMENT E (
     EMPTY |
     (A,(B|X)?) |
     (B,(A|X)?) |
     (X,(A|B|X)?)
)>

Is this the best solution?, What if there are more childs, like A,B,C,D etc. Wouldn't the DTD just explode?

Regards

Heiko Grussbach


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





More information about the Xml-dev mailing list