有一个复杂的复杂类型定义,它在choice
中具有相同元素的不同组合。
这使Java的xjc
生成器发疯。它为所有元素生成一个List<Object>
而不是单独的属性。
我想知道是否有一种方法可以使用<xs:redefine>
或其他方法重新定义复杂类型。我不想创建原始xsd的完整副本,而是想将其包含在一个较小的文件中。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.editeur.org/onix/2.1/reference"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.editeur.org/onix/2.1/reference"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element ref="A" />
<xs:element ref="B" minOccurs="0"/>
</xs:sequence>
<xs:element ref="B" />
</xs:choice>
<xs:element ref="C" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="A">
<xs:complexType></xs:complexType>
</xs:element>
<xs:element name="B">
<xs:complexType></xs:complexType>
</xs:element>
<xs:element name="C">
<xs:complexType></xs:complexType>
</xs:element>
</xs:schema>
所需的重新定义:
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element ref="A" minOccurs="0"/>
<xs:element ref="B" minOccurs="0"/>
<xs:element ref="C" />
</xs:sequence>
</xs:complexType>
</xs:element>
更新
在choiceContentProperty
中设置<jaxb:globalBindings>
不能解决问题,因为现在我有两个属性:List<Object> aAndBOrB
和C c