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 文档的有效性。