且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

xml学习3

更新时间:2022-08-13 08:01:25

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、自定义元素