2011-9-27 DTD

 

 

                      DTD

 DTD是一套关于标记的语法规则,它定义了文档的逻辑

结构,规定了文档中所使用的元素、实体、元素的属性、

元素与实体之间的关系。DTD告诉你可以在哪些文档中使

用哪些标记,各标记出现的次序,哪些标记出现在哪些标

记中,哪些标记有属性等等。

      DTD是XML文件的验证机制,定义好DTD,就可以使用

XML解析器对编写好的XML文档进行DTD检查,判断XML

使用DTD的好处

用DTD提供统一格式。例如,用DTD规定个人简历文档的逻辑结构,包括所需填写内容和内容排列方式,所有按照这个DTD编写的个人简历都将具有统一格式。

用DTD验证数据有效性。DTD约束文档逻辑结构,可以根据DTD检查数据,验证其是否符合规定要求,确保数据正确和有效。

根据DTD编写文档样式单。DTD能在不提供原始资料的情况下,表示出一个网页或文档的架构元素,这意味着用户能先根据DTD为未来的文档编写样式单,然后再安全且不破坏结构的把用户的资料放上去,提高工作效率。

在XML文档中引入DTD主要有3种方式:

Ø  内部DTD

Ø  外部DTD

Ø  公用DTD

所谓内部DTD是指DTD与XML数据定义放在同

一份文档中,即将DTD定义在XML文档内部。内

部DTD紧跟在XML声明和处理指令之间。

  文档类型声明以“<!DOCTYPE>” 开始,以“]>

结束。在XML处理指令和根元素之间定义。

例: < ? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>

<! DOCTYPE 根元素名称 [

   <! ELEMENT  子元素名称 (#PDATA)>

]>

 

外部文件类型定义存在于独立文件中,文件扩

展名为“.dtd”。外部DTD的好处是:可以方便地

被多个XML文档共享,只需要定义一份DTD文

档,即可为多个XML文档定义语义约束。

<!DOCTYPE  根元素名  SYSTEM " DTD-URL ">

<!DOCTYPE  Book  SYSTEM “http://www.crazyit.orgSystem/dtd/book.dtd”>

Ø   :关键字,指该外部DTD是私有的

Ø  DTD-URL:通过URL将外部DTD引用到XML文档中,可以是绝对地址也是 

                      可相对地址

有一种外部DTD,是由某个权威机构制定,供

特定行业或公司,这种DTD又被称为公用DTD。

<!DOCTYPE  根元素名  PUBLIC  " DTD-NAME “  “DTD-URL”>

公用DTD与外部DTD区别在于:公用DTD使用PUBLIC代替了原来的SYSTEM,并增加了DTD标识名。

使用ELEMENT声明XML元素的语法,语法格式如下:

Ø  元素声明以“<!”开始,以“>”结束

Ø  元素声明指令“ELEMENT”为关键字,必须大写

Ø  元素名:为当前元素指定的元素名称

Ø  元素内容: 元素名后面的内容用来指定元素的内容类型,它可以分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA 5种类型。

Ø  <!ELEMENT    元素名   元素内容>

 

EMPTY空, ANY任意

DTD必须定义XML文档中允许出现的所有

元素。

#PCDATA字符串

注意:

#PCDATA必须放在最前面

#PCDATA和各子元素之间只能用竖线(|)分割

子元素1,子元素2和子元素3之间的竖线(|)并不是表示互斥,而只是表  示这些元素能无序的重复出现,而且次数不受限制

不要试图在各个子元素之后添加?,*。+等表示频率的修饰符

 

Ø  有序的子元素

Ø  互斥的子元素

Ø  无序的子元素

用英文逗号(,)作为子元素之间的分隔符,则子

元素之间必须遵守所定义的顺序。

互斥的子元素表明一系列子元素之间只能出现

其中一次。互斥子元素使用竖线(|)分隔,以竖

线(|)分隔的多个元素只能出现其中之一。

子元素的出现频率通过在元素声明后紧跟一个表

示频率的特殊标记来表示,DTD中表示频率的特殊

标记有3个:

Ø  +: 表明子元素可以出现1次或多次

Ø  *:  表明子元素可以出现0次或多次

Ø  ?:  表明子元素可以出现0次或1次

  如果在定义子元素时,没有在子元素后指定任

何表示频率的特殊标记,则表明这些子元素只能

出现一次,且必须一次

对属性的限定条件:

v  #REQUIRED: 必须的属性,意味着必须为该元素提供该属性

v  #IMPLIED: 该属性是可有可无的

v  #FIXED: 该属性的值是固定的,定义是必须制定固定值。使用该元素时无需为其分配该属性,XML处理器会自动为给属性增加固定值

CDATA   是简单的纯文本字符类型,是最常用

的类型,将简单的文本用做属性值。可以包括任何

字符串,但不允许使用“<”,“>”,“&”,“””,“‘”。如果需

要使用必须使用实体引用。属性值和元素内容都

可以是文本类型,但是定义的方法不同

<! ATTLIST  Student  name CDATA   #REQUIRED>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值