Xml 选择XSD模式

Xml 选择XSD模式,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我需要验证以下数组中的XML请求数据: <studyYear></studyYear> <orgID></orgID> <originID></originID> <providerID></providerID> <userOID></userOID> 问题-我必须同时获取(orgID)或(userOID)或(originID和providerID)“学习之耳”永远在那

我需要验证以下数组中的XML请求数据:

<studyYear></studyYear>
<orgID></orgID>
<originID></originID>
<providerID></providerID>
<userOID></userOID>

问题-我必须同时获取(
orgID
)或(
userOID
)或(
originID
providerID
)“学习之耳”永远在那里。我怎样才能意识到这一点?如果你需要更多的信息,就写吧。我引用了这个来使用,以便尝试在
xs:all
中使用
xs:choice
,但无法使它工作。

这个XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="r">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="studyYear" type="xs:string"/>
        <xs:choice>
          <xs:element name="orgID" type="xs:string"/>
          <xs:element name="userOID" type="xs:string"/>
          <xs:sequence>
            <xs:element name="orginID" type="xs:string"/>
            <xs:element name="providerId" type="xs:string"/>
          </xs:sequence>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

将要求
studyYear
遵循以下情况之一:

  • orgID
    ,或
  • userOID
    ,或
  • originID
    providerID

按要求。

太酷了!但是,如果我添加可选的
元素
,它会起作用吗?如果您添加哪个可选元素,在哪里?在第一个
序列中
就像一个studyYear。还有一个问题:
sequence
意味着严格的顺序?是的,
studyYear
可以设置为可选。是的,
xs:sequence
表示严格的顺序。好吧,也许我会使用它,但是有相同的方法,但是避免严格的顺序?