У меня есть набор сложных типов в моем файле схемы XML. В основном у меня есть куча «ответных» объектов. Каждый объект ответа следует тому же общему формату, но более конкретными способами. Так, например:
<xsd:simpleType name="Transition">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:complexType name="ResponseBlock"/>
<xsd:complexType name="Response">
<xsd:complexContent>
<xsd:sequence>
<xsd:element name="transition" type="dto:Transition"/>
<xsd:element name="data" type="dto:ResponseBlock"/>
</xsd:sequence>
</xsd:complexContent>
</xsd:complexType>
Я бы хотел иметь возможность иметь «подкласс» этого, где «transition» и «ResponseBlock» заменяются действительными «подклассами» каждого из этих типов. То есть Я уже получил их по ограничению / расширению и хочу включить их в ответ, который сам по себе получен путем ограничения:
<xsd:simpleType name="IDTransition">
<xsd:restriction base="dto:Transition">
<xsd:enumeration value="NEXT_PAGE"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="IDResponseBlock">
<xsd:complexContent>
<xsd:extension base="dto:ResponseBlock">
<xsd:sequence>
<xsd:element type="xsd:int" name="userID"/>
<xsd:element type="xsd:string" name="userName"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="IDResponse">
<xsd:complexContent>
<xsd:restriction base="Response">
<xsd:sequence>
<xsd:element name="transition" type="dto:IDTransition"/>
<xsd:element name="data" type="dto:IDResponseBlock"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
Таким образом, используя JAXB, я мог бы создать полностью объектно-ориентированную структуру наследования. Но это не похоже на компиляцию; Затмение показывает ошибку:
Derivection-OK-Restrict.5.4.2: Ошибка для типа 'IDResponse'. Частица типа не является допустимым ограничением частицы основания.
rcase-Recurse.2: не существует полного функционального отображения между частицами.
Есть идеи, как мне этого добиться?