RE: XSchema Spec Section 2.3, Draft 1

Ron Bourret (rbourret@dvs1.informatik.tu-darmstadt.de)
Mon, 15 Jun 1998 15:40:12 +0200


Simon St. Laurent wrote:
>
> John Cowan wrote:
> >That was my original design. Ron thought it was clearer to allow
> >an explicit PCData element equivalent to an empty Mixed element,
> >and I acquiesced.
>
> For now, I'll leave it. Ron's away for a couple of days, and we can discuss
> it when he gets back.

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