Hi, I have a schema which takes a list of "Record" types. Each 'Record' is complex type of SenderDetails, Recipientdetails, shipdate, description and Ref elements. The main.xsd is as follows:
--------------------------------------------------------------------------------------------- <xs:element name="records"> <xs:complexType> <xs:sequence> <xs:element name="record" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="SenderDetail" type="cmn:AddressType" /> <xs:element name="Shipdate" type="xs:string"/> <xs:element name="RecipientDetail" type="cmn:AddressType" /> <xs:element name="Description" type="xs:string"/> <xs:element name="Ref" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> ------------------------------------------------------------------------------------------------- Now, the SenderDetail and the RecipientDetail may be of type 'Employee' or 'Department'. Employee and Department are both derived from 'AddressType' as shown. --------------------------------------------------------- <xs:complexType name="Department"> <xs:complexContent> <xs:extension base="cmn:AddressType"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="keyvalues" type="cmn:Valuelist"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Employee"> <xs:complexContent> <xs:extension base="cmn:AddressType"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Title" type="xs:string" /> <xs:element name="Empid" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> --------------------------------------------------------- After mapping the schema to java objects, here I am using the following code to check whether the 'SenderDetail' in the incoming xml is of type 'Employee' or 'Department'. 'records[]' is the array of records already extracted from incoming xml. Here the output of "System.out.println( records[i].getSenderDetail() ); " Output: <xml-fragment xsi:type="o:Employee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="SomeX/Records" xmlns:o="SomeX/Stakeholder" xmlns:c="SomeX/CommonTypes"> <c:street1>456 Oak Lane</c:street1> <c:street2>Second floor bld I</c:street2> <c:city>xxx</c:city> <c:state>xxx</c:state> <c:country>US</c:country> <c:zipcode>xxx</c:zipcode> <c:phone>xxx</c:phone> <c:comail>xxx</c:comail> <o:Name>xxx</o:Name> <o:Title>xxx</o:Title> <o:Empid>xxx</o:Empid> </xml-fragment> Now I am expecting the output of the following code --------------------------------- AddressType p = records[i].getSenderDetail(); if (p instanceof Employee){ System.out.println("Sender is of type Employee"); }else if (p instanceof AddressType){ System.out.println("Sender is of type AddressType"); } --------------------------------- to be "Sender is of type Employee" But I am getting "Sender is of type AddressType" records[i].getSenderDetail().schemaType() on this record is giving me the base schema type "AddressType" How can I get the derived schema type ? How can i know whether this is a Employee/Department type? Thank You. -- View this message in context: http://old.nabble.com/XMLBeans-with-Derived-ComplexTypes-tp27827393p27827393.html Sent from the Xml Beans - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@xmlbeans.apache.org For additional commands, e-mail: user-h...@xmlbeans.apache.org