java - 如何更正 JAXB 生成器的 XSD?

标签 java xml xsd jaxb xjc

我准备了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 类,我收到以下错误:

When is used, the base type must be a complexType whose content type is simple, or, only if restriction is specified, a complex type with mixed content and emptiable particle, or, only if extension is specified, a simple type. 'string' satisfies none of these conditions.

在线 validator 显示我的代码是正确的。如何更改此设置以使 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>

关于java - 如何更正 JAXB 生成器的 XSD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896646/

相关文章:

java - java中如何分割字符串

java - 将 JAXB 生成的类用于需要具有模式的整数的元素

xml - 如何将特定属性转换为元素

python - 使用 Python 解析 XML 文件

c# - 0xF8 是 UTF-8 编码的 XML 文档中的有效字节吗?

javax.xml.validation.SchemaFactoryConfigurationError : Provider for class javax. 无法创建xml.validation.SchemaFactory

java - 特定字段的可空属性值的 Jaxb 自定义

Java红外设备

Java多线程声音崩溃

java - 如何模拟 JTextField 上的单击?相当于 JButton doClick()?