users@jaxb.java.net

Re: Possible inconsistency in the way treatRestrictionLikeNewType behaves

From: Wolfgang Laun <wolfgang.laun_at_gmail.com>
Date: Sat, 27 Jun 2009 20:19:51 +0200

On Fri, Jun 26, 2009 at 11:57 PM, Lucas Madar <lucas_at_mcsnw.com> wrote:

> Hello,
>
> I have a class hierarchy that's generated like this (without the
> treatRestrictionLikeNewType set):
>
> class BaseEntity
> class BaseSeries extends BaseEntity
> class MeasurementSeries extends BaseSeries
>
> In xsd, BaseSeries is an extension on BaseEntity, and MeasurementSeries is
> a restriction on BaseEntity.
>

The XSD contains, in the definition of measurementSeries: <xs:restriction
base="baseSeries">; so why should this be a restriction on *BaseEntity*


>
> With treatRestrictionLikeNewType set, I would expect to get
> MeasurementSeries extends BaseEntity, since it's not really involved in the
> restriction, but instead I get an isolated class. It's unfortunate that
> there's no clean way to do this in xsd that translates nicely into java.
>

The generated classes, as you describe them, seem to be an accurate binding
of the schema.

-W


>
> Here's an xsd snippet:
>
> <xs:complexType name="baseEntity" abstract="true">
> <xs:sequence>
> <xs:element ref="identifier" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="baseSeries" abstract="true">
> <xs:complexContent>
> <xs:extension base="baseEntity">
> <xs:sequence>
> <xs:element ref="measuringDate" minOccurs="0"
> maxOccurs="1"/>
> <xs:element ref="derivationDate" minOccurs="0"
> maxOccurs="1"/>
> </xs:sequence>
> </xs:extension>
> </xs:complexContent>
> </xs:complexType>
>
> <xs:element name="measurementSeries">
> <xs:complexType>
> <xs:complexContent>
> <xs:restriction base="baseSeries">
> <xs:sequence>
> <xs:element ref="identifier" minOccurs="0"/>
> <xs:element ref="measuringDate" minOccurs="0"
> maxOccurs="1"/>
> </xs:sequence>
> </xs:restriction>
> </xs:complexContent>
> </xs:complexType>
> </xs:element>
>
> Thanks,
> Lucas
>