优快云+随笔+No.17+&&DTD

本文介绍DTD(文档类型定义)在XML文档中的作用与基本结构,包括如何定义文档结构、元素与属性,以及DTD的引用方式。

 

DTD的作用和基本结构
  DTD是文档类型定义,其中规定XML文档中的元素、属性、标记、文档中的实体及其相互关系。DTD为XML文档结构制定了一套规则。例如,一项DTD指定一个BOOK元素有一个ISBN子元素、一个TITLE子元素、一个或多个AUTHOR子元素,有或没有SUBTITLE等。

DTD的作用
  DTD可以为应用程序提供一种统一的XML文档格式。XML的可扩展性虽然提供了很高的灵活性,但有时需要文档格式统一。例如,为了使一部书易于排版,出版商会要求作者遵循一定的格式。如果作者用XML写作,那么出版商就能很容易地检查出作者是否遵守了DTD定义的预定格式,甚至找出作者在哪里以及怎样偏离了格式。

DTD有助于数据交流和共享。如果指定DTD,依靠清晰、准确的语法定义文档,程序员就不必为了理解XML文档而与文档的设计者面对面地交流。这些规则也形成了一种可靠的错误监测机制,程序员或解析器可以由此查找可能的错误。
  DTD可以使用户脱离实际数据就能知道文档的逻辑结构。这意味着可以将不同的样式和格式加在基本结构上,而对基本结构毫无损害。
  DTD可以验证数据的有效性。一个合法的文档必须符合DTD指定的约束条件,而且它的基本元素必须是在文档类型声明中指定的。只有符合DTD规则的XML文档才是有效的文档。

DTD的基本结构
  XML文档由元素和相应的属性组成。虽然我们还可以定义其他项,但元素和属性是组成XML文档的两个主要的要素。此外,元素的内容是通过其他元素或XML标准中规定的基本类型进行定义的。DTD必须能够定义文档中的所有元素、元素可以设置的属性以及元素之间的关系。下面通过一个案例来说明DTD文档的基本结构。

案例说明:DTD的基本结构。
程序名称:ch3-1.dtd
01  <?xml version="1.0"encoding="UTF-8"?>
02  <!ENTITY  Content "关于学习软件开发的图书信息列表">
03  <!ELEMENT Annotation (#PCDATA)>
04  <!ELEMENT Title (#PCDATA)>
05  <!ELEMENT Abstract (#PCDATA)>
06  <!ELEMENT Author (#PCDATA)>

07  <!ELEMENT Publisher (#PCDATA)>
08  <!ELEMENT PubDate (#PCDATA)>
09  <!ELEMENT Price (#PCDATA)>
10  <!ELEMENT Category (#PCDATA)>
11  <!ELEMENT Book (Title, Abstract,Author, Category, Publisher, PubDate, Price)>
12  <!ELEMENT BookList (Annotation,Book, Book)>
13  <!--"ISBN国际标准书号,唯一标识图书,定义为Book的属性"-->
14  <!ATTLIST Book     ISBN CDATA "7-5606-0492-7">

案例分析:DTD文档ch3-1.dtd定义了一个XML文档中所有元素属性和实体,用于描述图书信息。
  从第01行可以看出DTD文档也是从XML声明开始的。DTD验证是从SGML继承来的一种验证机制,在DTD中使用XML声明,可将XML的DTD和SGML的DTD区分开来,说明本文档用于定义XML文档,而不是定义SGML文档。该声明语句可以省略。

第02行定义了一个实体标记Content。案例ch3-1.xml的第03行引用了该实体,在浏览器中执行XML文档,Content实体将被DTD中定义的具体内容“关于学习软件开发的图书信息列表”替换。XML文档本体中定义的所要引用的实体必须在DTD中定义。
  第03行至第12行为元素定义,定义XML文档需要使用的所有元素标记的名称、相互关系、元素的可取值等。它们决定了XML文档的结构。

XML中引用DTD

  DTD是与文档相关的。通常,文档中包含一条用于与DTD建立关联的指令,当验证有效性的解析器读到该指令时,它获取DTD,并根据其中定义的规则对文档进行检验。DTD声明可以包含在XML中,也可以存在于独立的DTD文档中。下面分别介绍这两种DTD的引用方式。

内部引用方式
  内部引用方式将DTD直接嵌入到XML文档内部,在XML文档本体中对文档的元素、属性或实体进行DTD声明。嵌入到XML文档内部的DTD声明不能重复使用。例3-3中程序ch3-2.xml采用了内部引用DTD方式进行XML文档定义。

外部引用方式
  对XML元素、属性或实体等的声明可以包含在一个单独的DTD文件中,文件的扩展名为“.dtd”。外部引用DTD方式将XML文档以外的独立DTD文档和当前的XML文档关联起来。外部引用方式比较灵活,可重复利用同一份DTD文档,并使应用系统易于同步更新及管理。

引用外部DTD文件有两种方式:SYSTEM引用方式和PUBLIC引用方式。SYSTEM引用方式主要用于引用一个作者或组织所编写的众多XML文件中通用的DTD。PUBLIC引用方式主要用于引用一个由权威机构制定的、提供给特定行业或公众使用的DTD。下面分别介绍这两种DTD引用方式。

1.SYSTEM引用方式
  SYSTEM声明外部DTD的方式表示DTD是私有的。外部DTD声明的语法格式为:
  <!DOCTYPE 根元素名称SYSTEM “DTD_URL”>
  上述语法格式说明如下:
  (1) “<!”表示一条指令的开始,“>”表示指令的结束。DOCTYPE表示指令为文件类型定义指令。

(2)  SYSTEM和DOCTYPE都是关键字,必须大写。
  (3) “DTD_URL”指外部DTD文件的URI或文件路径,可以是相对路径,也可以是绝对路径,指示XML处理器可在该位置取得DTD文档。
  (4) 该语句必须出现在XML文档的序言区。

 

2011/9/27

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值