使用XSD

时间:2017-07-24 11:07:58

标签: xml dtd xsd-validation

XML:

<?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>

我应该验证姓名&#39;和&#39; Prev_name&#39;在我的XML中通过XSD。我并不担心其他标签。每当我传递没有这两个标签或其中一个标签的XML时,我的XML验证就会失败。如果我的XML有这两个标签,那么只有XML验证才能通过。

1 个答案:

答案 0 :(得分:2)

您无法真正对树的一点进行验证,您可以获得的最接近的是为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时,验证程序可能会为“未知”类型创建警告(以黄色下划线显示),但如果employee_name中缺少name或Prev_name,则会产生错误。如果要将额外元素添加到employee_name,它也会引发错误。

enter image description here