我正在使用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結構平坦... –