This is a valid criticism, and we need to think about it more. The
motivating factor for including the ampersand operator in XML-Data is the
significant number of customers who have asked for it. In discussing DTDs
with me and others, they showed examples like the following:
<!ELEMENT person
((firstname|middlename|lastname|age|shoesize|hair|eyes|height|weight)*) >
When I've asked what this construction means, they said, in effect "What I
mean is that the elements can occur in any order, but there isn't any good
way to say that in XML DTDs."
I suspect a number of other people have seen similar examples.
I know we could argue that people should not allow variation in element
order, but customers have adamantly stated that they sometimes want
forgiving sequence. For example, RDF specifies that order does not matter
for RDF data.
So we have a funny situation in XML in which we've tried to make processing
easier by forbidding certain things in the DTD, but the result is that
people either avoid DTDs altogether or write bogus DTDs that don't fully
describe the real syntax. That is, we've simplified the implementation by
being unable to express the intended syntax.
Anyway, I wanted to add to the discussion some of the factors that led the
authors of XML-Data to propose including the ampersand operator.