DTD 简介


DTD 简介

DTD(Document Type Definition)是一种用于定义XML文档结构和元素规则的文档类型定义语言。它是XML的一个重要组成部分,用于确保XML文档的正确性和有效性。

DTD的特点是简单、易学、易用,在XML的发展过程中扮演了重要的角色。它只定义了文档的结构和元素的规则,而没有定义文档的内容。DTD中使用元素、属性和实体等结构来定义XML文档的结构。

DTD的语法

DTD采用基于元素和属性的语法,主要有以下几个方面:

元素的定义

元素是XML文档的标记标签,用于表示XML文档的数据内容,DTD中使用元素定义来规定XML文档中可使用的元素类型。

元素的定义格式如下:

<!ELEMENT 元素名称 元素内容>

其中,元素名称是元素的标识符,元素内容规定了元素所包含的子元素类型和数量。举例来说,如果我们要定义一个名为“book”的元素,可以使用以下语句:

<!ELEMENT book (title,author,price)>

这个语句表示,book元素必须包含一个title元素、一个author元素和一个price元素。

属性的定义

属性是用来描述元素或文本节点的特征和属性,可以增强XML文档的表现力,DTD中使用属性定义来规定元素中可使用的属性名和属性值。

属性的定义格式如下:

<!ATTLIST 元素名称 属性名 属性类型 属性值>

其中,元素名称是元素的标识符,属性名是属性的名称,属性类型指定属性的数据类型,属性值是属性的默认值。

举例来说,如果我们要为上面定义的book元素添加一个属性ISBN,可以使用以下语句:

<!ATTLIST book ISBN CDATA #IMPLIED>

CDATE表示属性的数据类型是字符串,#IMPLIED表示该属性是可选的。

实体的定义

实体是XML文档中具有特殊含义的字符序列,可以用来代替一些特殊字符,避免与XML标签语法冲突。DTD中使用实体定义来规定XML文档中可使用的实体名称和实体替换字符。

实体的定义格式如下:

<!ENTITY 实体名称 "实体内容">

其中,实体名称是实体的标识符,实体内容是实体替换字符序列。举例来说,如果我们要定义一个名为“circle”的实体,可以使用以下语句:

<!ENTITY circle "&#x25CF;">

这个语句表示“circle”实体等价于Unicode字符集中的黑色实心圆。

DTD验证

通过DTD定义,可以检查XML文档的格式、结构和内容是否符合预期。验证XML文档的方法主要有两种:

内部DTD验证

将DTD定义放置在XML文档的顶部,成为文档的一部分。XML解析器可以通过解析DTD来完成XML文档的验证。

<?xml version="1.0"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<catalog>
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>An in-depth look at creating applications 
            with XML.</description>
    </book>
</catalog>

外部DTD验证

将DTD定义存放在外部文件,XML文档通过DOCTYPE声明引用外部DTD验证文件,在XML解析时读取实现验证。

<?xml version="1.0"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<catalog>
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>An in-depth look at creating applications 
            with XML.</description>
    </book>
</catalog>

总结

DTD的定义和使用,是XML技术中最基础的部分。通过DTD的定义,可以明确XML文档的书写规则,保证XML文档正确且有效。同时,DTD的验证也使得XML文档具有了更强的规范性和可维护性。