I'm back. The caves in France found me unpalatable and spat me back to the
surface.
Many DTDs have lots of PCDATA-only elements, so I included the PCData element as
a clear, convenient shorthand. That is, I found:
<ElementDecl id="foo">
<PCData/>
</ElementDecl>
to be clearer than:
<ElementDecl id="foo">
<Mixed/>
</ElementDecl>
This is particularly true when you are transmitting non-document data such as
corporate or scientific data. For example, a simplistic sales order DTD might
be:
<!ELEMENT SalesOrder (Number, CustomerNumber, Date, Line+)>
<!ELEMENT Number (#PCDATA)>
<!ELEMENT CustomerNumber (#PCDATA)>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT Line (PartNumber, Quantity)>
<!ELEMENT PartNumber (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
Note that everything resolves very quickly to PCDATA -- it's just text, numbers,
and dates and contains no embedded markup such as bolds or jumps or
what-have-you. There is nothing "mixed" about it. The PCData element, while
not strictly necessary, allows you to get this notion across quite easily.
(Note also that I considered a Scalar element instead of a PCData element. With
a Type attribute -- initially allowing PCDATA only -- we could expand into
typing in the future, which the database community really needs.)
By the way, I like the fixed frequency of ZeroOrMore on Mixed.
-- Ron Bourret