什么是DTD(文档类型定义)? 一个DTD可以看做是标记语言的语法文件,它是一套定义XML标记如何使用的规则。DTD定义了元素、元素的属性和取值,以及哪个元素可以被包含在另一个元素中的说明。DTD还可以用于定义实体。 请看一看下面的例子,它是一个关于email的DTD: <!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)> <!ELEMENT From (#PCDATA) > <!ELEMENT To (#PCDATA) > <!ELEMENT Cc (#PCDATA) > <!ELEMENT Date (#PCDATA) > <!ELEMENT Subject (#PCDATA) > <!ELEMENT Body (#PCDATA | P | Br)* > <!ELEMENT P (#PCDATA | Br)* > <!ATTLIST P align (left | right | justify) "left" > <!ELEMENT Br EMPTY >
根据上面这个DTD的内容,与之符合的XML文档具备如下特征: l 有一个From、一个To、一个可选择的Cc、一个可选择的Date、一个Subject和一个body。 l From 、To、Cc、Date、Subject元素只包含文本信息。 l Body元素可以含有文本和零或者多个P和Br元素。 l P元素可以包含文本和零或者多个Br元素。 l P元素有一个align属性,它的可取值范围是left、justify 或者right,默认值是left。 l Br元素是空的。
XML解析器将使用这个DTD来解析XML文档。DTD使我们能够发布文档以供其他人共享。XML文档应该具备告诉XML执行程序寻找DTD的指令,XML文件开头的<!DOCTYPE> 元素就执行了这个寻找功能。请看下面的例子: <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> .. .. .. </Mail>
有效XML文档以及简化格式的XML文档 XML文档分为两类:有效的XML文档以及简化格式的XML文档。 一个简化格式的XML文档必须遵从下面几个原则: l 至少有一个元素 l 遵守XML规范 l 根元素(比如上面例子中的<Mail>)应该不被其他元素所包含 l 适当的元素嵌套是必须的 l 属性值应该在问号内 l 除了保留实体外,所有的实体都要声明