687文档类型定义DTD

上传人:仙*** 文档编号:48000033 上传时间:2021-12-29 格式:PPT 页数:27 大小:736KB
收藏 版权申诉 举报 下载
687文档类型定义DTD_第1页
第1页 / 共27页
687文档类型定义DTD_第2页
第2页 / 共27页
687文档类型定义DTD_第3页
第3页 / 共27页
资源描述:

《687文档类型定义DTD》由会员分享,可在线阅读,更多相关《687文档类型定义DTD(27页珍藏版)》请在装配图网上搜索。

1、 四川托普学院计科系四川托普学院计科系 软件技术教研室软件技术教研室 文档类型定义(文档类型定义(DTD) 目标目标 章节目标:章节目标: 通过本章学习,你应该能够:通过本章学习,你应该能够: 掌握掌握DTD的基本结构的基本结构 掌握掌握DTD在在XML文档中的引用文档中的引用 掌握掌握DTD中元素和属性的声明中元素和属性的声明 引言引言 在实际开发中,我们经常会遇到这样一个有趣的问题:在实际开发中,我们经常会遇到这样一个有趣的问题:如何与他人交流自己设计的结构?如何与他人交流自己设计的结构? 目前很多主流的浏览器已经提供了对目前很多主流的浏览器已经提供了对XML的支持,但的支持,但这种支持仅

2、限于对这种支持仅限于对XML内容的显示。如果所开发的程内容的显示。如果所开发的程序还包含了新的词汇表,而通过这些新的词汇就可以序还包含了新的词汇表,而通过这些新的词汇就可以明白作者的设计结构,那么作为明白作者的设计结构,那么作为XML词汇表的设计者,词汇表的设计者,就必须通过某种通用的方式来说明词汇表的语法规则。就必须通过某种通用的方式来说明词汇表的语法规则。为此,为此,XML 1.0提供了一种机制提供了一种机制文档类型定义文档类型定义(DocumentType Definition,DTD),并将其作为),并将其作为规范的一部分。规范的一部分。DTD文档结构文档结构 例例3-1含有内部含有内

3、部DTD的的XML文档。文档。!DOCTYPE 联系人列表联系人列表 &content; 张三张三 001 A公司公司 (010)62345678 五街五街1234号号 北京市北京市 北京北京 DTD中的元素声明中的元素声明 元素声明的语法元素声明的语法 元素类型声明的基本语法如下:元素类型声明的基本语法如下: 控制元素的内容控制元素的内容 根据元素所包含的内容,即通过元素内容模型(根据元素所包含的内容,即通过元素内容模型(ECM)可以将元素内容)可以将元素内容类型归纳为以下六种:类型归纳为以下六种: 简单类型:元素内容只能是文本字符内容,且没有属性;简单类型:元素内容只能是文本字符内容,且没

4、有属性; 包含简单内容的复杂类型:元素内容只能是文本字符内容,但可以有包含简单内容的复杂类型:元素内容只能是文本字符内容,但可以有属性;属性; 包含复杂内容的复杂类型:元素内容可以包含子元素,也可以有属性;包含复杂内容的复杂类型:元素内容可以包含子元素,也可以有属性; 混合内容类型:元素内容既可以有文本字符内容,也可以包含子元素,混合内容类型:元素内容既可以有文本字符内容,也可以包含子元素,同时还可以有属性;同时还可以有属性; 空内容类型:元素内容为空,但可以有属性,此类元素一般都带有属空内容类型:元素内容为空,但可以有属性,此类元素一般都带有属性;性; 任何内容类型:元素内容不受限制,也可以

5、有属性。任何内容类型:元素内容不受限制,也可以有属性。简单类型声明简单类型声明 简单类型表示元素只能含有文本字符,声明语法如下:简单类型表示元素只能含有文本字符,声明语法如下: 例如对例例如对例3-1中的中的“说明说明”元素的声明:元素的声明: 对于这个声明,以下的对于这个声明,以下的“说明说明”元素的使用都是合法的:元素的使用都是合法的: &content; 某公司部分联系人信息某公司部分联系人信息包含简单内容的复杂类型声明包含简单内容的复杂类型声明 带有简单内容的复杂类型的元素类型声明(带有简单内容的复杂类型的元素类型声明(ETD)采)采用的结构与简单类型声明的结构一样。但是在该元素用的结

