W. Hugh Chatfield I.S.P. scripsit:
<!ELEMENT CompanyProfile ( Profile? | Promotion?)>
each element is optional, will occur at most once, and any order
is allowed.
In fact that permits a Profile, a Promotion, or neither, but does not
permit both. In order to permit both, you cannot write:
(Profile? Promotion? | Promotion? Profile?)
as you can in RELAX NG, due to the DTD unambiguity rule. You must write
something like:
(Promotion Profile? | Profile Promotion?)?
It's questionable, however, whether you want to allow this degree of
flexibility. It does little or nothing for XML creators, and makes
the way of XML receivers more difficult than necessary. Since there is
probably no semantic difference between a Profile followed by a Promotion
and a Promotion followed by a Profile, you might as well pick a fixed
order and stick to it, leading to the content model:
(Promotion? Profile?)