XSD中element和complexType之间的语义差异

时间:2012-11-01 14:04:44

标签: xsd jaxb

鉴于此XSD:

<xsd:element name="ServiceList">
    <xsd:complexType>
        <xsd:sequence>
            ...
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:complexType name="ServiceList">
    <xsd:sequence>
        ...
    </xsd:sequence>
</xsd:complexType>

这两者之间的语义差异是什么?即名为elementcomplexType的{​​{1}}的直接子项。

我问的原因是我尝试在XSD中执行此操作:

schema

但是当使用Maven JAXB插件将其编译成Java类时,我只能创建<xsd:element name="AvailableServices" type="cm:ServiceList" /> <xsd:element name="ExistingServices" type="cm:ServiceList" /> <xsd:complexType name="ServiceList"> <xsd:sequence> ... </xsd:sequence> </xsd:complexType> 。生成的类中似乎不存在new ServiceList()AvailableServices。那么,这里发生了什么?

1 个答案:

答案 0 :(得分:2)

与复杂类型相对应的类

JAXB (JSR-222)中,Java类对应于复杂类型。命名复杂类型和匿名复杂类型的全局元素对应于根级别类。默认情况下,嵌套复杂类型生成为静态内部类。您可以更改此默认行为:

全球元素

如果全局元素与复杂类型(具有匿名复杂类型的全局元素)唯一关联,则将使用@XmlRootElement进行注释。与全局类型对应的全局元素将对应@XmlElementDecl类中的ObjectFactory注释。

了解更多信息