我准备了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>

09-11 20:51