DTD(Document Type Definition)文档类型定义 和 文档类型声明是不一样的 。文档类型声明是在xml文件中引入DTD 。
当我们在使用外部DTD的时候 <?xml version="1.0" encoding="gb2312" standalone="no"?> standalone一定要设置为no
文档类型声明可以包含或者引用一个 文档类型定义 ,也就是 我们所说的内部DTD和外部DTD
格式良好的 xml文件需要遵循xml语法规范 。而有效的xml文件就需要遵循 DTD 文档类型定义 。
这个DTD文件规定了 xml中各个节点之间的关系 。
我们可以使用<!DOCTYPE greeting[<!ELEMENT greeting(#PCDATA)>]> 引入内部DTD,这样做不需要验证,但是也有缺点 ,就是多个xml需要引用同一个DTD的时候就需要书写多份DTD。为了解决这个问题 我们可以吧DTD放在后缀 .dtd的文件中 通过外部引用来实现。
两种引入外部DTD的方法
1、
<!DOCTYPE 根元素名字 SYSTEM DTD的URL> //可以是Internet 也可以是 一个本地文件相对路径 表示是私有的DTD
例如:
<!DOCTYPE greeting SYSTEM http://www.my.com/xml.dtd>
我们可以直接使用相对URI
2、
<!DOCTYPE 根元素的名称 PUBLIC DTD名称 DTD的URL> //引入外部的DTD 必须是Internet上的一个绝对URL DTD 名称只能出现在 PUBLIC 引用中
PUBLIC 用来声明公共DTD DTD名称也称为公共标识符 ,这个DTD 存放在摸个地方 XML解析器 按照某种规则 根据DTD名称检索DTD如果找不到 那么就会按照
DTD的外部URL(也就是系统标示符)来 检索。 如果一个DTD是 ISO标准 那么 DTD名字以 ISO开始 如果是一个非ISO批准的那么以-开始
标准DTD那么以 +开始
例如下面:
"-//xiaowei//xml//EN" 第一个- 表示非标准DTD ,//后表示DTD所有者 第二个//后是描述信息 第三个 //后是语种
<!DOCTYPE root PUBLIC "-//xiaowei//xm//EN" http://www.xiaowei.com//xml.dtd > 这就是一个公共DTD的引用 。
xml文件的组成单元 :
1、xml的声明语句
2、DOCTYPE语句dtd声明
3、注释
4、CDATA区
5、自定义元素