Java - 如何指定xsd元素依赖于另一个元素

标签 java web-services soap xsd wsdl

我觉得这是一个简单的问题,但我找不到任何解决方案。在我的 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/

相关文章:

java - 如何从 Java 类进行 SOAP Web 服务调用?

java - Akka 没有在 Servlet 中完全关闭

java - 如何分解一个数字并将其数字相乘?

java - 调用 EntityManager.merge() 时未设置 ID

web-services - WSDL操作和SOAP : how this actually works?

java - Web 服务处理程序中的静态 block

c# - 如何使用 WCF 在 SOAP 请求中包含空 xml 元素?

java - M2E Maven 插件 : Importing Maven project is throwing error in Eclipse JUNO

java - 使用 SOAP Web 服务 - Java VS PHP

java - AWS Lambda 和 API 网关以及 SOAP 客户端