码迷,mamicode.com
首页 > 其他好文 > 详细

XML(二)有效的XML: DTD(文档类型定义)介绍与三种使用方式

时间:2016-05-14 12:48:45      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

有效的XML: DTD(文档类型定义)介绍

有效(Valid)的XML文档

  首先,XML文档是个格式正规的(Well-formed)XML文档;

 

  其次,需要满足DTD的要求,这样的XML文档称为有效的(Valid)XML文档

 

DTD

 

  DTD,即文档类型定义——Document Type Definition。

 

  DTD用来描述XML文档的结构,

 

  一个DTD文档包含:

 

    元素(ELEMENT)的定义规则;

 

    元素之间的关系规则;

 

    属性(ATTLIST)的定义规则;

 

    可使用的实体(ENTITY)或符号(NOTATION)规则。

 

DTD文档与XML文档实例的关系

  类与对象;

  数据库表结构与数据记录;

 

 

  有了DTD,每个XML文件可以携带一个自身格式的描述。

 

  有了DTD,不同组织的人可以使用一个通用DTD来交换数据。

 

  应用程序可以使用一个标准DTD校验从外部世界接收来的XML数据是否有效。

 

  可以使用DTD校验自己的XML数据。

 

如何生成DTD文档

   DTD文档有三种应用形式:

 1.内部DTD文档

  

<!DOCTYPE 根元素[定义内容]>

 

 2.外部DTD文档

 

<!DOCTYPE 根元素 SYSTEM "DTD文件路径">

 

 3.内外部DTD文档结合

 

<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

 

  技术分享

内部DTD

  一个内部DTD的例子:

  上半部分是DTD,下面是XML文档,文档要符合DTD。

  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
    <!ELEMENT poem (author, title, content)>
    <!ELEMENT author (#PCDATA)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT content (#PCDATA)>
]>
<!--为元素poem定义了三个子元素author title content,
这三个元素必须要出现并且必须按照这个顺序
少元素不行,多元素也不行
-->
<!--指明author,title,content里面的内容是字符串类型-->
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

 

上面的文档就是格式良好,并且有效的。详见其中的注释。

#PCDATA(Parsed Character Data) ,可解析的字符数据,即字符串。

上面部分是DTD,在下面编写XML文档时,如果不符合其DTD规范,用XMLSpy做检查的时候,是well-formed的,但是却不是valid的。

<Students>
</Students>

 

Validate检查的时候就会报错,根元素和DTD中的poem不符。

 

外部DTD

上面是一个内部DTD的例子,下面用一个外部的DTD:

首先,新建一个DTD文档,文件名叫dtd_1.dtd,内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>

 

然后,新建一个XML文档。

如果只写XML元素内容,那么它是一个格式良好的,却不是有效的文档,因为找不到DTD。

需要加入外部DTD文件的名称(同一个路径下只给出文件名即可)。

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_1.dtd">
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

 

内外部DTD结合

 DTD的内容也可以有些放在外部,有些放在内部,如下:

文件dtd_2.dtd

 

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>

 

XML文档:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_2.dtd"[
<!ELEMENT poem (author, title, content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

 

 

 

 

 

 

 

 

 

比如根元素写:

 

 

 

 

 

 

 

 

 

  

 

XML(二)有效的XML: DTD(文档类型定义)介绍与三种使用方式

标签:

原文地址:http://www.cnblogs.com/nanjingwangbo/p/5492296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!