我准备了complexType
,这是一个包含两个属性的枚举:
<xsd:complexType name="Action">
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="A"/>
<xsd:enumeration value="B"/>
<xsd:enumeration value="C"/>
</xsd:restriction>
</xsd:simpleContent>
<xsd:attribute name="attrA" type="xsd:string" />
<xsd:attribute name="attrB" type="xsd:string" />
</xsd:complexType>
问题是,JAXB
阻止我为该代码创建Java类,我收到以下错误:
使用时,基类型必须是complexType 其内容 type很简单,或者,只有在指定了restriction的情况下,才会出现混合类型 内容和可填充粒子,或者,仅当指定了扩展名时,才是简单类型。 'string'不满足这些条件。
在线验证员向我展示了我的代码是正确的。如何更改此设置以使xjc
转换我的架构定义?
答案 0 :(得分:2)
您的xsd格式不正确。请尝试以下complexType
<xs:complexType name="Action">
<xs:simpleContent>
<xs:extension base="ActionValue">
<xs:attribute name="attrA" type="xs:string" />
<xs:attribute name="attrB" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="ActionValue">
<xs:restriction base="xs:string">
<xs:enumeration value="A" />
<xs:enumeration value="B" />
<xs:enumeration value="C" />
</xs:restriction>
</xs:simpleType>