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 类型)。