W3C home > Mailing lists > Public > xmlschema-dev@w3.org > March 2007

Re: SimpleType as valid derivation of abstract type in 1.1 ?

From: Pete Cordell <petexmldev@tech-know-ware.com>
Date: Fri, 9 Mar 2007 10:30:24 -0000
Message-ID: <001201c76235$f8722f50$5900a8c0@Codalogic>
To: "Guillaume Lebleu" <gl@brixlogic.com>
Cc: <xmlschema-dev@w3.org>

I'm probably missing the point, but in this case what you have here seems to 
be more of a complex type issue.

With:

<xsd:complexType name="Obj">
    <xsd:sequence>
       <xsd:element ref="ObjId"/>
    </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="Car">
    <xsd:complexContent>
       <xsd:restriction base="Obj">
          <xsd:sequence>
             <xsd:element ref="CarId"/>
          </xsd:sequence>
       </xsd:restriction>
    </xsd:complexContent>
 </xsd:complexType>

because ObjId and CarId have different names, I don't think they can ever be 
considered to be related, even if they share similar types.  If instead of

   <xsd:element ref="CarId"/>

you had:

   <xsd:element name="ObjId" type="CarId"/>

then there might be some scope for this to work.

Does the following schema snippet not work for you?:

<xsd:complexType name="Obj">
    <xsd:sequence>
       <xsd:element ref="ObjId"/>
    </xsd:sequence>
 </xsd:complexType>

<xsd:complexType name="Car">
    <xsd:complexContent>
       <xsd:extension base="Obj">
          <xsd:sequence>
             ...
          </xsd:sequence>
       </xsd:extension>
    </xsd:complexContent>
 </xsd:complexType>

HTH,

Pete.
--
=============================================
Pete Cordell
Tech-Know-Ware Ltd
for XML to C++ data binding visit
http://www.tech-know-ware.com/lmx/
http://www.codalogic.com/lmx/
=============================================

----- Original Message ----- 
From: "Guillaume Lebleu" <gl@brixlogic.com>
To: "C. M. Sperberg-McQueen" <cmsmcq@acm.org>
Cc: <xmlschema-dev@w3.org>
Sent: Thursday, March 08, 2007 2:52 PM
Subject: Re: SimpleType as valid derivation of abstract type in 1.1 ?


>
> C. M. Sperberg-McQueen wrote:
>> Why do you want abstract simple types?
>>
> I want abstract types that both simpleType or complexType can derive from.
>
> My use case is the following: I want to use XSD to define abstract 
> patterns and enforce these patterns. For instance, one pattern is "all my 
> Obj have an ObjId"
>
> See below code sample, hope it helps. If you tell me there is no other way 
> to do this, then I will submit to the list you mentioned.
>
> Thank you,
>
> Guillaume
>
> <!-- all Obj have an abstract ObjId -->
>
> <xsd:complexType name="Obj">
>    <xsd:sequence>
>       <xsd:element ref="ObjId"/>
>    </xsd:sequence>
> </xsd:complexType>
>
> <xsd:element name="ObjId" abstract="true"/>
> <xsd:complexType name="ObjId"  abstract="true"/>
>
> <!-- all Car are objects and have a CarId -->
>
> <!-- type CarId is a restriction of ObjId / cannot do this today -->
>
> <xsd:element name="CarId" type="CarId" substitutionGroup="ObjId"/>
>
> <xsd:complexType name="Car">
>    <xsd:complexContent>
>       <xsd:restriction base="Obj">
>          <xsd:sequence>
>             <xsd:element ref="CarId"/>
>          </xsd:sequence>
>       </xsd:restriction>
>    </xsd:complexContent>
> </xsd:complexType>
>
> 
Received on Friday, 9 March 2007 10:31:04 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:41 UTC