我觉得这是一个简单的问题,但我找不到任何解决方案。在我的 xsd 中,我有一个请求对象,它是一个复杂的元素,其中包含 3 个元素。例如:GetApplicationRequest 具有元素 1(名称)、元素 2(dob)、元素 3(license_id)。要创建有效的请求,需要(元素 1 和元素 2)或(元素 3)之一。因此,如果您使用元素 3 创建请求,则其他 2 个元素不应存在,而如果您使用元素 1 创建请求,则需要元素 2,而元素 3 不应该存在。
我可以在此处使用选择标签,但这意味着仅需要 3 个元素之一。我在这里需要选择和依赖。因此要在元素 1 和元素 3 之间进行选择,如果传递元素 1,则还需要元素 2。
先说明一下背景,目前这个请求对象只有元素 1 和元素 2,而且两者都是必需的。我在这里添加元素 3。我不想为 (Element 1 and Element 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>
关于Java - 如何指定xsd元素依赖于另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509858/