ch3DTD规范XML文档.ppt_第1页
ch3DTD规范XML文档.ppt_第2页
ch3DTD规范XML文档.ppt_第3页
ch3DTD规范XML文档.ppt_第4页
ch3DTD规范XML文档.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章 文档类型定义,3.1 概述 3.2 DTD声明 3.3 DTD语法,在实际开发中,我们经常会遇到这样一个有趣的 问题:如何与他人交流自己设计的结构? 目前很多主流的浏览器已经提供了对XML的支持,但这 种支持仅限于对XML内容的显示。如果所开发的程序还包 含了新的词汇表,而通过这些新的词汇就可以明白作者的 设计结构,那么作为XML词汇表的设计者,就必须通过某 种通用的方式来说明词汇表的语法规则。为此,XML 1.0 提供了一种机制文档类型定义(DocumentType Definition,DTD),并将其作为规范的一部分。,DTD简介,DTD是一套关于标记的语法规则,它定义了文档的逻辑 结构,规定了文档中所使用的元素、实体、元素的属性、 元素与实体之间的关系。DTD告诉你可以在哪些文档中使 用哪些标记,各标记出现的次序,哪些标记出现在哪些标 记中,哪些标记有属性等等。 DTD是XML文件的验证机制,定义好DTD,就可以使用 XML解析器对编写好的XML文档进行DTD检查,判断XML 文档内容是否为有效的XML文档内容。,使用DTD的好处,用DTD提供统一格式。例如,用DTD规定个人简历文档的逻辑结构,包括所需填写内容和内容排列方式,所有按照这个DTD编写的个人简历都将具有统一格式。 用DTD验证数据有效性。DTD约束文档逻辑结构,可以根据DTD检查数据,验证其是否符合规定要求,确保数据正确和有效。 根据DTD编写文档样式单。DTD能在不提供原始资料的情况下,表示出一个网页或文档的架构元素,这意味着用户能先根据DTD为未来的文档编写样式单,然后再安全且不破坏结构的把用户的资料放上去,提高工作效率。,DTD声明,使用DTD定义了合法的语义约束后,必须 让XML文档引入该语义约束,以表明该XML 文档遵守哪种语义约束。在XML文档中引入 DTD主要有2种方式: 内部DTD 外部DTD,内部DTD,所谓内部DTD是指DTD与XML数据定义放在同一份文档 中,即将DTD定义在XML文档内部。内部DTD紧跟在XML 声明和处理指令之间。 文档类型声明以“” 开始,以“”结束。 DOCTYPE是DTD声明的关键字,不能写错、忽略 习惯上要求大写。 部分包括对元素、属性和实体等的声明。,内部DTD实例,1 2 4 5 6 George John ,注意,XML文档的结构良好性,要求内部DTD必须放 在XML的序言部分,不能放在其他位置,否则 XML处理器在处理文档时,将发出出错警告。, George John ,外部DTD,外部文件类型定义存在于独立文件中,文件扩 展名为“.dtd”。外部DTD的好处是:可以方便地 被多个XML文档共享,只需要定义一份DTD文 档,即可为多个XML文档定义语义约束。,System :关键字,指该外部DTD是私有的 DTD-URL:通过URL将外部DTD引用到XML文档中,可以是绝对地址也是 可相对地址, George John ,外部DTD实例,注意: 为了让DTD能支持非西欧字符,应该为外部DTD文档指定声明,DTD声明和XML声明的语法完全相同。,注意,独立的外部DTD文件第一行的DTD声明与XML 声明一样。但是它不一是XML文档,而只是为 XML定义语义约束的文档。 从程序的可重用性和可读性考虑,我们推荐开 发者使用外部DTD来设计XML应用程序,这样有 助于保持XML文档的简洁,结构明晰,方便阅读 和编辑等。,DTD对元素声明【重点掌握】,使用ELEMENT声明XML元素的语法,语法格式如下: 元素声明以“”结束 元素声明指令“ELEMENT”为关键字,习惯上要求大写 元素名:为当前元素指定的元素名称 元素内容: 包括EMPTY(空元素)、 ANY(任意型元素)、Mixed(混合型元素)、Children(子元素类型)和#PCDATA 5种类型。 量词:包括*(0无限次)、+(1无限次)、?(0次或1次).,空元素类型EMPTY,该元素只可能有属性不能有元素内容。声明的 空元素的语法如下: 例如:定义 元素br是空元素,定义任意类型的元素,ANY是DTD中使用很频繁的一个关键字,特别 是对于文档根元素的声明。在定义一个DTD文档 时通常很难准确地确定一个元素是否具有子元素 的情况,此时一般的做法是指定该元素的子元素 为ANY型(表示可以是任意的元素),这样在它之 中可以包含任何数据、任何声明的子元素及其数 据和子元素的组合。如果需要定义某个元素的值 可以是任意类型。声明的语法如下:, 书籍列表 ,定义任意类型的元素, , XML基本教程 书籍列表 ,哪些是有效的XML文档,无效的XML文档,有效的XML文档,有效的XML文档,注意:,DTD必须定义XML文档中允许出现的所有 元素。由此可见,虽然XML文档允许开发者自由 扩展各种标签,但一旦使用DTD为其增加了语义 约束,该XML文档就只能出现在DTD中定义过的 元素。, XML基本教程 书籍列表 ,XML文档中出现了在DTD中没有定义的标签,所以是一个无效的XML文档。,定义字符串内容的元素,定义只能是字符串的元素的语法格式如下:, 书籍列表, 疯狂Java讲义 ,无效的XML文档,有效的XML文档,定义子元素,元素包含子元素是XML文档中最常见的情形, DTD可以有效地定义各元素之间的父子关系,从而 有效地描述整个文档结构。定义元素包含的子元素 时,各个元素之间存在几种逻辑关系。 有序的子元素 互斥的子元素 无序的子元素,有序的子元素,用英文逗号(,)作为子元素之间的分隔符,则子 元素之间必须遵守所定义的顺序。,元素下面有四个元素,它们的顺序是: ,, Struts 2.1权威指南 李刚 79.00 该书详细介绍了Struts 2.1各功能和用法 轻量级Java EE企业开发实战 李刚 89.00 该书主要介绍了一种流行的轻量级企业应用架构 ,互斥的子元素,互斥的子元素表明一系列子元素之间只能出现 其中一次。互斥子元素使用竖线(|)分隔,以竖 线(|)分隔的多个元素只能出现其中之一。,子元素出现的频率,子元素的出现频率通过在元素声明后紧跟一个表 示频率的特殊标记来表示,DTD中表示频率的特殊 标记有3个: +: 表明子元素可以出现1次或多次 *: 表明子元素可以出现0次或多次 ?: 表明子元素可以出现0次或1次 如果在定义子元素时,没有在子元素后指定任 何表示频率的特殊标记,则表明这些子元素只能 出现一次,且必须一次,组合子元素, 疯狂Java讲义 李刚 轻量级Java EE企业应用实战 李刚 99.00 深入而全面地介绍了Java编程的各方面的内容 ,无序的子元素,从理论上讲,DTD没有专门为定义无序子元素 提供语法,如果希望使用DTD来表示某个元素之 内可以接受无序的子元素。, 李刚 作者2 轻量级Java EE企业开发实战 李刚 89.00 该书主要介绍了一种流行的轻量级企业应用架构 李刚 疯狂XML讲义 深入介绍XML、DTD、Schema等相关知识 69 ,回答:,和4个元素确实具有互斥关系,不过需要指出的是:上面的DTD已经使用括弧将他们编成一组,也就是说他们仅仅在该元素组之内是互斥,而不是在,元素之内互斥。,提问:DTD中明明定义了,和4个元素之间具有互斥关系,它们怎么可以同时出现呢?,作 者,作 者,书名,作者,价格,简要介绍,作者,书名,简要介绍,价格,定义混合内容元素,某个元素既有字符串内容,又包含子元素,被 称为混合内容的元素。一般来说,XML文档不推 荐使用混合内容的元素。,注意: #PCDATA必须放在最前面 #PCDATA和各子元素之间只能用竖线(|)分割 子元素1,子元素2和子元素3之间的竖线(|)并不是表示互斥,而只是表 示这些元素能无序的重复出现,而且次数不受限制 不要试图在各个子元素之后添加?,*。+等表示频率的修饰符,定义混合内容元素,是混合内容元素,可以包含字符串,也可以包 含子元素,而且可以出现多次 也是混合内容元素,可以包含字符串,又可以包含 和两个元素,而且这两个元素的出现 次数也比较随意,DTD对属性声明【重点掌握】,属性是描述元素的额外信息的,是对元素的修饰与补 充。一般来说,信息详实的XML文档都是一个特点,即元 素通过属性来描述边缘信息。 在 DTD 中,属性通过 ATTLIST 声明来进行声明。一 个属性声明可以声明一个元素的多个属性。,required.dtd,required.xml, Struts 2.1权威指南 kongyeeku 79.00 该书详细介绍了Struts 2.1的各种功能和用法 ,fixed.dtd,fixed.xml, Struts 2.1权威指南 李刚 79.00 该书详细介绍了Struts 2.1的各种功能和用法 轻量级J2EE企业开发实战 李刚 63 该书主要介绍了一种流行的轻量级企业应用架构 ,“地址”属性被定义#FIXED约束规则,即它是一个具有固定值的属性,值为“广州”。也就是说如果在定义元素时,可以不指定“地址”属性,XML解析器会自动增加这个属性,属性值是“广州”。如果指定了“地址”属性,其值必须是“广州”。,无效的XML文档,属性列表,当一个给定的元素需要定义多个属性的时候, 可以将属性声明合并成为一个属性列表。,注意,如果声明属性前没有声明元素,XML处理器将发布一个警告,而不是一个错误 一个ATTLIST属性声明中必须至少有一个属性名 当一个元素含有多个属性时,可以只用一个属性列表声明 当一个给定元素的一个属性有多个声明时,第一个声明会绑定给该属性,后面则会被忽略,定义属性类型,表3.1 DTD支持的属性类型,字符类型,CDATA 是简单的纯文本字符类型,是最常用 的类型,将简单的文本用做属性值。可以包括任何 字符串,但不允许使用“”,“&”,“”,“”。如果需 要使用必须使用实体引用。属性值和元素内容都 可以是文本类型,但是定义的方法不同,枚举类型,声明了属性的备选值列表,属性必须从该列表 中选择一个值作为属性值。,ID、IDREF、 IDREFS类型,ID:如果要为某个元素设置唯一行的标识,ID就是一个很好的选择。元素中被指定为ID的属性,只能出现一次,且必须是唯一的。ID的属性值必须是一个XML名称。ID值唯一地标识了它附属的那个元素。每个元素只能有一个确定为ID的属性,ID属性默认值必须是#IMPLIED或者是#REQUIRED。,IDREF:必须与一个指定为另外一个元素的ID属性的名称匹配。被定义成IDREF类型的属性值取自于另外一个元素的ID属性值。, 在那桃花盛开的地方 蒋大为 蒋大为,我国著名的男高音歌唱家。这一首歌流行了20多年! 在那希望的田野上 李谷一 李谷一,我国著名的歌唱家。这首歌从1984年开始流行,直到现在 ,每个员工隶属于公司中不同的部门管理,每个部 门有一个经理,每个员工可能被一个或者两个经 理领导。, 李云朋 王书闽 陈娟 .,作业,根元素是“汽车” “汽车”元素顺序包含:品牌,车主,保险公司(0到多个),银行贷款(至少一个),维修地点 “车主”必须拥

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论