Unfortunately, there is a known limitation: both the head element and the substitution have to be in the same jar file (i.e. compiled at the same time). See http://issues.apache.org/jira/browse/XMLBEANS-299 Radu
________________________________ From: Christopher Hunt [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 04, 2008 5:12 AM To: user@xmlbeans.apache.org Subject: Substitution Group issue when trying to substitute a new namespace? Hi there, Let me first state that, wow, xmlbeans really rocks. I'm loving it. Well done again Apache community. I have two sets of schemas - each set relating to the separate generation of xmlbean classes representing the xsds. Both sets of generated classes are on my classpath. In one set, I generate all of the classes required for the GML set of schemas. The other set comprises just one xsd that extends the GML schemas. In the context of the GML schemas, I can use substitution groups just fine e.g. AbstractTimeSliceType abstractTimeSliceType = historyPropertyType .addNewAbstractTimeSlice(); MovingObjectStatusType movingObjectStatusType = (MovingObjectStatusType) abstractTimeSliceType .substitute(new QName( "http://www.opengis.net/gml/3.2", "MovingObjectStatus"), MovingObjectStatusType.type); and I get the correct substitution. However if I try and substitute something from my other schema (the extensions to GML) e.g. if I use my own extension of MovingObjectStatusType: JourneyStatusType journeyStatusType = (JourneyStatusType) movingObjectStatusType .substitute( new QName( "http://www.classactionpl.com/gml/journeyFeatures/2.0", "JourneyStatus"), JourneyStatusType.type); then I get a ClassCastException i.e. the substitution isn't returning the JourneyStatusType. From the doco, in order for the operation to succeed, several conditions must hold: * the container of this type must be an element = TRUE * a global element with the name newName must exist and must be in the substition group of the containing element = TRUE i.e.: <element name="JourneyStatus" type="journeyFeatures:JourneyStatusType" substitutionGroup="gml:MovingObjectStatus"/> * the newType type must be consistent with the declared type of the new element = TRUE i.e.: <complexType name="JourneyStatusType"> <complexContent> <extension base="gml:MovingObjectStatusType"> ... </complexContent> </complexType> Is there a known limitation/issue with substituting an element in the way I'm trying to i.e. substituting from a separate namespace? Cheers, -C P.S. I'm also happy if someone spots a mistake in what I'm doing above! Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.