第3章在XML文档中使用DTD_第1页
第3章在XML文档中使用DTD_第2页
第3章在XML文档中使用DTD_第3页
第3章在XML文档中使用DTD_第4页
第3章在XML文档中使用DTD_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、XML 程序设计 刘超慧郑州大学第3章 在XML文档中使用DTD 3.1 DTD概述 3.2 DTD元素声明 3.3 DTD 属性声明 3.4 DTD实体声明 3.5 DTD完整性 3.6 DTD中的测试开关3.1 DTD概述 DTD是什么? DTD就是所谓就是所谓“文件格式定义文件格式定义” (Document Type Definition) 文件格式定义的作用是给予文件一种格(文件格式定义的作用是给予文件一种格(Type) 使用户知道所使用的使用户知道所使用的XML文件需包含哪些标记(文件需包含哪些标记(Tag)、)、属性(属性(Attribute)、实体()、实体(Entities)3

2、.1 DTD概述 DTD的一般结构 DTD定义了置标语言、文档结构的语法和词汇表;定义了置标语言、文档结构的语法和词汇表; DTD声明方法为:声明方法为: 其中其中“定义的内容定义的内容”是用标签是用标签定定义,它包括:义,它包括: 元素类型声明;元素类型声明; 元素属性声明;元素属性声明; 实体声明;实体声明; 记法声明。记法声明。3.1 DTD概述 内部DTD文件示例!DOCTYPE 持股信息 张祥100008000150006000刘娴500012000900040003.1 DTD概述 外部DTD文件示例 引用的语法格式: 示例:Char03-ex01.dtd char03-stock

3、02.xml3.2 DTD元素声明 DTD中描述的基本部件是元素和属性,它们负责确定XML文档的逻辑结构。 元素表示一个信息对象,而属性表示这个对象的性质。 所有元素中有且只有一个根元素,其他的元素都是它的子元素,除根元素外,每个元素都被其他元素包含,一个元素可以有几个不同类型的子元素。3.2 DTD元素声明 元素的基本类型: 一种称为简单型 简单型具有文本数据,即可析字符数据,该类型也称为上下文中的“#PCADTA”; 另一种称为复合型 复合型可以包含其他元素和文本数据 复合型元素与简单型元素相对,复合型元素可包含其他元素。 元素声明的基本语法 元素的声明格式: 其中,Element_Nam

4、e为声明的元素名称,Element_Defination为元素内容格式的定义。 合法的元素声明语句如:不限定元素内容的声明 ANY是DTD中使用很频繁的一个关键字,特别是对于文档根元素的声明。在定义一个DTD文档时通常很难准确地确定一个元素是否具有子元素的情况,此时一般的做法是指定该元素的子元素为ANY型,这样在它之中可以包含任何数据、任何声明的子元素及其数据和子元素的组合。 ANY元素的声明格式Francis GlassborowYou Can Do It!Tom SwanCode SecretsTom SwanDigital Control System子元素列表的设定 元素都拥有哪些子元

5、素、每个子元素出现的次数和位置都有明确的规定,在具体文档实现时,必须严格执行。 子元素列表的设定语法如下: 其中“(Child_Element1, Child_Element2,)”部分为Element_Name所拥有的子元素列表。可选择的子元素 有些时候,需要在两个或多个互斥的元素中进行选择。即多选一的情况,如一个人的性别可以是男或女,两者中只能有一种情况。 其语法格式如下: 其中,“(Child_Emnt1|Child_Emnt2|)”部分为选择性元素组合,具体使用时必须要在这个列表中选择其一。子元素出现次数符号含义+最少一次*零次或多次?零次或一次|子元素列表之一()将元素列表括起来3.

6、3 DTD 属性声明 DTD 属性 简单来讲就是元素的附加特性,在DTD中声明元素时,也必须对该元素的属性进行声明。 声明格式: 其中,为关键字,Element_name为元素名,Attribute_name为属性名,TYPE是属性类型,Default_value为没有设定属性值时的默认值。3.3 DTD 属性声明元素内容说明元素内容说明含义含义CDATA属性是字符数据属性是字符数据Enumerated枚举型数据枚举型数据ENITITY在在DTD中声明的实体中声明的实体ENITITYES在在DTD中声明的若干实体,实体间用空格分隔中声明的若干实体,实体间用空格分隔ID该属性的值唯一地标识包含其

7、的元素该属性的值唯一地标识包含其的元素IDREF其属性值须映射到其属性值须映射到XML文件已经存在的文件已经存在的ID类型属性类型属性IDREFS文档中若干个元素的文档中若干个元素的ID属性值属性值NMTOKEN任意不含空格的任意不含空格的XML名称,但可用数字为名称开头名称,但可用数字为名称开头NMTOKENS多个多个XML名称,每个名称,每个NMTOKEN间以空格分隔间以空格分隔NOTATION在在DTD中声明的记号名中声明的记号名3.3 DTD 属性声明 在声明属性时有以下需要注意的事项。 (1)可以多次为一个元素声明其中所包含的属性。 (2) 属性的声明在文档中的次序没有严格的要求,可

8、位于与其相连的元素声明之前或之后。 (3) 所有元素的属性,都要在各自所对应的标记中声明。3.3 DTD 属性声明 属性有4种不同类型的默认值,可在属性声明中的Default_value部分指定。 default:表示使用提供的默认值,default不是一个关键字,它代表一个预设的字符串。 此例句表示当在XML文档中省略了对bookinfo元素的bookcat属性值进行设定时,该属性的默认值就是“文艺”。 #REQUIRED:表示属性值必须指定。 #IMPLIED:表示元素的这个属性可用可不用。 #FIXED:表示元素的这个属性值是一个固定值,且必须是指定的值。 在属性的声明中TYPE部分为属

9、性的类型设定,DTD中属性的类型有10种,下面将对这些数据类型进行逐一的介绍。 1. CDATA型 CDATA型表明属性值为不包含“”和“”的任意字符串,如果属性值中需要包含“”和“”,则可使用特殊字符来代替Francis GlassborowYou Can Do It!Tom SwanCode SecretsTom SwanDigital Control System 2. Enumerated型 如果属性值并不是任意的字符串,而是在几个可能的值中进行选择,如书籍的“类别”属性,其值可为“文艺”,也可为“自然科学”,而不可能为其他情况时,则可以将书籍的“类别”属性设定为Enumerated型

10、。 3. ID型 当元素的某个属性值是不能重复时,如书籍的ISBN属性、个人的“身份证号”属性等,要定义这样的属性则需使用属性的ID类型。在一个XML文档中,所有元素的ID类型属性的属性值必须是唯一的,不可重复,另外,一个元素不能有超过一个ID类型的属性。Francis GlassborowYou Can Do It!Tom SwanCode SecretsTom SwanDigital Control System4. IDREF与IDREFS型 IDREF为Identifier Reference的缩写,IDREF与ID类型属性的关系为子元素与父元素的关系,即IDREF类型属性的值必须是其

11、他元素的ID类型属性的值,且该ID类型属性的值必须在文档的其他地方被设定过。IDREFS类型属性的属性值可有多个,每一个都必须是在文档其他地方被设定了的ID类型属性的值,而这多个属性值之间用空格隔开。 LarryTom清华大学出版社科学出版社 5. ENTITY与ENTITIES型 ENTITY类型的属性提供了把外部二进制形式的文件(如.jpeg、.mp3等)和外部不可解析实体链接到XML文档的功能。因此其属性值也必须为不可解析的链接外部实际数据的通用实体名。ENTITIES类型属性的属性值可由多个不可解析的外部实体名称组成,各实体名称之间使用空格隔开。 6. NMTOKEN与NMTOKENS

12、型 NMTOKEN类型的属性限定属性值是有效的XML名称,这个属性值可以由英文、数字、“.”、 “_”、“-”、“:”等组成,这里有几点需要注意。 (1) 不能包括空格。 (2) 以上字符中除“:”以外,其他字符都可以作为开头字符。 (3) “:”可以出现在中间,但由于它是命名域的关键字符,所以一般不提倡使用。7. NOTATION型 XML文档中引入了外部不可解析的实体后,解析器无法解析这些二进制文件,这时,就可以使用NOTATION类型的属性为这些二进制文件指定与其对应的应用软件以对其进行处理。 空白属性类型 xml:space是XML中用来设置解析器与应用程序之间处理方法的属性 是枚举类

13、型的属性,有default和preserve两个值 default:表示解析器将空格符传递给应用程序后,由应用程序决定如何处理空格符 preserve:表示解析器将空格符传递给应用程序后,要求应用程序保留这些空格符 语法: Eg.!ATTLIST ele xml:space (default|preserve) “default”语系属性类型 Xml:lang属性是用来设置元素中文字的语言信息 语法: la:拉丁文 en:英文 tw:繁体中文 zhCN:检体中文 语系的作用:搜索数据时,应用程序可根据这个属性决定是否对元素内的数据进行处理3.4 DTD 实体声明 实体: 包含包含XML文档细节

14、内容的存储单元称为实体;文档细节内容的存储单元称为实体;实体可能是由一个文件、一个数据库记录或其实体可能是由一个文件、一个数据库记录或其他包含数据的项目组成。他包含数据的项目组成。 在在XML文件中实体是一种数据单位文件中实体是一种数据单位 实体具有名称和内容实体具有名称和内容 实体由字符或二进制数据所组成,需借助该实实体由字符或二进制数据所组成,需借助该实体名称才能使用体名称才能使用实体的分类 在DTD中定义的实体的两种类型: 通用实体:引用格式为“&实体名;” 参数实体:引用格式为“%实体名;” 实体也可以分为: 内部实体:与XML文档存储在一起的实体 外部实体:存放在其他文件内的

15、实体 通用实体的声明: 内部实体: 文本内容在使用中要用双引号括起来,是一个可以解析的文本数据内容 举例: 使用内部实体的例子:!DOCTYPE PersonalData Larry89342324097323423Irene&MYADDRESS; 外部实体外部实体 采用外部映射的方式,使用时须创建一个要被映射采用外部映射的方式,使用时须创建一个要被映射的的DTD文件文件 外部实体外部实体如果实体所代表的内容不仅仅是一串字符,而表如果实体所代表的内容不仅仅是一串字符,而表示的是一个示的是一个外部文件外部文件,且是,且是文本字符数据文本字符数据时使用时使用 举例举例 实体的分类: 解析实

16、体:可以由XML解析器处理的实体,主要是由文本字符数据内容构成的实体。实质是使用较短的文本取代较长的文本的方法 未解析实体:不能被XML解析器所处理等实体,只是提供给其他的应用程序去处理。通常以某种二进制形式存在,如图片、声音、动画等。 注意: 解析实体在元素中引用 未解析实体只能在属性中,XML处理器必须知道如何处理这些未解析实体 参数实体 参数实体既可以是内部的也可以是外部的。不过,参数实体只用在DTD中。参数实体的格式与一般实体很类似,只不过中间要加上“%”符。 格式:或引用方式为:%实体名; 参数实体只能出现在DTD文件中 参数实体前面须加“” 在DTD中使用参数实体时,须使用“” 举例:3.5 DTD的完整性的完整性 一个完整的DTD,应满足下面两个条件 (1)不能出现标记的嵌套 标记的嵌套是指一个标记的子标记中又含有该标记的父标记,这种情况在DTD中是不允许出现的。例如: (2)必须确定每一个标记的约束条件 必须确定每一个标记的约束条件 对于XML文件中出现的每一个标记,在DTD中都应该有它所标记内容的约束。例如:!ELEMENT persions (persios) 其中,只对“na

温馨提示

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

最新文档

评论

0/150

提交评论