鉴于此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>
这两者之间的语义差异是什么?即名为element
和complexType
的{{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
。那么,这里发生了什么?
答案 0 :(得分:2)
与复杂类型相对应的类
在JAXB (JSR-222)中,Java类对应于复杂类型。命名复杂类型和匿名复杂类型的全局元素对应于根级别类。默认情况下,嵌套复杂类型生成为静态内部类。您可以更改此默认行为:
全球元素
如果全局元素与复杂类型(具有匿名复杂类型的全局元素)唯一关联,则将使用@XmlRootElement
进行注释。与全局类型对应的全局元素将对应@XmlElementDecl
类中的ObjectFactory
注释。
了解更多信息