6、构与简单类型声明的结构一样。但是在该元素上还有属性定义,即还要在上还有属性定义,即还要在DTD 中给该元素声明属性。中给该元素声明属性。 如例如例3-1中的中的“电话电话”元素的声明:元素的声明:对于这个声明,对于这个声明,“电话电话”元素的以下使用是合法的:元素的以下使用是合法的: (010)62345678 13880443013包含复杂内容的复杂类型声明包含复杂内容的复杂类型声明 复杂内容表示元素内容可以包含其他元素作为该元素复杂内容表示元素内容可以包含其他元素作为该元素的子元素。复杂类型表示该元素上可以有属性。对复的子元素。复杂类型表示该元素上可以有属性。对复杂内容的声明,只需将含有简

7、单内容的复杂类型的声杂内容的声明,只需将含有简单内容的复杂类型的声明中内容模型(明中内容模型(ECM)部分改为相应的子元素即可,)部分改为相应的子元素即可,语法如下:语法如下: 对于所包含子元素,可以控制其出现的先后顺序,出对于所包含子元素,可以控制其出现的先后顺序,出现的次数,从子元素中进行选择,还可以对子元素进现的次数,从子元素中进行选择,还可以对子元素进行分组。行分组。(1)控制子元素出现的先后顺序)控制子元素出现的先后顺序 在这种格式下,元素拥有哪些子元素、每个子元素出现的次数和位置都有在这种格式下,元素拥有哪些子元素、每个子元素出现的次数和位置都有明确的规定,在具体的文档实例中,必须

8、严格执行。这就是子元素列表明确的规定,在具体的文档实例中,必须严格执行。这就是子元素列表的设置方式。语法如下:的设置方式。语法如下: 如:如: 这个声明中,这个声明中,“个人信息个人信息”就可以包含两个就可以包含两个“喜好喜好”子元素,以子元素,以下实例是合法的:下实例是合法的: 张三张三 男男 书法书法 音乐音乐 (2)控制元素出现的次数)控制元素出现的次数 可以利用简单的符号来控制元素出现的次数。可以利用简单的符号来控制元素出现的次数。DTD支持的可以控制支持的可以控制元素出现次数的符号有:元素出现次数的符号有: ? 0次或次或1次次 1次或多次次或多次 0次或多次,即任意次次或多次,即任

9、意次(3)从元素中进行选择)从元素中进行选择 有时需要在两个或多个互斥的元素中选择其中一个。从多个元素有时需要在两个或多个互斥的元素中选择其中一个。从多个元素中进行选择使用中进行选择使用“或或”符号即符号即“|”,语法如下:语法如下: 如:如: (4)对子元素进行分组)对子元素进行分组 对子元素进行分组的语法如下:对子元素进行分组的语法如下:!ELEMENT element(child_element,(child_element,),) 如:如:混合内容类型声明混合内容类型声明 混合内容类型的元素允许其内容可以既包含字符数据又含混合内容类型的元素允许其内容可以既包含字符数据又含有子元素。声明

10、此类元素的基本语法如下:有子元素。声明此类元素的基本语法如下: 例如:例如: 元素既有字符数据又可包含子元素,从表面上看元素内容的限制少了,元素既有字符数据又可包含子元素,从表面上看元素内容的限制少了,但这样会扰乱文档的层次结构,一般在完成的文档中是不应该出现这种但这样会扰乱文档的层次结构,一般在完成的文档中是不应该出现这种混合元素的。从技术上说,可以轻易地建立一个元素来包含这些字符数混合元素的。从技术上说,可以轻易地建立一个元素来包含这些字符数据。包含混合内容的元素在实际应用中,用的较少。据。包含混合内容的元素在实际应用中,用的较少。空内容类型声明空内容类型声明 在在XML实例文档中,还可能

11、有这样的元素,元素本身不实例文档中,还可能有这样的元素,元素本身不包含任何的内容,但可以有属性。这种元素是声明语法包含任何的内容,但可以有属性。这种元素是声明语法如下:如下: 例如:例如: 在在XML实例文档中,使用如下:实例文档中,使用如下: 一般情况下,空元素都包含属性,否则该元素的出现没一般情况下,空元素都包含属性,否则该元素的出现没有多大的意义。有多大的意义。任何内容类型声明任何内容类型声明 这是对于元素内容的最为宽松的限定,实际对元素内容这是对于元素内容的最为宽松的限定,实际对元素内容几乎没有任何的要求,语法如下:几乎没有任何的要求,语法如下: 例如:例如: !ELEMENT 说明说

