2016-02-19 92 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)。有一个序列在这里有所作为吗? –

相关问题