2016-11-09 72 views
1

我需要在下面陣列驗證XML請求數據:XSD模式與選擇

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

問題 - 我得或者(orgID)或(userOID)或(originIDproviderID)在一起。 'studyYear'將永遠在那裏。我如何才能實現它?如果需要更多信息,請寫下。我參考了這個link使用,以嘗試在xs:all內使用xs:choice,但不能得到它的工作。

回答

1

此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,或
  • originIDproviderID

根據要求。

+0

它很酷!但是,如果我添加可選的'元素'這將工作? –

+0

如果添加哪個可選元素在哪裏? – kjhughes

+0

在第一個'序列'就像一個學習年紀。還有一個問題:序列意味着嚴格的秩序? –