XML 验证


XML验证是确保XML文档有效性的一种技术。XML验证分为两种类型:DTD验证和XSD验证。它们都可以用来验证XML文档的结构和内容是否符合规范。

DTD验证

DTD(文档类型定义)是XML的标准验证机制之一。它定义了XML文档的元素、属性和实体。DTD验证是从根元素开始的验证过程。在DTD中,必须声明所有元素的名称、类型和属性,以及它们出现的顺序和数量。DTD中还定义了实体,它们是应用在文档中的一些特殊字符,如"<"、">"、"&“和”’“等。 以下是一个简单的DTD示例:

<!DOCTYPE XMLCode [
   <!ELEMENT root (child)>
   <!ELEMENT child (#PCDATA)>
]>

这个DTD中有一个名为“root”的元素,它包含一个名为“child”的元素。子元素“child”的类型指定为“#PCDATA”,这表示它包含字符数据。在XML文档中,可以使用以下语句引用DTD:

<!DOCTYPE root SYSTEM "example.dtd">

其中“root”要与DTD中定义的根元素的名称匹配。

XSD验证

XSD(XML模式定义)是XML的另一种标准验证机制,它允许开发人员定义更为复杂的文档结构。XSD使用XML本身来描述XML文档结构和内容的规范。与DTD相比,XSD分离了元素的所有信息(包括名称、类型、属性、出现顺序和数量),从而使其更利于复杂文档的管理。

以下是一个简单的XSD示例:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="http://www.example.com"
   xmlns="http://www.example.com"
   elementFormDefault="qualified">
   <xs:element name="root">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="child" type="xs:string"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

这个XSD描述了一个名为“root”的元素,它包含一个名为“child”的元素。子元素“child”的类型指定为“xs:string”,这表示它包含文本字符串。在XML文档中,可以使用以下语句引用XSD:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.example.com"
   xsi:schemaLocation="http://www.example.com example.xsd">
   <child>Hello World!</child>
</root>

其中,xmlns指定了默认命名空间,xsi:schemaLocation指定了XSD文件的位置。您可以在这段XML中看到,“root”和“child”都使用了http://www.example.com命名空间。

总结:

XML验证是确保XML文档有效性的一种重要技术。 DTD验证和XSD验证是两个常见的XML验证类型。DTD可以验证文档是否符合预定义的结构和内容规范,而XSD可以实现更复杂的验证规范,包括数据类型、枚举值和键控约束等。 在应用XML时,开发人员应选择适当的验证机制,并根据自己的需求进行定义和设置。