12、明 ANY 实际应用中,除非文档明确要求使用这样的元素,否则最好避免使实际应用中,除非文档明确要求使用这样的元素,否则最好避免使用这种设定。过分的滥用将导致文档结构的不明确,这与使用用这种设定。过分的滥用将导致文档结构的不明确,这与使用DTD的初衷背道而弛。应该尽可能准确地描述每个元素的内容。的初衷背道而弛。应该尽可能准确地描述每个元素的内容。 DTD中的属性声明中的属性声明 同元素一样,所有有效的同元素一样,所有有效的XML文档中使用到的属性也必须先在文档中使用到的属性也必须先在DTD中进行声明。声明的内容包括属性在哪个元素上使用,属性中进行声明。声明的内容包括属性在哪个元素上使用,属性的名

13、称,属性值的类型,属性默认值,以及元素是否必须要有该的名称,属性值的类型,属性默认值,以及元素是否必须要有该属性等信息。属性等信息。 属性声明语法属性声明语法 单个属性的声明:单个属性的声明: 同一元素上多个属性的声明,即属性列表声明:同一元素上多个属性的声明,即属性列表声明: 属性默认值的定义属性默认值的定义 在在DTD中声明属性的默认值时,可以通过设定中声明属性的默认值时,可以通过设定Keyword的值,对属性的取值作出一些规定,根据这的值,对属性的取值作出一些规定,根据这些规定的具体的情况,属性的默认值又可以分为以下些规定的具体的情况,属性的默认值又可以分为以下4类。类。 1、将、将Ke

14、yword设置为设置为“#IMPLIED”:表示该属性是可:表示该属性是可选的,即在选的,即在XML 实例文档中,该可以有该属性,也可实例文档中,该可以有该属性,也可以没有。声明语法如下:以没有。声明语法如下: 2、将、将Keyword设置为设置为“#REQUIRED”:表示属性是必须的,即在:表示属性是必须的,即在XML 实例文档中,必须使用该属性。声明语法如下:实例文档中,必须使用该属性。声明语法如下: 3、将、将Keyword设置为设置为“#FIXED”:表示该属性的值是固定不可变的,:表示该属性的值是固定不可变的,在这种情况下,必须给出属性的默认取值。在这种情况下,必须给出属性的默认取

15、值。 声明语法如下:声明语法如下:4、没有设置、没有设置Keyword,直接给出默认值,声明语法如下:,直接给出默认值,声明语法如下:属性的类型属性的类型 DTD中共有十种数据类型中共有十种数据类型 :属性类型属性类型含义含义CDATACDATA字符数据(字符串)字符数据(字符串)EnumeratedEnumerated枚举值,枚举值,接受用户显式定义的属性可选值中的一接受用户显式定义的属性可选值中的一个值个值IDIDIDID类型,类型,特定文档中唯一的名称特定文档中唯一的名称IDREFIDREFIDID引用类型,引用类型,对某些具有对某些具有IDID属性的元素的引用,属性的元素的引用,这些元

16、素的这些元素的IDID属性值必须与属性值必须与IDREFIDREF属性的值相属性的值相同同IDREFSIDREFS多个多个IDID引用类型,引用类型,若干以空格分隔的若干以空格分隔的IDREFIDREFENTITYENTITY实体类型,实体类型,已定义的实体的名称已定义的实体的名称ENTITIESENTITIES多实体类型,若干以空格分开的实体名称多实体类型,若干以空格分开的实体名称NMTOKENNMTOKENXMLXML名称名称NMTOKENSNMTOKENS由空格分开的多个由空格分开的多个XMLXML名称名称NOTATIONNOTATION符号引用类型,符号引用类型,在在DTDDTD中声明

17、为用于指示表示法类中声明为用于指示表示法类型的名称型的名称DTD的引用的引用 内部内部DTD的引用的引用 使用内部使用内部DTD对对XML文档的有效性进行验证的格式如下:文档的有效性进行验证的格式如下: Xml文档主体文档主体外部外部DTD的引用的引用 外部外部DTD的基本格式如下:的基本格式如下:元素、属性或实体的声明部分元素、属性或实体的声明部分外部外部DTD外部外部DTD文件根据其性质,又可以分为私有(或系统)文件根据其性质,又可以分为私有(或系统)DTD文件和公共文件和公共DTD文件两种。文件两种。 1、私有(系统)、私有(系统)DTD文件的引用文件的引用 在在XML实例文档中引用私有

18、实例文档中引用私有DTD文件的格式如下:文件的格式如下:2、公共、公共DTD文件的引用文件的引用 在在XML实例文档中引用公共实例文档中引用公共DTD文件的格式如下:文件的格式如下:既引用外部既引用外部DTD又引用内部又引用内部DTD 如果既想引用外部如果既想引用外部DTD又想包含内部又想包含内部DTD,可以使用如下,可以使用如下格式:格式: 或者或者实体的定义和使用实体的定义和使用 XML中的实体机制是一种可以节省大量时间的工具,中的实体机制是一种可以节省大量时间的工具,而且也是将多种不同类型的数据插入而且也是将多种不同类型的数据插入XML文件的方法。文件的方法。实体就是包含了文档片断或者说

