Re: complexContent extending complexType with simpleContent: why not?

> Now, it is certainly the case that ExtendedType's content is actually 
> simple, not complex, ...

If you look at the mapping rules for complex types [1] ({content type} for 
<complexContent> with <extension>), it's clear that the {content type} of 
"ExtendedType" is element-only and a particle (clause 3.2.3).

> I looked at the complex type derivation constraints in the spec, and 
> I couldn't find a violation.

Look at constraint "Derivation Valid (Extension)" [2], clause 1.4. This 
clearly rules out the case where the base's {content type} is a simple 
type definition (in your case "string") and the derived (extended) type 
has {content type} element-only.

[1] http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#declare-type
[2] http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cos-ct-extends

Thanks,
Sandy Gao
XML Parser Development, IBM Canada
(1-905) 413-3255
sandygao@ca.ibm.com


xmlschema-dev-request@w3.org wrote on 02/02/2006 04:35:39 PM:

> 
> I got handed a schema that contains (stripped down to the bare 
> essentials) this:
> 
> <schema targetNamespace="http://example.com/myExample" 
> xmlns:tns="http://example.com/myExample" xmlns="http://www.w3.org/ 
> 2001/XMLSchema" elementFormDefault="qualified" 
> attributeFormDefault="unqualified">
> 
>    <complexType name="BaseType" abstract="true">
>       <simpleContent>
>          <extension base="string">
>             <attribute name="myAttr" use="optional"/>
>          </extension>
>       </simpleContent>
>    </complexType>
> 
>    <complexType name="DerivedType">
>       <simpleContent>
>          <extension base="tns:BaseType"/>
>       </simpleContent>
>    </complexType>
> 
>    <complexType name="ExtendedType">
>       <complexContent>
>          <extension base="tns:DerivedType">
>             <attribute name="anotherAttr" type="boolean" 
use="optional"/>
>          </extension>
>       </complexContent>
>    </complexType>
> 
> </schema>
> 
> XSV complains about ExtendedType, saying: attempt to derive a complex 
> basetype from a simple base: DerivedType.
> 
> Now, it is certainly the case that ExtendedType's content is actually 
> simple, not complex, so simpleContent would be more appropriate.  But 
> I can't figure out where in the rec it actually says that this is not 
> legal.
> 
> I found a discussion of what seems to be exactly this issue in the 
> archives.  The last word in that discussion was <http://lists.w3.org/ 
> Archives/Public/xmlschema-dev/2002Aug/0059.html>, which said "I think 
> you're right that this is legal."
> 
> I looked at the complex type derivation constraints in the spec, and 
> I couldn't find a violation.  So, this may be bad style, but why is 
> it rejected?
> 
> Thanks.
> joe
> 
> 
> 

Received on Friday, 3 February 2006 14:53:07 UTC