- From: Michael Kay <mike@saxonica.com>
- Date: Wed, 16 Aug 2006 18:34:43 +0100
- To: "'Antoli, Leo'" <Leo.Antoli@Misys.com>, <xml-dev@lists.xml.org>, <xmlschema-dev@w3.org>
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