DTD 构建模块学习笔记

什么是DTD?

DTD即“文档类型定义”(Document Type Definition),用于定义XML文档的结构、元素、属性和实体等信息。它可以约束XML文档中的数据类型和元素结构,以确保XML文档的有效性。

DTD 的语法

DTD由元素、属性、实体和注释四部分组成。下面我们将对其进行详细介绍。

元素

元素是XML文档中最基本的构建单元,用于描述XML文档中的数据类型和结构。在DTD语法中,元素可使用以下方式进行声明:

xmlCopy Code
<!ELEMENT 元素名 (子元素列表)>

其中,“元素名”是所声明的元素的名称,“子元素列表”是指当前元素的子元素或者为空。

属性

属性用于为元素提供附加的信息,例如元素的颜色、大小等信息。在DTD语法中,属性可使用以下方式进行声明:

xmlCopy Code
<!ATTLIST 元素名 属性名 属性类型 默认值>

其中,“元素名”是所要为其添加属性的元素的名称,“属性名”是属性的名称,“属性类型”是属性的数据类型,“默认值”则是该属性的缺省值。

实体

实体是用于描述XML文档中特殊字符的结构。在DTD语法中,实体可使用以下方式进行声明:

xmlCopy Code
<!ENTITY 实体名 “实体值”>

其中,“实体名”是所要声明的实体的名称,“实体值”则是该实体所代表的特殊字符或字符串。

注释

注释用于对DTD的声明进行说明和解释,不会在XML文档中显示。在DTD语法中,注释可使用以下方式进行声明:

xmlCopy Code
<!-- 这里是注释内容 -->

DTD 的实例

下面是一个简单的DTD实例,用于约束一个包含姓名、性别、年龄和籍贯信息的XML文档:

xmlCopy Code
<!DOCTYPE PERSON [ <!ELEMENT PERSON (NAME, SEX, AGE, PLACE)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT SEX (#PCDATA)> <!ELEMENT AGE (#PCDATA)> <!ELEMENT PLACE (#PCDATA)> <!ATTLIST PERSON ID CDATA #IMPLIED> ]>

在这个DTD中,元素“PERSON”包含四个子元素,分别为“NAME”、“SEX”、“AGE”和“PLACE”。其中,“NAME”、“SEX”、“AGE”和“PLACE”均为叶子元素,其内容由“#PCDATA”指定。同时,DTD还为“PERSON”元素添加了一个属性“ID”,其数据类型为CDATA,并且为可选项。