Java - 如何指定 xsd 元素取决于另一个元素
Java - how to specify xsd element depends on another element
我觉得这是一个简单的问题,但我找不到任何解决方案。在我的 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>
我觉得这是一个简单的问题,但我找不到任何解决方案。在我的 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>