19、部分文档内容的虚拟实体就是包含了文档片断或者说部分文档内容的虚拟存储单元,用来存储存储单元,用来存储XML声明、声明、DTD、各种元素或者、各种元素或者其他形式的文本和二进制数据。在其他形式的文本和二进制数据。在XML实例文档中可实例文档中可以通过实体名称来代替实体的具体内容。以通过实体名称来代替实体的具体内容。XML处理器处理器或其他或其他XML应用程序在分析实例文档时,将使用实体应用程序在分析实例文档时,将使用实体的具体内容来代替文档中的实体名称,组成一个完整的具体内容来代替文档中的实体名称,组成一个完整的文档。的文档。实体分类实体分类 1、按照实体内容的位置分类、按照实体内容的位置分类

20、按照实体内容的位置可将实体分为两类:按照实体内容的位置可将实体分为两类: 内部实体:实体所代表的内容和实体声明在同一个文档中,即实体的内部实体:实体所代表的内容和实体声明在同一个文档中,即实体的内容在声明中给出,内部实体是可析实体。内容在声明中给出,内部实体是可析实体。 外部实体:实体所代表的内容在实体声明文档之外的文档中。外部实体:实体所代表的内容在实体声明文档之外的文档中。2、按照实体内容本身分类、按照实体内容本身分类 按照实体内容本身可以将实体分为两类:按照实体内容本身可以将实体分为两类: 可析实体:实体的内容是可解析的可析实体:实体的内容是可解析的XML文本、字符、数据等。文本、字符、

21、数据等。 不可析实体:实体的内容是不可析实体:实体的内容是XML处理器不能直接解析的,如图像、声处理器不能直接解析的,如图像、声音等二进制数据。不可析实体的内容是一种资源,每个不可析实体都音等二进制数据。不可析实体的内容是一种资源,每个不可析实体都应有一个相关联的用符号名称标识的符号(应有一个相关联的用符号名称标识的符号(Notation)。)。 3、按照实体被使用的位置分类、按照实体被使用的位置分类 按照实体被使用的位置可将实体分为两类:按照实体被使用的位置可将实体分为两类: 一般实体:实体只能在一般实体:实体只能在XML实例文档中被引用。实例文档中被引用。 参数实体:实体只能在参数实体:实

22、体只能在DTD中被引用,而且它肯定是一个可析实体。中被引用,而且它肯定是一个可析实体。一般实体的定义和使用一般实体的定义和使用 1、内部一般实体的定义和使用、内部一般实体的定义和使用 内部一般实体的作用类似于一般编程语言中的宏替换。内部一般实体内部一般实体的作用类似于一般编程语言中的宏替换。内部一般实体只能在只能在XML文档的内部定义和使用。文档的内部定义和使用。 定义内部一般实体的格式如下:定义内部一般实体的格式如下:2、外部一般实体的定义和使用、外部一般实体的定义和使用 外部一般实体是存在于外部一般实体是存在于XML文档之外的独立文档之外的独立XML文档片段,可以是文档片段,可以是一个完整

23、的一个完整的XML实例文档。引用外部一般实体时须通过实例文档。引用外部一般实体时须通过URL来定位来定位该实体。该实体。 定义外部一般实体的格式如下:定义外部一般实体的格式如下:参数实体的定义和使用参数实体的定义和使用 1、内部参数实体的定义和使用、内部参数实体的定义和使用 内部参数实体的定义格式如下:内部参数实体的定义格式如下:2、外部参数实体的定义和使用、外部参数实体的定义和使用 在独立的在独立的DTD中,可以使用其他独立中,可以使用其他独立DTD文档中的定文档中的定义,这就是外部参数实体的使用。外部参数实体的作义,这就是外部参数实体的使用。外部参数实体的作用与外部一般实体的作用相似。用与外部一般实体的作用相似。 外部参数实体的定义格式如下:外部参数实体的定义格式如下:小结小结 本章介绍了:本章介绍了: DTD的文档结构的文档结构 在在DTD中对元素、属性等进行声明的方法中对元素、属性等进行声明的方法 实体的分类、定义和使用实体的分类、定义和使用 DTD的引用的引用作业作业现有如下的现有如下的DTD定义:定义: 请根据这个请根据这个DTD的定义,写出一个有效的的定义,写出一个有效的XML实例文实例文档。档。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!