DTD 总结学习笔记
DTD(Document Type Definition)文档类型定义,是一种用于定义 XML 文档结构和规范的语言。它定义了 XML 文档的元素、属性、实体以及它们之间的关系。
DTD 基本语法
DTD 定义由 DOCTYPE
声明开始,其中包含了文档根元素的名称和 DTD 的公共标识符或系统标识符。
xmlCopy Code<!DOCTYPE 根元素名称 PUBLIC|SYSTEM "DTD 公共标识符或系统标识符">
DTD 定义主要由元素定义、属性定义和实体定义组成。
元素定义
元素定义由 ELEMENT
关键字开始,然后是元素名称和元素内容。元素内容可以是元素序列、元素选择或元素混合。元素序列表示必须按照一定顺序出现的元素集合,元素选择表示可以按任意顺序出现的元素集合,元素混合则是两者的结合。
以下是一个简单的元素定义示例:
xmlCopy Code<!ELEMENT book (title, author, price)>
属性定义
属性定义由 ATTLIST
关键字开始,然后是属性所属元素和属性名称。接着是属性类型(CDATA、ID、IDREF、IDREFS、ENTITY、ENTITIES、NMTOKEN、NMTOKENS、NOTATION 和 ENUMERATION),最后是默认值。
以下是一个简单的属性定义示例:
xmlCopy Code<!ATTLIST book isbn CDATA #IMPLIED>
实体定义
实体定义有两种类型:内部实体和外部实体。内部实体由 <!ENTITY>
关键字开始,然后是实体名称和实体值。外部实体由 <!ENTITY>
关键字开始,然后是实体名称、系统标识符和公共标识符。
以下是一个简单的实体定义示例:
xmlCopy Code<!ENTITY company "XYZ Inc.">
DTD 示例
以下是一个简单的 XML 文档及其 DTD 定义:
xmlCopy Code<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library SYSTEM "library.dtd">
<library>
<book>
<title>Learn Python the Hard Way</title>
<author>Zed A. Shaw</author>
<price>26.00</price>
</book>
<book>
<title>Head First Java</title>
<author>Kathy Sierra, Bert Bates</author>
<price>35.50</price>
</book>
</library>
以下是对应的 DTD 定义:
xmlCopy Code<!ELEMENT library (book+)>
<!ELEMENT book (title, author, price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST book isbn CDATA #IMPLIED>
在这个示例中,DTD 定义了 library
元素必须包含至少一个 book
元素,而 book
元素必须包含一个 title
元素、一个 author
元素和一个 price
元素。另外,book
元素可以有一个可选属性 isbn
,其默认值为空。