2017-07-24 94 views
0

XML:部分驗證XSD

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <employee_name> 
    <name>Ram</name> 
    <Prev_name>Kumar</Prev_name> 
    </employee_name> 
    <project ppact="BT">ODC</project> 
    <team size="small">CMS</team> 
</root> 

XSD:

<?xml version="1.0"?> 
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="request"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" /> 
     <xs:element name="Prev_name" type="xs:string" minOccurs="1" maxOccurs="1" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我應該驗證 '名稱' 和 'Prev_name' 在我的XML通過XSD的存在。我不會爲其他標籤困擾。無論何時我傳遞沒有這兩個標籤或其中一個標籤的XML,我的XML驗證都會失敗。如果我的XML有這兩個標籤,那麼只有XML驗證應該通過。

回答

0

您不能真正對樹的某一部分進行驗證,最接近的就是爲employee_name提供規則。但是你需要爲根元素(root)提供一組規則。

enter image description here

<?xml version="1.0" encoding="utf-8" ?> 
<!--Created with Liquid Studio 2018 - Developer Bundle (Educational) 16.0.0.7863 (https://www.liquid-technologies.com)--> 
<xs:schema elementFormDefault="qualified" 
      version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="employee_name"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="name" 
          type="xs:string" 
          minOccurs="1" 
          maxOccurs="1" /> 
       <xs:element name="Prev_name" 
          type="xs:string" 
          minOccurs="1" 
          maxOccurs="1" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="root" 
       type="xs:anyType" /> 
</xs:schema> 

當XML驗證針對該架構驗證可以創建爲「未知」類型的警告(用黃色下劃線所示),但如果名稱或Prev_name從employee_name丟失會造成錯誤。如果要將其他元素添加到employee_name中,它也會引發錯誤。

enter image description here