2016-02-19 91 views
2

我覺得這是一個簡單的問題,但我找不到任何解決方案。在我的xsd中,我有一個請求對象,它是一個複雜的元素,它有3個元素。例如:GetApplicationRequest包含元素1(名稱),元素2(dob),元素3(license_id)。要創建有效請求,需要(elemen1和element 2)或(element 3)中的任意一個。所以如果你用元素3創建一個請求,其他2不應該在那裏,如果你用元素1創建一個請求,那麼元素2是必需的,元素3不應該在那裏。Java - 如何指定xsd元素取決於另一個元素

我可以在這裏使用選擇標籤,但這意味着只需要3個元素中的一個。我需要在這裏選擇和依賴。因此,在元素1和元素3之間進行選擇,並且如果傳遞元素1,則還需要元素2。

爲了給出背景,目前這個請求對象只有元素1和元素2,並且都是必需的。我在這裏添加元素3。我不想爲(元素1和元素2)創建另一個複雜類型。這是因爲,這個服務已經在很多地方被使用,我必須在這些地方改變請求對象。

感謝您的幫助。

回答

3

根據你所描述的似乎複雜類型像這樣將滿足您的要求:

<xs:complexType name="GetApplicationRequest"> 
<xs:choice> 
    <xs:sequence> 
    <xs:element ref="name"/> 
    <xs:element ref="dob"/> 
    </xs:sequence> 
    <xs:element ref="license_id"/> 
</xs:choice> 
</xs:complexType> 
+0

這正是我想要的,謝謝。出於某種原因,我認爲我們無法做到這一點,因爲這意味着只選擇名稱中的一個元素,dob,license_id。現在這變成選擇(名稱和dob)或(license_id)。有一個序列在這裏有所作爲嗎? –

相關問題