DTD 验证学习笔记
什么是 DTD?
DTD,全称为 Document Type Definition,即文档类型定义。它是一种用于规定 XML 文档结构和元素的验证方法。DTD 定义了每个 XML 文档可以包含哪些元素、元素的顺序、元素可以包含哪些属性等信息,这样就可以确保 XML 文档的结构是正确的。
DTD 的语法
DTD 语法定义了多种组成元素,包括标签、元素、属性和实体。下面是一些常见的 DTD 元素:
标签
标签是 DTD 中最重要的元素之一,它表示 XML 文档中的元素。DTD 中标签的语法如下所示:
Copy Code<!ELEMENT element-name (child-element-name*)>
其中,element-name
表示元素名称,而 (child-element-name*)
则表示子元素名称可重复出现多次。
元素
元素是 XML 文档中的一个基本构建块。DTD 中元素的语法如下所示:
Copy Code<!ELEMENT element-name content-definition>
其中,element-name
表示元素名称,而 content-definition
则表示元素内容的类型,可以是 EMPTY、ANY、PCDATA 或任何其他定义过的元素。
属性
属性是指 XML 元素中的某些附加信息。DTD 中属性的语法如下所示:
Copy Code<!ATTLIST element-name attribute-name attribute-type default-value>
其中,element-name
是元素名称,attribute-name
是属性名称,attribute-type
是属性数据类型,default-value
是属性的默认值。
实体
实体是一些具有特殊含义的 XML 字符。DTD 中实体的语法如下所示:
Copy Code<!ENTITY entity-name "entity-value">
其中,entity-name
表示实体名称,而 "entity-value"
则表示实体的值。
DTD 验证实例
下面是一个简单的 DTD 验证实例,它验证了一个 XML 文档中的一组学生信息。XML 文档的结构如下所示:
Copy Code<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students SYSTEM "students.dtd">
<students>
<student id="1">
<name>张三</name>
<age>20</age>
<gender>男</gender>
</student>
<student id="2">
<name>李四</name>
<age>21</age>
<gender>女</gender>
</student>
</students>
而对应的 DTD 文件则是 students.dtd
,它的内容如下所示:
Copy Code<!ELEMENT students (student*)>
<!ELEMENT student (name, age, gender)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
在这个 DTD 文件中,我们定义了:
students
元素必须包含至少一个student
元素,且可以包含多个student
元素;- 每个
student
元素必须包含一个name
、一个age
和一个gender
元素,并且name
、age
和gender
元素的顺序不能改变; - 每个
student
元素必须包含一个id
属性,该属性的类型为 CDATA(即文本类型),并且是必需的; name
、age
和gender
元素都只能包含文本内容(即 PCDATA 类型)。