XML技术精品课件_第1页
XML技术精品课件_第2页
XML技术精品课件_第3页
XML技术精品课件_第4页
XML技术精品课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、第三讲 XML技术,山东大学管理学院教学讲义,1,第二部分数据结构与模式定义DTD,2,创建新标记语言,XML的精髓:基于信息描述的、能够体现数据信息之间逻辑关系的、可以确保文件的易读性和易搜索性的“自定义标记”语言。 通过文档类型定义(DTD)或Schema来定义新的标记语言(也叫标记集) 。 DTD或Schema提供了语法规定,XML文档要与DTD或Schema相比较,这一过程称为合法性检验。如果文档符合DTD或Schema中的约束,这个文档就是有效的。 与 DTD不同,XML Schema本身也是一份 XML文件,它用来定义另一份 XML的文件格式、结构、数据类型等。,3,一、Well-

2、formed v.s. ValidXML,一个Well-Formed XML document: 正确包含嵌套在其他元素中的元素 有唯一的根元素 遵循XML 元素命名惯例 遵循XML 属性引用规则 所有特殊字符被正确回避 一个合法的(Valid) XML document 遵守XML语法规则 遵守相应DTD(或Schema)文件规范的XML文档 有效的XML,一定是格式良好的XML。而反之,格式良好的XML不一定是有效的XML。,4,二、 DTD的基本概念,DTD描述了一个标记语言的语法和词汇表,也就是说定义了文件的整体结构以及文件的语法。 一个 XML文件必须遵守文件类型定义 DTD(Doc

3、ument Type Definition)的规定。 一个DTD文档包含元素的定义规则、元素间关系的定义规则、元素可使用的属性、可使用的实体或符号规则。 DTD规定了一个语法分析器包含解释一个“有效的”XML文件所需要知道的所有规则的细节。 DTD文件也是一个ASCII的文本文件,后缀名为.dtd。,5,二、 DTD的基本概念,DTD用来描述XML文档的结构,一个DTD文档包含: 元素(ELEMENT)的定义规则 元素之间的关系规则 属性(ATTLIST)的定义规则 可使用的实体(ENTITY)或符号(NOTATION)规则 DTD文档与XML文档实例的关系。 类与对象 数据库表结构与数据记录

4、 有了DTD,XML文件可以携带一个自身格式的描述。 有了DTD,不同应用可使用一个通用DTD来交换数据。 应用程序可以使用一个标准DTD校验从外部世界接受来的XML数据是否有效。 可以使用DTD校验自己的XML数据。,6,三、如何生成一个DTD文档(1/4),DTD文档的声明及引用 内部DTD文档 外部DTD文档 内外部DTD文档结合 使用公有DTD ! DOCTYPE 根元素 PUBLIC “DTD名称” “外部DTD的URL” ,7,三、如何生成一个DTD文档(2/4), 王维 鹿柴 空山不见人,但闻人语声。 返景入深林,复照青苔上。 ,注意:例中的定义关键字一定要大写,如DOCTYPE

5、、ELEMENT、#PCDATA,且元素名称与数据类型之间也要有空格。,内部DTD示例,8,三、如何生成一个DTD文档(3/4), 王维 鹿柴 空山不见人,但闻人语声。返景入深林,复照青苔上。 , ,外部DTD示例,ex2.dtd,9,三、如何生成一个DTD文档(4/4), 王维 鹿柴 空山不见人,但闻人语声。返景入深林,复照青苔上。 , ,内部和外部DTD示例,ex3.dtd,10,三、如何生成一个DTD文档(4/4),使用公有DTD 还存在一种外部DTD,它由权威机构制订,提供给特定行业或公众使用。 使用关键字PUBLIC引用这一类公开使用的DTD。 引用格式为: !DOCTYPE 根元素

6、 PUBLIC “DTD名称” “外部DTD的URL” 其用法和SYSTEM基本相同,只是多了个DTD名称。,11,四、元素的定义(1/14),语法 ,关键字,元素名称,EMPTY该元素不能包含子元素和文本,但可以有属性(空元素) ANY该元素可以包含任何在DTD中定义的元素和文本内容 #PCDATA可以包含任何字符数据,但不能在其中包含子元素 纯元素类型只包含子元素,并且这些子元素外没有文本 混合类型包含子元素和文本数据的混合体,具体定义。,元素类型,12,EMPTY示例-空元素 皮诺曹 皮诺曹爸爸 ,四、元素的定义(2/14),13,四、元素的定义(3/14),ANY示例(1/2) 元素可

