Java - 如何指定xsd元素取决于另一个元素
问题描述:
我觉得这是一个简单的问题,但我找不到任何解决方案。在我的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)创建另一个复杂类型。这是因为,这个服务已经在很多地方被使用,我必须在这些地方改变请求对象。
感谢您的帮助。
答
根据你所描述的似乎复杂类型像这样将满足您的要求:
<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>
这正是我想要的,谢谢。出于某种原因,我认为我们无法做到这一点,因为这意味着只选择名称中的一个元素,dob,license_id。现在这变成选择(名称和dob)或(license_id)。有一个序列在这里有所作为吗? –