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