《Web服务与应用开发 PPT 3、XML(webService学习快速入门)课件》由会员分享,可在线阅读,更多相关《Web服务与应用开发 PPT 3、XML(webService学习快速入门)课件(42页珍藏版)》请在金锄头文库上搜索。
1、1,第三章 XML基础,3.1 XML简介 3.2 XML语法 3.3 DTD简介 3.4 XML Schema 3.5 SAX简介 3.6 DOM简介,2,3.1 XML简介, - George John Reminder Dont forget the meeting! ,一个简单的XML文件:,3,XML(可扩展标记语言,eXtensible Markup Language),是由W3C的XML工作组定义的一种新的Internet数据描述和交换标准。 1996年,W3C开始设计一种可扩展的标记语言。1998年2月,XML1.0成为了W3C的推荐标准。 XML作为一种跨产品、跨界面、跨平台
2、的互联网元数据语言,得到了迅速发展。Web服务的诸多协议,如SOAP、WSDL、UDDI等,都是构建在XML基础之上的,具有极大的应用前景。 XML 被设计用来传输和存储数据。,3.1.1 XML的起源和目的,4,XML的最初设计目标是: XML应该于Internet上运作,并且简单易懂; XML应该可以广泛支持多样性的应用程序; XML应该与SGML兼容; 撰写处理XML文件的程序应该十分简单; 在XML中的选择性功能应该尽可能少,理想状况下其应该为零; XML文件应该易于读取,并且清楚合理; XML的设计应该能十分迅速的完成; XML的设计应该严谨并且简洁; XML文件应该易于建立; XM
3、L标记应该依重要性最小化。,5,3.1.2 XML和HTML的区别,XML和HTML都是用于操作数据或数据结构,在结构上大致是相同的,但它们在本质上却存在着明显的区别,它们的区别主要有以下几点:,语法要求不同,标记不同,作用不同,在HTML中不区分大小写,在XML中对大小写要求非常严格。,HTML使用固有的标记,而XML没有固有标记。,HTML用于显示页面,而XML用于描述页面内容的数据或数据的结构。HTML把数据和显示合在一起,在页面中把这些数据显示出来,而XML则将数据和显示分开。,6,3.1.3 XML的优势,每种语言的产生都能完成某些特定的功能,XML作为一种标记语言也不例外。XML最
4、大的优势在于它能对各种编程语言编写的数据进行管理,使得在任何平台下都能通过解析器来读取XML数据。它的优势可归纳为以下几点:,数据的搜索,数据的显示,数据的交换,在XML中可以提取文档中任何位置的数据,,XML将数据的结构和数据的显示形式分开,根据需要使数据呈现出多种显示方式。如HTML、PDF等格式。,XML标记语言的语法非常简单,可以通过解析器在任何机器上解读。并可以在各种计算机平台上使用。逐渐成为一种数据交换的语言。,7,3.2 XML语法,3.2.1 XML文档的组成,XML文档也属于纯文本文件,该文档一般有两个主要组成部分:序言和文档元素。, Developing Web Servi
5、ces Happy Yu 55.5 ,序言,根元素,XML声明,注释,嵌套在根元素中的元素,属性,8,3.2.2 序言,格式正确的XML文件必须由XML序言开始。它应该指出该文档所使用的XML规范版本、编码方式,同时也说明了该文档是否独立。XML序言中的文字区分大小写。序言包含如下几个属性: (1)版本号。虽然XML1.0是目前唯一的版本,但是仍然要声明版本属性,XML声明如下:。 (2)文字编码声明encoding位于版本属性之后,如下所示:encoding=“SHIFT_JIS”。文字编码声明指出文件使用何种字符集建立,默认值认为XML文件是以Unicode编码(UTF-8或UTF-16)
6、建立的。该属性是可选的。 (3)独立文件声明standalone位于文字编码声明之后,如下所示:standalone=“yes”。它标识了是否需要访问外部数据源。该属性也是可选的。,9,3.2.3 元素,元素是XML文档的重要组成部分,在XML文档中必须存在元素。XML文档的元素一般是由起始标签、元素内容和结束标签构成,起始标签中的元素类型名必须与相应结束标签中的名称完全匹配。元素的内容可以是字符数据、其他元素或者两者的组合。如下代码所示:,XML文档中的第一个元素被称为根元素,在任何一个XML文档中有且只有一个元素被称为根元素。其余所有的元素都是子元素,子元素必须正确的嵌套在根元素中。, D
7、eveloping Web Services Happy Yu 55.5 ,起始标签,结束标签,内容 (嵌套元素),10,3.2.4 属性,有时候元素只有名称是不够的,需要使用属性来描述XML文件。 属性是用来修饰某个元素的,如: this is test ,关于元素的属性需注意如下几个问题:,属性的值必须用引号括起来,如: attribute1=“aa” 或attribute3=aa ; 元素的属性以名和值成对出现; 用来修饰同一个元素的属性的属性名不能相同 ; 属性值不能包含“&”、“”、“”等字符。,11,3.2.5 字符引用、实体引用和CDATA节,XML为显示非ASCII码集中的字符
8、串提供了字符引用和实体引用两种方式。 (1)字符引用:用来表示一个可显示字符,由十进制或十六进制的数字前面加上 插入文档。 (2)实体引用:是一种合法的XML名字,前面带有一个符号&,后面跟着一个分号组成。所有实体必须在使用前予以定义。注意,XML中有五个固有实体,如下表所示。,12,如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。 例如,要写入 Mec。,13,如果在元素内容的字符数据中需要插入许多,其中部分可以是任意字符串,只要不包括字符串“”即可。在 XML 分析器遇到第一个 时,将停止报告并返回正常分析。,14, test ,15,3.2.6 注释,在X
9、ML文档中的适当位置添加注释可大大增强可读性和清晰性。 注释以 结尾,在两个定界符之间,可以输入任意想要输入的字符,除了双连字符(-)之外。 例如 。 注释可以出现在文档序言中,包括文档类型定义 (DTD);文档之后;或文本内容中。注释不能出现在属性值中,不能出现在标记中。,16,格式良好的(well-formed)XML文档 如果某个文档符合XML语法规范,那么我们就说这个文档是“格式良好”的文档。只有格式良好的XML文档才能被正确的分析和处理。所谓格式良主要指满足以下几项要求: (1)确定且唯一的根元素; (2)元素的标记区分大小写,开始标记和结束标记匹配; (3)正确的元素标记嵌套; (
10、4)为属性赋值时必须将属性值用引号括起; (5)同一个元素的属性不能重复。 有效的(valid)XML文档 一个格式良好的xml文档是有效的,如果以下条件成立: (1)文件的序文必须包含合适的文件类型声明,该声明包括文件模式定义,如DTD、XML Schema,负责定义文件的结构。 (2)文件的其余部分必须符合模式定义中所定义的结构。 在此大家要明白XML文档可分为结构良好的XML文档和有效的XML文档,以及他们之间的关系。即具有结构良好的XML文档并不一定就是有效的XML文档,反之一个有效的XML文档必定是一个结构良好的XML文档。,17,3.2.7 XML命名空间,XML的元素名字是不固定
11、的,当两个不同的文档使用同样的名称描述两个不同类型的元素时,或者用一个同样的标记表示两个不同含义的内容时,就会发生命名冲突。XML命名空间提供了一种避免元素命名冲突的方法。 XML命名空间并不是XML1.0标准的一部分,而是一个称为“Namespace in XML”的独立标准。W3C组织于1998年2月提出了XML命名空间标准的第一个草案,直到1999年1月才正式发布为推荐标准。,18,XML命名空间的声明有两种方式,即直接定义方式和默认定义方式。 (1)直接定义方式:xmlns:命名空间前缀=命名空间名 其中,“xmls:”是必有属性;命名空间前缀是命名空间的别名,它的值不能是xml;命名
12、空间名是一个统一资源标识符引用,其功能是区分不同的命名空间。 (2)默认定义方式:xmlns=命名空间名 没有“命名空间前缀”的命名空间声明,就是默认的命名空间声明。定义一个默认的XML命名空间,那么在一个命名空间的作用域里所有未经命名空间前缀修饰的名称被默认为属于这个默认的命名空间。,XML命名空间的声明,19,命名空间的使用,在定义了命名空间的声明以后,对如何引用构成新的元素名和属性名,需要进一步统一规范,这就是所谓“合法名称”定义。 “合法名称”由用冒号:分开的前缀部分和本地部分组成。其中,前缀部分必须是一个命名空间前缀,且这个命名空间前缀必须已经经过命名空间声明,语法分析器会自动将其与
13、声明中的命名空间名相联系;本地部分是该命名空间中定义的元素或属性名。 “合法名称”可应用于起始元素标记、结束元素标记、空元素标记以及属性的定义。,20, Jeff Smith C# 35 , 3235329 Jeff Smith C# 9.5 ,21,命名空间的作用域,命名空间的作用域范围,是指一个命名空间声明可以作用到哪些元素和属性。一般情况下,一个命名空间的作用域包括定义这个命名空间的元素以及该元素的所有子孙元素。声明命名空间的作用域有两种方法: (1)默认:如果定义了默认的命名空间,那么在该命名空间的作用域里所有未经命名空间前缀修饰的名称被默认为属于这个默认的命名空间; (2)修饰:如果
14、需要在一篇文档里从某个元素默认的命名空间之外的命名空间来修饰元素或属性名称,可以在文档的开头声明将要使用的命名空间,然后对需要使用的元素和属性使用命名空间进行修饰。,22,3.3 DTD,什么是DTD DTD 的作用是定义 XML 文档的结构。 在信息的高速交流中,不同领域之间的信息交换越来越紧密,如何才能保证这些不同领域之间的信息可以更容易且更有效率地交换成为我们首要关注的问题。为了解决这个问题,就需要不同的领域来针对领域的特性制定共同的信息内容模型(content model),然后再通过这个共同的内容模型来标识信息。而DTD就是一种内容模型。 DTD(文档类型定义)可以定义合法的XML文
15、档结构,它使用一系列合法元素来定义文档的结构。DTD分为内部DTD和外部DTD,所谓内部DTD是指该DTD在某个文档的内部,只被该文档使用。外部DTD是指该DTD不在文档内部,可以被其他所有的文档来共享。DTD文档与XML文档实例的关系可以看成是类和对象的关系。,23,每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。既然DTD有外部和内部之分,当然就可以为某个独立的团体定义一个公用的外部DTD,那么多个XML文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些文档中还可以使内部DTD和外部DTD相结合。在应用程序中也可以用某个DTD来检
16、测接收到的数据是否符合某个标准。 对于XML文档而言,虽然DTD不是必须的,但它为文档的编制带来了方便。加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。如果不使用DTD来对XML文档进行定义,那么XML语法分析器将无法对该文档进行确认。,DTD的优势,24,根据需求写DTD,需求:根元素为“workers”,其中有多个工作者“worker”,每个工作者都有属性“id”用来唯一标识自己,“经验”属性可有可无,但只能取“有经验”和“没有经验”两种值。工作者包括姓名、性别、职位、工资等信息,如果职位是“经理”,要显示他手下有多少员工。反之,则不显示。,DTD文件代码如下: ,DTD实例,25,利用DTD验证有效性的解析器,就能够立即对文档的完整性进行可靠的检查。DTD虽然比较实用,但DTD也有不少的缺陷。 如下:,DTD不支持命名空间机制,一个XML文件只能有一个对应的DTD。,DTD本身并不是XML文档,DTD 是基于正则表达式的,