Loss of effective schema validation by DTDs with today's working drafts

One of the things that has been troubling me with today's schema working
draft release is the reduction of the effectiveness of validating a schema
with the schema DTD.  For example, in the previous draft, an element with an
empty content model was represented by

<elementType name="emptyElement">
	<empty/>
</elementType>

The <empty> element was defined as having an empty content model, so the
following fragment would result in a validation error.

<elementType name="emptyElement">
	<empty>
		<elementTypeRef name="otherElement"/>
	</empty>
</elementType>

In todays, draft the same thing poorly formed element would be represented
by

<element name="emptyElement">
	<archetype content="empty">
		<element name="otherElement"/>
	</archetype>
</element>

and would validate.

Also, the <datatype> element definition in the schema for datatypes uses the
"all" compositor (equivalent the SGML &) which allows each of the different
facets to appear once, but in any order.  Since the all compositor was not
included in XML, the closest a DTD can do is allow any of the elements to
appear in any order any number of times.  It would seem better for the
schema to define a specific order so that the DTD could enforce the number
of times a particular facet appears.

The changes appear intentional from the previous draft and I'm sure there is
reasoning (and probably a huge amount of debate) behind it.  However, I
really liked the <choice>, <sequence>, <any> and <empty> tags from the
previous public draft.

Received on Monday, 27 September 1999 17:26:43 UTC