




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三讲第三讲 xml技术技术王瑞金王瑞金山东大学管理学院山东大学管理学院ec&eb第二部分第二部分数据结构与模式定义数据结构与模式定义dtd1ec&eb创建新标记语言创建新标记语言vxml的精髓:基于信息描述的、能够体现数据信息的精髓:基于信息描述的、能够体现数据信息之间逻辑关系的、可以确保文件的易读性和易搜索之间逻辑关系的、可以确保文件的易读性和易搜索性的性的“自定义标记自定义标记”语言。语言。v通过文档类型定义(通过文档类型定义(dtd)或)或schema来定义新的标来定义新的标记语言(也叫标记集)记语言(也叫标记集) 。vdtd或或schema提供了语法规定,提供了语法规
2、定,xml文档要与文档要与dtd或或schema相比较,这一过程称为合法性检验。相比较,这一过程称为合法性检验。如果文档符合如果文档符合dtd或或schema中的约束,这个文档就中的约束,这个文档就是有效的。是有效的。v与与 dtd不同,不同,xml schema本身也是一份本身也是一份 xml文文件,它用来定义另一份件,它用来定义另一份 xml的文件格式、结构、数的文件格式、结构、数据类型等。据类型等。2ec&eb一、一、well-formed v.s. validxmlv一个一个well-formed xml document:l 正确包含嵌套在其他元素中的元素正确包含嵌套在其他元
3、素中的元素l 有唯一的根元素有唯一的根元素l 遵循遵循xml 元素命名惯例元素命名惯例l 遵循遵循xml 属性引用规则属性引用规则l 所有特殊字符被正确回避所有特殊字符被正确回避v一个合法的(一个合法的(valid) xml document l 遵守遵守xml语法规则语法规则l 遵守相应遵守相应dtd(或(或schema)文件规范的)文件规范的xml文档文档 v有效的有效的xml,一定是格式良好的,一定是格式良好的xml。而反之,。而反之,格式良好的格式良好的xml不一定是有效的不一定是有效的xml。 3ec&eb二、二、 dtd的基本概念的基本概念 vdtd描述了一个标记语言的语法
4、和词汇表,也就是描述了一个标记语言的语法和词汇表,也就是说定义了文件的整体结构以及文件的语法。说定义了文件的整体结构以及文件的语法。v一个一个 xml文件必须遵守文件类型定义文件必须遵守文件类型定义 dtd(document type definition)的规定。)的规定。v一个一个dtd文档包含元素的定义规则、元素间关系的文档包含元素的定义规则、元素间关系的定义规则、元素可使用的属性、可使用的实体或符定义规则、元素可使用的属性、可使用的实体或符号规则。号规则。vdtd规定了一个语法分析器包含解释一个规定了一个语法分析器包含解释一个“有效有效的的”xml文件所需要知道的所有规则的细节。文件所
5、需要知道的所有规则的细节。vdtd文件也是一个文件也是一个ascii的文本文件,后缀名为的文本文件,后缀名为.dtd。4ec&eb二、二、 dtd的基本概念的基本概念vdtd用来描述用来描述xml文档的结构,一个文档的结构,一个dtd文档包含:文档包含:l 元素元素(element)的定义规则的定义规则l 元素之间的关系规则元素之间的关系规则l 属性属性(attlist)的定义规则的定义规则l 可使用的实体可使用的实体(entity)或符号或符号(notation)规则规则vdtd文档与文档与xml文档实例的关系。文档实例的关系。l 类与对象类与对象l 数据库表结构与数据记录数据库表结
6、构与数据记录v有了有了dtd,xml文件可以携带一个自身格式的描述。文件可以携带一个自身格式的描述。 v有了有了dtd,不同应用可使用一个通用,不同应用可使用一个通用dtd来交换数据。来交换数据。v应用程序可以使用一个标准应用程序可以使用一个标准dtd校验从外部世界接受校验从外部世界接受来的来的xml数据是否有效。数据是否有效。v可以使用可以使用dtd校验自己的校验自己的xml数据。数据。5ec&eb三、如何生成一个三、如何生成一个dtd文档文档(1/4)vdtd文档的声明及引用文档的声明及引用l内部内部dtd文档文档l外部外部dtd文档文档l内外部内外部dtd文档结合文档结合l使用公
7、有使用公有dtd! doctype 根元素根元素 public “dtd名称名称” “外部外部dtd的的url” 6ec&eb三、如何生成一个三、如何生成一个dtd文档文档(2/4)!doctype poem -根元素的名称根元素的名称poem -子元素的名称及顺序子元素的名称及顺序 -子元素的数据类型子元素的数据类型 - -结束标签结束标签 王维王维 鹿柴鹿柴 空山不见人,但闻人语声。空山不见人,但闻人语声。 返景入深林,复照青苔上。返景入深林,复照青苔上。 注意:例中的定义关键字一定要大写,如注意:例中的定义关键字一定要大写,如doctype、element、#pcdata,且元素
8、名称与数据类型之间也要有空格。,且元素名称与数据类型之间也要有空格。v内部内部dtd示例示例7ec&eb三、如何生成一个三、如何生成一个dtd文档文档(3/4)王维王维鹿柴鹿柴 空山不见人,但闻人语声。返景入深林,复照青苔上。空山不见人,但闻人语声。返景入深林,复照青苔上。 v外部外部dtd示例示例ex2.dtd8ec&eb三、如何生成一个三、如何生成一个dtd文档文档(4/4)!doctype poem system ex3.dtd 王维王维鹿柴鹿柴 空山不见人,但闻人语声。返景入深林,复照青苔上。空山不见人,但闻人语声。返景入深林,复照青苔上。v内部和外部内部和外部dtd示
9、例示例ex3.dtd9ec&eb三、如何生成一个三、如何生成一个dtd文档文档(4/4)v使用公有使用公有dtdl还存在一种外部还存在一种外部dtd,它由权威机构制订,提供,它由权威机构制订,提供给特定行业或公众使用。给特定行业或公众使用。l使用关键字使用关键字public引用这一类公开使用的引用这一类公开使用的dtd。l引用格式为:引用格式为:!doctype 根元素根元素 public “dtd名称名称” “外部外部dtd的的url” l其用法和其用法和system基本相同,只是多了个基本相同,只是多了个dtd名名称。称。10ec&eb四、元素的定义(四、元素的定义(1/1
10、4)v语法语法关键字关键字元素名称元素名称empty该元素不能包含子元素和文本,但可以有属性(空元素)该元素不能包含子元素和文本,但可以有属性(空元素)any该元素可以包含任何在该元素可以包含任何在dtd中定义的元素和文本内容中定义的元素和文本内容#pcdata可以包含任何字符数据,但不能在其中包含子元素可以包含任何字符数据,但不能在其中包含子元素纯元素类型纯元素类型只包含子元素,并且这些子元素外没有文本只包含子元素,并且这些子元素外没有文本混合类型混合类型包含子元素和文本数据的混合体包含子元素和文本数据的混合体,具体定义。具体定义。元素类型元素类型11ec&ebvempty示例示例-
11、空元素空元素皮诺曹皮诺曹 皮诺曹爸爸皮诺曹爸爸 四、元素的定义(四、元素的定义(2/14)12ec&eb四、元素的定义(四、元素的定义(3/14)vany示例示例(1/2)l元素可以出现任何内容元素可以出现任何内容 皮诺曹皮诺曹 皮诺曹爸爸皮诺曹爸爸 l将根元素设为将根元素设为any类型后,元素出现的次数和顺类型后,元素出现的次数和顺序不受限制。序不受限制。13ec&eb四、元素的定义(四、元素的定义(4/14)vany示例示例(2/2)l 形式良好但不合法(没有书元素的定义)形式良好但不合法(没有书元素的定义)!doctype 书架书架!element 书架书架any 书架书
12、架书书xml实用教程书实用教程书书架书架 l 形式良好且合法形式良好且合法!doctype 书架书架!element 书架书架any书架书架xml实用教程书架实用教程书架 14ec&ebv#pcdata示例示例l 包含可解析的字符数据,即非标记文本,但它不包含可解析的字符数据,即非标记文本,但它不能包含自己的子元素能包含自己的子元素 皮诺曹皮诺曹皮诺曹爸爸皮诺曹爸爸四、元素的定义(四、元素的定义(5/14)15ec&eb四、元素的定义(四、元素的定义(6/14)v 子元素内容子元素内容l 只能出现在元素类型声明中规定的子元素只能出现在元素类型声明中规定的子元素l 定义子元素时与
13、顺序无关定义子元素时与顺序无关 示例:书架的定义:示例:书架的定义:?xml version=”1.0” standalone”yes” encoding”gb2312”?!doctype 书架书架!element 书架(书)书架(书)* * !element 书(书名,作者,价格,出版社)书(书名,作者,价格,出版社)!element 书名(书名(#pcdata)!element 作者(姓名,地址)作者(姓名,地址)!element 姓名(姓名(#pcdata)!element 价格(价格(#pcdata)! element 出版社(地址,邮编)出版社(地址,邮编)!element 地址(地
14、址(#pcdata)!element 邮编(邮编(#pcdata)l“书架书架”包括包括“书书”子元素,子元素,“书书”又包括书名、又包括书名、作者作者“、价价格格”、“出版社出版社”这些子元素。而这些子元素。而“作者作者”又包括了又包括了“姓名姓名”、“地址地址” 这些子元素。这些子元素。“出版社出版社”又包括了又包括了“地址地址”、“邮编邮编” 这些子元素这些子元素 。16ec&eb四、元素的定义(四、元素的定义(7/14)v混合类型示例混合类型示例l指可以有字符数据和子元素的混合体指可以有字符数据和子元素的混合体 !element 作者(姓名,电话,作者(姓名,电话,email,
15、#pcdata)*作者作者姓名丁力姓名姓名丁力姓名电话(电话(010)64535265电话电话emailemail作者丁力的联系方式作者丁力的联系方式作者作者说明:说明:以上只是示意性的,以上只是示意性的,“姓名姓名”、“电话电话”、“email” 这这些子元素没有定义些子元素没有定义 17ec&eb四、元素的定义(四、元素的定义(8/14)符号符号 用途用途 示例示例示例说明示例说明( )用来给元素分组,每用来给元素分组,每组可重复出现组可重复出现 (古龙(古龙|金庸金庸|梁羽梁羽生)生),(王朔(王朔|余余杰)杰),毛毛毛毛 分成三组分成三组 |在列出的对象中选择在列出的对象中选择
16、一个一个 (男(男|女)女) 表示表示“男男”或者或者“女女”必须出现,必须出现,两者选一两者选一 +该对象最少出现一次,该对象最少出现一次,可以出现多次可以出现多次 (1或多或多次)次)(成员(成员+) 表示成员必须出现,而且可以出现表示成员必须出现,而且可以出现多个成员多个成员*该对象允许出现零次该对象允许出现零次到任意多次(到任意多次(0到多次)到多次)(爱好(爱好*) 爱好可以出现零次到多次爱好可以出现零次到多次?该对象可不出现,也该对象可不出现,也可以出现,但只能出可以出现,但只能出现一次现一次 (0到到1次次)(党员(党员?) “党员党员”可以出现,也可以不出现,可以出现,也可以不
17、出现,如果出现的话,最多只能出现一次如果出现的话,最多只能出现一次 ,对象必须按指定的顺对象必须按指定的顺序出现序出现 (西瓜(西瓜,苹果苹果,香蕉)香蕉) 表示西瓜、苹果、香蕉必须出现,表示西瓜、苹果、香蕉必须出现,并且按这个顺序出现并且按这个顺序出现 v修饰符号子元素的定义和控制修饰符号子元素的定义和控制18ec&eb四、元素的定义(四、元素的定义(9/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l控制子元素出现的顺序控制子元素出现的顺序 !element 作者(姓名,作者(姓名,(地址地址|e-mail)?)?)!element 姓名(姓名(#pcdata)!el
18、ement 地址(地址(#pcdata)!element e-mail(#pcdata)作者作者 姓名张三姓名姓名张三姓名 地址浙江杭州地址地址浙江杭州地址作者作者作者作者姓名张三姓名姓名张三姓名地址浙江杭州地址地址浙江杭州地址e-e-mail 作者作者19ec&eb四、元素的定义(四、元素的定义(10/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l“,”分隔表示分隔表示“与与”,要求子元素严格遵从顺,要求子元素严格遵从顺序要求出现,而且不能缺少序要求出现,而且不能缺少 。 !element 作者(姓名,地址作者(姓名,地址 )!element 姓名(姓名(#pcdat
19、a)!element 地址(地址(#pcdata)作者作者 姓名张三姓名姓名张三姓名地址浙江杭州地址地址浙江杭州地址作者作者作者作者地址浙江杭州地址地址浙江杭州地址姓名张三姓名姓名张三姓名作者作者20ec&eb四、元素的定义(四、元素的定义(11/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l用用“空格空格”表示无顺序要求,元素可自由出现。表示无顺序要求,元素可自由出现。 !element 作者(姓名地址作者(姓名地址 )!element 姓名(姓名(#pcdata)!element 地址(地址(#pcdata)作者作者 姓名张三姓名姓名张三姓名地址浙江杭州地址地址浙江
20、杭州地址作者作者作者作者地址浙江杭州地址地址浙江杭州地址姓名张三姓名姓名张三姓名作者作者21ec&eb四、元素的定义(四、元素的定义(12/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l成组元素:子元素可以使用括号并为一组成组元素:子元素可以使用括号并为一组。 !element 作者(姓名,地址)作者(姓名,地址)!element 姓名(姓名(#pcdata)!element 地址(地址(#pcdata)作者作者姓名张三姓名姓名张三姓名地址浙江杭州地址地址浙江杭州地址姓名李四姓名姓名李四姓名地址山东济南地址地址山东济南地址作者作者22ec&eb四、元素的定义(四
21、、元素的定义(13/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l字符字符“?”说明一个子元素是可选的,它可以出现,说明一个子元素是可选的,它可以出现,也可以不出现。也可以不出现。 !element 作者(姓名地址?作者(姓名地址?) )!element 姓名(姓名(#pcdata)!element 地址(地址(#pcdata)作者作者 姓名张三姓名姓名张三姓名地址浙江杭州地址地址浙江杭州地址作者作者作者作者姓名张三姓名姓名张三姓名作者作者23ec&eb四、元素的定义(四、元素的定义(14/14)v修饰符号子元素的定义和控制修饰符号子元素的定义和控制l“*”表示该元素可
22、以出现任意次,即零次或多次。表示该元素可以出现任意次,即零次或多次。l“”表示该元素至少要出现一次,即一次或多次。表示该元素至少要出现一次,即一次或多次。示例:书架的定义:示例:书架的定义:?xml version=”1.0” encoding”gb2312”?!doctype 书架书架!element 书架(书)书架(书)*!element 书(书名,作者,价格,出版社)书(书名,作者,价格,出版社) 24ec&eb五、属性的定义五、属性的定义v语法语法cdataididref/idrefsnmtoken/nmtokensenumeratedentity/entitiesnotati
23、onnotation(enumerated)#required#implied#fixed valuedefault value25ec&eb五、属性的定义五、属性的定义v属性类型属性类型 cdatal属性值可以是任何字符(包括数字和中文)属性值可以是任何字符(包括数字和中文) 请注意:这里的请注意:这里的cdata与第一部分与第一部分cdata的区别,的区别, #pcdata与与cdata的区别的区别26ec&eb五、属性的定义五、属性的定义v属性类型属性类型nmtoken/nmtokens lnmtoken要求属性是合法的要求属性是合法的xml名字,属性值必须是英文字名字,
24、属性值必须是英文字母、数字、句号、破折号、下划线或冒号(不能是中文!)。母、数字、句号、破折号、下划线或冒号(不能是中文!)。lnmtokens与与nmtoken类似,包含多个由空格分隔的字符。类似,包含多个由空格分隔的字符。!doctype poems 八阵图八阵图 功盖三分国,名成八阵图。功盖三分国,名成八阵图。 江流石不转,遗恨失吞吴。江流石不转,遗恨失吞吴。 !doctype poems 八阵图八阵图 功盖三分国,名成八阵图。功盖三分国,名成八阵图。 江流石不转,遗恨失吞吴。江流石不转,遗恨失吞吴。 27ec&eb五、属性的定义五、属性的定义v属性类型属性类型 idl表明该属性
25、的取值必须是唯一的。表明该属性的取值必须是唯一的。28ec&eb五、属性的定义五、属性的定义v属性类型属性类型 idref/idrefs l idref属性的值指向文档中其它地方声明的属性的值指向文档中其它地方声明的id类型的值。类型的值。l idrefs同同idref,但是可以具有由空格分开的多个引用。,但是可以具有由空格分开的多个引用。 空格29ec&eb五、属性的定义五、属性的定义v属性类型属性类型enumeratedl事先定义好一些值,属性的值必须在所列出的值事先定义好一些值,属性的值必须在所列出的值的范围内,的范围内, “enumerated” 不出现在定义中。不出现
26、在定义中。30ec&eb五、属性的定义五、属性的定义v属性类型属性类型-notation(1/3) lnotation主要是用来表明文档中需要来自外部源的主要是用来表明文档中需要来自外部源的数据,而该数据数据,而该数据xml解析器是不能进行解析的,解析器是不能进行解析的,需要外部的应用程序进行处理。如各种格式的二需要外部的应用程序进行处理。如各种格式的二进制文件(比如图形文件、声音文件等)进制文件(比如图形文件、声音文件等)lnotation 类型使用前必须有类型使用前必须有notation 声明声明lnotation声明的语法格式为:声明的语法格式为: 31ec&eb五、属性
27、的定义五、属性的定义v属性类型属性类型-notation(2/3 enumerated)l属性的值必须匹配属性的值必须匹配notation名称列表中的名称列表中的某个名称。某个名称。属性类型定义属性类型定义notation声明声明元素名元素名属性名属性名32ec&eb五、属性的定义五、属性的定义v属性类型属性类型-notation(3/3) l下面的例子为下面的例子为“视频视频”元素指定了两种可选设备,元素指定了两种可选设备,一种是一种是realplayer.exe,用来播映,用来播映.rm文件,另一种文件,另一种则用来播放则用来播放gif图像。图像。?xml version”1.0”
28、 encoding=”gb2312” standalone=”yes”?!docty pe 文件文件 !element 文件文件 any !element 视频视频 empty !attlist 视频视频 演示设备演示设备 notation (rm|gif) #required !notation rm system “realplayer.exe” !notation gif system “image/gif”文件文件视频视频 演示设备演示设备=”rm”文件文件 33ec&eb五、属性的定义五、属性的定义v属性的特点属性的特点requiredl元素的所有实例都必须有该属性的值元素的
29、所有实例都必须有该属性的值(not null)l语法:语法:ldtd 示例示例: lxml 示例示例: 34ec&eb五、属性的定义五、属性的定义v属性的特点属性的特点impliedl元素的实例中可以忽略该属性元素的实例中可以忽略该属性(null)。l语法:语法: ldtd示例:示例: lxml示例:示例: 或或 35ec&eb五、属性的定义五、属性的定义v属性的特点属性的特点fixed valuel元素实例中该属性的值必须为指定的固定值。元素实例中该属性的值必须为指定的固定值。l语法:语法:ldtd示例:示例: lxml示例:示例: 36ec&eb五、属性的定义五、属
30、性的定义v属性的特点属性的特点default valuel为属性提供一个默认的值为属性提供一个默认的值,在在xml可使用该默认值可使用该默认值或指定一新值。或指定一新值。l语法:语法:ldtd示例:示例: lxml示例:示例: 表明表明payment 的的type属性为属性为 check37ec&eb六、属性的定义实体六、属性的定义实体v属性类型属性类型-entity/entitieslentity类型的属性的值必须对应一个在类型的属性的值必须对应一个在dtd文档文档内声明的实体。内声明的实体。lentities类型的属性的值与类型的属性的值与entity类似,不类似,不 同同的是可以
31、包含多个由空格分开的实体。的是可以包含多个由空格分开的实体。l实体引用前必须定义实体引用前必须定义l实体分类实体分类 一般实体一般实体(通用实体通用实体)p内部实体内部实体p外部实体外部实体 参数实体参数实体p内部实体内部实体p外部实体外部实体38ec&eb六、属性的定义实体六、属性的定义实体v内部一般实体内部一般实体l由实体名和及实体内容字符串构成,由实体名和及实体内容字符串构成,xml解析器解析器可以解析。可以解析。l在内部或外部在内部或外部dtd中声明,在中声明,在xml的元素或属性的元素或属性值中引用。值中引用。l语法语法: 定义方式为:定义方式为: 引用方式为:实体名;引用方式为:实体名;l dtd 示例示例:lxml 示例示例:&writer; ©right; 39ec&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年酒店客房餐饮服务承包经营协议
- 二零二五年度二手车交易二手车经销商车辆质量投诉处理协议
- 2025版电脑维修服务与供应链管理合作合同
- 二零二五版酒店装修合同关键条款与合同解除条件
- 2025版新能源技术研发对赌协议合同范本
- 2025版海外农业项目合作合同范本
- 二零二五年度水电项目施工与设备供应一体化合同
- 2025版电力设备电源柜租赁及维护保养服务合同
- 二零二五年度环保领域专业劳务派遣服务合同
- 二零二五年度艺术品抵押典当合同
- 2025年《收纳师》职业技能培训考试题库
- 工业园区物业管理合同范本
- 龙爪树路道路工程建设项目古树避让保护实施
- 国家电投集团广西电力2025年招聘笔试题库
- 感控知识培训课件
- 2025年版护理法律法规
- 高中家长会 高二下学期家长会课件
- 2025年陕西榆林能源集团招聘笔试参考题库含答案解析
- 2024年音乐教师个人校本研修计划范例(2篇)
- 智慧农业大数据平台搭建方案
- 混凝土搅拌站质检员职责模版(2篇)
评论
0/150
提交评论