部分验证XSD

问题描述:

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验证应该通过。

您不能真正对树的某一部分进行验证,最接近的就是为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