<complexContent> extending <simpleContent> (clarification/erratum?)

Consider

<complexType name="derived" mixed="false">
 <complexContent mixed="false">
  <extension base="base"/>
 </complexContent>
</complexType>

where "base" is a complex type whose {content type} is a simple type
definition.

Then according to structure 3.4.2, "derived" has the same content type as
base, which is a simple type definition. But it specified <complexContent>
explicitly, and mixed = false. This seems confusing.

And if mixed was true on <complexType> and <complexContent>, then the rule
actually says that "derived" has a content of a sequence of an empty
sequence, following the particle from "base". But "base" doesn't have a
particle. (Rules from 3.4.6 says this is invalid, but those are at the
component level. Here we are talking about the mapping.)

IMO, it shouldn't be allowed for <complexContent> to extend a complex type
with simple content. That is, change bullet 1 of the constraint "Complex
Type Definition Representation OK" [1] to

1 If the <complexContent> alternative is chosen, then all of the following
must be true:
1.1 The type definition ·resolved· to by the ·actual value· of the base
[attribute] must be a complex type definition;
1.2 If the <extension> alternative is also chosen, then the type definition
·resolved· to by the ·actual value· of the base [attribute] must not be a
complex type definition whose {content type} is a simple type definition;

[1]
http://www.w3.org/XML/Group/2002/09/xmlschema-1/structures-with-errata.html#src-ct

Thanks,
Sandy Gao
Software Developer, IBM Canada
(1-905) 413-3255
sandygao@ca.ibm.com

Received on Friday, 6 June 2003 14:27:40 UTC