RE: Diamond problem using extensions and substitution groups

I don't think there's any way you can have MyCar in the substitution groups
of both Car and MyVehicle without one being in the substitition group of the
other.

Given that constraint, you can make Car, MyVehicle, and MyCar all derive
from Vehicle by extension, using named model groups to reuse the definitions
of the added elements.

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Antoli, Leo
> Sent: 16 August 2006 17:35
> To: xml-dev@lists.xml.org; xmlschema-dev@w3.org
> Subject: Diamond problem using extensions and substitution groups
> 
> 
> Dear all,
> 
> I have the following schema element types:
> 
> 
> Vehicle  <---   MyVehicle
> 
>      ^               ^  
>      |               |
> 
>     Car    <-- 	 MyCar
> 
> 
> Vehicle is the base element type. Car extends from Vehicle.
> 
> I want to add new elements to Vehicle, so I've created MyVehicle.
> Now I want to extend Car with MyCar, but I want MyCar also to 
> have MyVehicle new child elements.
> 
> 
> Any idea about how to get this? I don't want to change or 
> redefine Vehicle or Car as they are official elements, but I 
> want to be able to extend them to add new child elements.
> 
> The problem in Java or other languages is only solved for 
> operations (using
> interfaces) but not for properties.
> 
> I was thinking in using element groups instead of inheritance 
> but then I can't use substitution groups. I want to use them 
> so I could be able to use MyVehicle in all places in a XML 
> document where Vehicle is allowed. 
> 
> Thank you very much.
> 
> Kind Regards,
> Leo Antoli
> 
> 

Received on Wednesday, 16 August 2006 17:35:00 UTC