I have two xsds.  One imports the other one and contains a type that
inherits from a type within the imported file.  XmlBeans properly
generates a class that extends the base class.  When I use XmlBeans to
create a document, XmlBeans does not properly set the xsi:type.  If I
place the inherited type within the imported xsd, the generated XML
properly contains the xsi:type attribute.

 

If the changeType() method is called when the type is in the same xsd,
the proper type is returned.  When called with a type that is in the
second xsd that inherits the base type, XmlBeans is not able to change
the schema type.  Is this expected behavior, or a defect?  Is there an
XmlOption or other configuration that is required to get this to work?

 

If I create an XML document with the generated XmlBean classes with an
element inherited from both xsds I get the following:

 

<Main xmlns="http://www.example.org/XsdTest";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

  <Base remoteProp="subProp" baseAttr="baseAttr" xmlns=""/>

  <Base baseAttr="base" anotherAttr="another" xsi:type="xsd:LocalType"
xmlns:xsd="http://www.example.org/XsdTest"; xmlns=""/>

</Main>

 

Note that the second element uses the type that inherits from the
original xsd.  It has the xsi:type properly set.  The first element is
from the secondary xsd that imports the first.  If I use the
changeType() method on the first element, I get the original XmlBean
object without any warnings what went wrong, even though I set the
actual concrete class into the array.

 

Thanks,

 

  Chris Schmidt 

 

Reply via email to