我正在使用XSD,并且在其中包含许多xsd:元素的xsd:choice。现在我想稍微简化一下,因此我分组了xsd:元素,这样我就可以将它们外包(并重用)到单独的xsd:元素中。如何将xsd:choice的元素组合在一起并将它们外包?
前:
<!-- main.xsd -->
<xsd:element name="account">
<xsd:complexType>
<xsd:choice>
<xsd:element name="login-id" type="xsd:string" />
<xsd:element name="login-username" type="xsd:string" />
<xsd:element name="login-password" type="xsd:string" />
<xsd:element name="login-note" type="xsd:string" />
<xsd:element name="contact-name" type="xsd:string" />
<xsd:element name="contact-address" type="xsd:string" />
<xsd:element name="contact-phone" type="xsd:string" />
<xsd:element name="contact-note" type="xsd:string" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
后:
<!-- main.xsd -->
<xsd:include schemaLocation="outsourced.xsd" />
<xsd:element name="account">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="login" />
<xsd:element ref="contact" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
<!-- outsourced.xsd -->
<xsd:element name="login">
<xsd:complexType>
<xsd:choice>
<xsd:element name="login-id" type="xsd:string" />
<xsd:element name="login-username" type="xsd:string" />
<xsd:element name="login-password" type="xsd:string" />
<xsd:element name="login-note" type="xsd:string" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="contact">
<xsd:complexType>
<xsd:choice>
<xsd:element name="contact-name" type="xsd:string" />
<xsd:element name="contact-address" type="xsd:string" />
<xsd:element name="contact-phone" type="xsd:string" />
<xsd:element name="contact-note" type="xsd:string" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
可悲的是这将创建一个新的类 '登录',并生成Java的源代码,从它,我想,以避免在 '接触'。有没有办法将外包分组的xsd:元素来简化xsd:choice?
现在的问题是澄清了一下。 –
这就是我的问题,我不知道该怎么做(确切地说)。 –
不幸的是,如果你想很好地“集合”一组元素,我不知道没有创建一个新类的方法。如果您使用JAXB,则需要一个自定义绑定文件。原则上,我喜欢这种方式,而不是创建一个包装元素,因为它会保持你的XML结构平坦... –