DTD 实例学习笔记

DTD(Document Type Definition,文档类型定义)是一种用于验证 XML 文档结构的语法规则。通过定义合法的元素以及它们之间的关系,可以确保 XML 文档的有效性。

DTD 的基本语法

一个简单的 DTD 示例:

Copy Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

其中,DOCTYPE 关键字表示文档类型声明,html 表示文档类型名称,PUBLIC 是公共的文档类型,-//W3C//DTD XHTML 1.0 Transitional//EN 是 DTD 的标识符,http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 是 DTD 的位置。

DTD 的实例

假设有一个简单的 XML 文档,包含了一些书籍的信息,如下:

Copy Code
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Effective Java</title> <author>Joshua Bloch</author> <price>30.00</price> </book> <book id="002"> <title>Head First Design Patterns</title> <author>Eric Freeman</author> <price>40.00</price> </book> </books>

我们可以使用 DTD 定义这个文档类型,确保它的有效性。下面是这个文档类型的 DTD 定义:

Copy Code
<!ELEMENT books (book*)> <!ELEMENT book (title, author, price)> <!ATTLIST book id ID #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)>

其中,<!ELEMENT> 表示元素的定义,books 表示元素名称,(book*) 表示该元素包含零个或多个 book 元素。<!ATTLIST> 表示属性列表的定义,book 表示元素名称,id 表示属性名称,ID 表示属性类型,#REQUIRED 表示该属性必须出现。(#PCDATA) 表示元素值为纯文本。

通过在 XML 文档中引用这个 DTD,可以确保文档的有效性,即只有符合上述 DTD 规则的文档才被视为有效的 XML 文档。

实例解析

在上面的例子中,我们定义了一个 books 元素,其中包含了零个或多个 book 元素。而每个 book 元素包含了一个 title 元素、一个 author 元素和一个 price 元素,并且必须包含一个 id 属性。

例如:

Copy Code
<books> <book id="001"> <title>Effective Java</title> <author>Joshua Bloch</author> <price>30.00</price> </book> </books>

这是一个有效的 XML 文档,因为它符合上述 DTD 规则。而如果 book 元素缺少 id 属性,或者包含了未定义的子元素,就是无效的 XML 文档。

总结

DTD 是一种用于验证 XML 文档有效性的语法规则,通过定义合法的元素以及它们之间的关系,可以确保 XML 文档的有效性。在实际应用中,我们可以根据实际需求定义不同的 DTD,并引用它们来验证 XML 文档的有效性。