users@jaxb.java.net

subclasses get xsi:type instead of real type

From: <christer.larsson_at_seb.se>
Date: Wed, 20 May 2009 10:22:30 +0200

Probably been asked before but I can't find a suitable answer to a
problem I am facing.


I have the following schema:


<xs:complexType name="Schedule">
    <xs:complexContent>
        <xs:sequence>
          <xs:element minOccurs="0" name="Events">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" name="ScheduleEvent"
type="ScheduleType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
    </xs:complexContent>
</xs:complexType>

<xs:complexType name="ScheduleType">
        <xs:sequence>
              <xs:element name="event" type="xs:string"/>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="State">
        <xs:complexContent>
              <xs:extension base="ScheduleType">
                        <xs:sequence>
                          <xs:element name="secondEvent"
type="xs:string"/>
                      </xs:sequence>
              </xs:extension>
            </xs:complexContent>
</xs:complexType>


When adding a State to Schedule and marshalling the message I get the
following output:

<Schedule>
<ScheduleEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns0:State">
<secondEvent>test</secondEvent>
</ScheduleEvent>
</Schedule>

I was expecting:

<Schedule>
        <State>
                <secondEvent>test</secondEvent>
        </State>
<Schedule>

Is this the expected behaviour?