7、以出现任何内容 皮诺曹 皮诺曹爸爸 将根元素设为ANY类型后,元素出现的次数和顺序不受限制。,14,四、元素的定义(4/14),ANY示例(2/2) 形式良好但不合法(没有书元素的定义) !DOCTYPE 书架 !ELEMENT 书架ANY 书架 书XML实用教程书 书架 形式良好且合法 !DOCTYPE 书架 !ELEMENT 书架ANY 书架XML实用教程书架,15,#PCDATA示例 包含可解析的字符数据,即非标记文本,但它不能包含自己的子元素 皮诺曹 皮诺曹爸爸 ,四、元素的定义(5/14),16,四、元素的定义(6/14),子元素内容 只能出现在元素类型声明中规定的子元素 定义子元素

8、时与顺序无关,示例:书架的定义: ?xml version=”1.0” Standalone”yes” encoding”GB2312”? !DOCTYPE 书架 !ELEMENT 书架(书)* !ELEMENT 书(书名,作者,价格,出版社) !ELEMENT 书名(#PCDATA) !ELEMENT 作者(姓名,地址) !ELEMENT 姓名(#PCDATA) !ELEMENT 价格(#PCDATA) ! ELEMENT 出版社(地址,邮编) !ELEMENT 地址(#PCDATA) !ELEMENT 邮编(#PCDATA) ,“书架”包括“书”子元素,“书”又包括书名、作者“、价格”、“

9、出版社”这些子元素。而“作者”又包括了“姓名”、“地址” 这些子元素。“出版社”又包括了“地址”、“邮编” 这些子元素 。,17,四、元素的定义(7/14),混合类型示例 指可以有字符数据和子元素的混合体,!ELEMENT 作者(姓名,电话,EMAIL,#PCDATA)* 作者 姓名丁力姓名 电话(010)64535265电话 EMAILEMAIL 作者丁力的联系方式 作者,说明:以上只是示意性的,“姓名”、“电话”、“EMAIL” 这些子元素没有定义,18,四、元素的定义(8/14),修饰符号子元素的定义和控制,19,四、元素的定义(9/14),修饰符号子元素的定义和控制 控制子元素出现的顺

10、序 !ELEMENT 作者(姓名,(地址|E-mail)?) !ELEMENT 姓名(#PCDATA) !ELEMENT 地址(#PCDATA) !ELEMENT E-mail(#PCDATA),作者 姓名张三姓名 地址浙江杭州地址 作者,作者 姓名张三姓名 地址浙江杭州地址 E-E-mail 作者,20,四、元素的定义(10/14),修饰符号子元素的定义和控制 “,”分隔表示“与”,要求子元素严格遵从顺序要求出现,而且不能缺少 。 !ELEMENT 作者(姓名,地址 ) !ELEMENT 姓名(#PCDATA) !ELEMENT 地址(#PCDATA),作者 姓名张三姓名 地址浙江杭州地址

11、作者,作者 地址浙江杭州地址 姓名张三姓名 作者,21,四、元素的定义(11/14),修饰符号子元素的定义和控制 用“空格”表示无顺序要求,元素可自由出现。 !ELEMENT 作者(姓名地址 ) !ELEMENT 姓名(#PCDATA) !ELEMENT 地址(#PCDATA),作者 姓名张三姓名 地址浙江杭州地址 作者,作者 地址浙江杭州地址 姓名张三姓名 作者,22,四、元素的定义(12/14),修饰符号子元素的定义和控制 成组元素:子元素可以使用括号并为一组。 !ELEMENT 作者(姓名,地址) !ELEMENT 姓名(#PCDATA) !ELEMENT 地址(#PCDATA),作者

12、姓名张三姓名 地址浙江杭州地址 姓名李四姓名 地址山东济南地址 作者,23,四、元素的定义(13/14),修饰符号子元素的定义和控制 字符“?”说明一个子元素是可选的,它可以出现,也可以不出现。 !ELEMENT 作者(姓名地址?) ) !ELEMENT 姓名(#PCDATA) !ELEMENT 地址(#PCDATA),作者 姓名张三姓名 地址浙江杭州地址 作者,作者 姓名张三姓名 作者,24,四、元素的定义(14/14),修饰符号子元素的定义和控制 “*”表示该元素可以出现任意次,即零次或多次。 “”表示该元素至少要出现一次,即一次或多次。,示例:书架的定义: ?xml version=”1

13、.0” encoding”GB2312”? !DOCTYPE 书架 !ELEMENT 书架(书)* !ELEMENT 书(书名,作者,价格,出版社) ,25,五、属性的定义,语法 ,CDATAIDIDREF/IDREFSNMTOKEN/NMTOKENSEnumeratedENTITY/ENTITIESNOTATIONNOTATION(enumerated),#REQUIRED#IMPLIED#FIXED valueDefault value,26,五、属性的定义,属性类型 CDATA 属性值可以是任何字符(包括数字和中文),请注意:这里的CDATA与第一部分CDATA的区别, #PCDATA与

14、CDATA的区别,27,五、属性的定义,属性类型NMTOKEN/NMTOKENS NMTOKEN要求属性是合法的XML名字,属性值必须是英文字母、数字、句号、破折号、下划线或冒号(不能是中文!)。 NMTOKENS与NMTOKEN类似,包含多个由空格分隔的字符。, 八阵图 功盖三分国,名成八阵图。 江流石不转,遗恨失吞吴。 , 八阵图 功盖三分国,名成八阵图。 江流石不转,遗恨失吞吴。 ,28,五、属性的定义,属性类型 ID 表明该属性的取值必须是唯一的。, , ,29,五、属性的定义,属性类型 IDREF/IDREFS IDREF属性的值指向文档中其它地方声明的ID类型的值。 IDREFS同

15、IDREF,但是可以具有由空格分开的多个引用。, ,空格,30,五、属性的定义,属性类型Enumerated 事先定义好一些值,属性的值必须在所列出的值的范围内, “Enumerated” 不出现在定义中。,31,五、属性的定义,属性类型-NOTATION(1/3) Notation主要是用来表明文档中需要来自外部源的数据,而该数据XML解析器是不能进行解析的,需要外部的应用程序进行处理。如各种格式的二进制文件(比如图形文件、声音文件等) Notation 类型使用前必须有Notation 声明 Notation声明的语法格式为: ,32,五、属性的定义,属性类型-NOTATION(2/3 e

16、numerated) 属性的值必须匹配NOTATION名称列表中的某个名称。,属性类型定义,NOTATION声明,元素名,属性名,33,五、属性的定义,属性类型-NOTATION(3/3) 下面的例子为“视频”元素指定了两种可选设备,一种是RealPlayer.exe,用来播映.rm文件,另一种则用来播放GIF图像。 ?xml version”1.0” encoding=”GB2312” standalone=”yes”? !DOCTY PE 文件 !ELEMENT 文件 ANY !ELEMENT 视频 EMPTY !ATTLIST 视频 演示设备 NOTATION (rm|gif) #REQ

17、UIRED !NOTATION rm SYSTEM “RealPlayer.exe” !NOTATION gif SYSTEM “Image/gif” 文件 视频 演示设备=”rm” 文件,34,五、属性的定义,属性的特点REQUIRED 元素的所有实例都必须有该属性的值(NOT NULL) 语法: DTD 示例: XML 示例: ,35,五、属性的定义,属性的特点IMPLIED 元素的实例中可以忽略该属性(NULL)。 语法: DTD示例: XML示例: 或 ,36,五、属性的定义,属性的特点FIXED value 元素实例中该属性的值必须为指定的固定值。 语法: DTD示例: XML示例:

18、 ,37,五、属性的定义,属性的特点Default value 为属性提供一个默认的值,在XML可使用该默认值或指定一新值。 语法: DTD示例: XML示例: 表明payment 的type属性为 check,38,六、属性的定义实体,属性类型-ENTITY/ENTITIES ENTITY类型的属性的值必须对应一个在DTD文档内声明的实体。 ENTITIES类型的属性的值与ENTITY类似,不 同的是可以包含多个由空格分开的实体。 实体引用前必须定义 实体分类 一般实体(通用实体) 内部实体 外部实体 参数实体 内部实体 外部实体,39,六、属性的定义实体,内部一般实体 由实体名和及实体内容字符串构成,XML解析器可以解析。 在内部或外部DTD中声明,在XML的元素或属性值中引用。 语法: 定义方式为: 引用方式为:实体名; DTD 示例: XML 示例: ,40,六、属性的定义实体,外部一般实体 外部一般实体的内容位于系统其他地方(由URI指定)。 在内部或外部DTD中声明,在XML的元素或属性值中引用。 语法: DTD 示例: XML 示例:,41,六、属性的定义实体,内部参数实体 该实体不是在具体XML实例化文档中使用,而是在DTD文档内部被使用。 定义如下的参数实体:” 在DTD内部通过“%实体名;”来引用它们: %sample;,4

温馨提示

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

评论

0/150

提交评论