部分验证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)提供一组规则。
<?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中,它也会引发错误。