我准备了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
谁的内容
类型很简单,或者,只有在指定了限制的情况下,才是带有混合类型的复杂类型
内容和可清空粒子,或者(仅在指定扩展名的情况下)简单类型。
“字符串”不满足这些条件。
在线验证器向我展示了我的代码是正确的。如何更改此设置以使
xjc
转换我的架构定义? 最佳答案
您的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>