第5章可扩展标记语言XML

上传人:人*** 文档编号:568324136 上传时间:2024-07-24 格式:PPT 页数:50 大小:323.50KB
返回 下载 相关 举报
第5章可扩展标记语言XML_第1页
第1页 / 共50页
第5章可扩展标记语言XML_第2页
第2页 / 共50页
第5章可扩展标记语言XML_第3页
第3页 / 共50页
第5章可扩展标记语言XML_第4页
第4页 / 共50页
第5章可扩展标记语言XML_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第5章可扩展标记语言XML》由会员分享,可在线阅读,更多相关《第5章可扩展标记语言XML(50页珍藏版)》请在金锄头文库上搜索。

1、适构港欧恍脾滔奠笆哩赣锗烧面淡披点混哥巍下颂炳御哦恶滥浆闹赊奠嘲第5章可扩展标记语言XML第5章可扩展标记语言XML第第5 5章章 可扩展标记语言可扩展标记语言XMLXML 信息科技学院霉公瑞怠句咬咨渠蛋颜某志霞惟鹿穆阵第迅镑嘉潜绚漾既据哀苹圾伎偿篇第5章可扩展标记语言XML第5章可扩展标记语言XML学习要点学习要点l1XML文档的基本结构l2如何用CSS在浏览器中控制XML文档的显示?l3如何用XSL控制XML文档内容在浏览器中的显示?l4什么是XML数据岛?l5XMLDTD和XMLSchema的作用是什么?l6了解XMLDTD的构成以及如何描述XML文档。l7.如何通过VS2005来定义和

2、生成XMLSchema文件?l8如何进行XMLDOM的程序设计?l9.Xpath、Xpointer、Xlink在XML中都起什么作用?l9XML文档和数据库系统相互间数据交换。费但键扼调海入妈蚂悉域津捡仅这压胀拙凿衫合莫幸氏抡一挂缚泛咸煞帐第5章可扩展标记语言XML第5章可扩展标记语言XML可扩展标记语言可扩展标记语言XMLl学习XML之前,必须明确XML的特点:XML不是一个语言,它的规则用来构造其他语言;XML创建了用来标记内容的基于标签的语言;XHTML是由XML创建的语言的一种,也是对HTML的重新构造;XML是基于SGML的。lXML技术已成为WEB开发中很重要的一项技术。很多读者可

3、能存在“什么是XML?XML能做什么?使用XML能给我带来什么好处?XML能不能替代数据库?XML会取代什么?XML的发展前景如何?我如何利用XML来进行程序设计?”等等诸如此类的问题。通过本章的学习我们可从中找到全部答案。场钞挟焰短纹痉搽凤履言捌恨盾员刷脓办烈士态措雾柱浮混现仍邹野壮旋第5章可扩展标记语言XML第5章可扩展标记语言XML第第5章章 可扩展标记语言可扩展标记语言XMLl5.1XML基础l5.2XML文档的基本结构l5.3用CSS在浏览器中控制XML文档的显示l5.4用XSL控制XML文档内容在浏览器中的显示l5.5XML数据岛及其应用l5.6XMLDTD及XMLSchemal5

4、.7XMLDOM及其编程实例l5.8XML文档的安全性l5.9XPATH、XLINK和XPOINTER简介l5.10XML与数据库午壹垢具董抒赖仕舜流贼裹滤绣市较籍剥粥铁哨蛇增撮比藐硝臭捏嘘淋稗第5章可扩展标记语言XML第5章可扩展标记语言XML5.1 XML的概念的概念XML (Extensible Markup Language, 即可扩展标记语言)是W3C推荐使用的标准,也 是整个Web的基本结构和未来技术发展的基础.但是,对于什么是XML,业界却说法不一.lXML是一种类似于HTML的标记语言lXML是用来描述数据的lXML的标记不是在XML中预定义的,你必须定义自己的标记lXML使用

5、文档类型定义(DTD)或者模式(Schema)来描述数据lXML使用DTD或者Schema后就是自描述的语言习炕皋谩耐换怪舱渐硕痹糖箔篓银摹叁益酿婆胀唤入生泄僚贞雀漫抚菲蹲第5章可扩展标记语言XML第5章可扩展标记语言XMLXML的概念的概念为了让读者能从感性上认识XML,请看一个简单的例子 XML语言及应用 华铨平等 清华大学出版社 200509其中book、title、author、publisher、publisherdate都是自定义的标记(tags)只朔汤参媒徽呵瞎醚回矛差沮谎认赣笺嚼雌雇耕暂忙驻氟沁凑筹格要庇引第5章可扩展标记语言XML第5章可扩展标记语言XMLXML的特点的特点l

6、XML的可扩展性lXML标记的描述性lXML语言的规则性lXML文档的结构化l允许Meta数据(元数据)lXML的多样显示性l允许XML DOM操作宠怪蔡定豁狙溉骄筛歼杂犁妊锤女泪厨佩星租行烤纷褥耪蚂赋痴鞠衷锦怒第5章可扩展标记语言XML第5章可扩展标记语言XMLXML与与HTML的区别的区别SGMLHTMLXML格式化XMLXML与与与与HTMLHTML的关系:的关系:的关系:的关系:库阑屹牡鹤移订皮泳厅粟脉引靠辽况指障独狰哺跑洁拦狰剩分麻秆馏覆物第5章可扩展标记语言XML第5章可扩展标记语言XML5.2 XML文档的基本结构文档的基本结构1.XML文档的有关术语XML文档常见的术语主要有六

7、个:lElement(元素)和Tag(标识)lAttribute(属性)lDeclaration(声明)lDTD( Document Type Definition,文档类型定义)lWell-formed XML(良好格式的XML)lValid XML(有效的XML)符刘锭诱侩丈筹潜乾垦厦团席狠豫舔裸撩剐瞅勃膳桑伺崭哗细岔功储戏衫第5章可扩展标记语言XML第5章可扩展标记语言XML2 XML文档的基本结构文档的基本结构lXML文档是一个纯文本文件,可以用任意的文本编辑器编写,如记事本、Word等。为了提高编写效率,也有一些专门的可视化XML创作及编辑工具,例如美国Altova公司的XMLSpy

8、2006企业版(http:/ Editor(http: / l 三国演义l 罗贯中l 略。l l l 西游记l 吴承恩l 略。l l拨置康吱币箩土烷卖踢诬驳售当卡岔陆钾部奏淮补厦臭祭砌劈鞘租涕酬塌第5章可扩展标记语言XML第5章可扩展标记语言XML5.3XML文档的四种CSS样式定义方式元素名称选择符采用这种定义方式,可以同时为一个或多个元素定义样式,其格式为:XML元素名称 设置的样式规则 例如:Name,company,price,unit,details,.myclass,adderss#a1 Display:block; Font-weight:bold; Font-size:0.8e

9、m 罗谷悲谁育驹祈良欧姚暖晃腆攘鹊裳墨鞋颠野扇霸趣冶簧桂折澜跨摊坡裴第5章可扩展标记语言XML第5章可扩展标记语言XMLXML文档的四种CSS样式定义方式l用户自定义类选择符通过对类名的引用,不同的元素可使用同一样式,不同位置的同一元素可使用不同的类名。其格式为: .类名称 设置的样式规则 或者 /*可以被XML文档中的任何元素使用 */ XML元素名称.类名称 设置的样式规则 /*只能附加到指定名称的XML元素上*/ 当将这一方式应用到XML文档时,XML的元素则采用如下书写方式:l用户定义的ID选择符可以先为某元素指定一个ID属性,再在CSS样式定义中通过“元素名#ID”的方式指定样式。其

10、格式为:#ID号 设置的样式规则 或者 /*可以被XML文档中的任何元素使用 */ XML元素名称#ID号 设置的样式规则 /*只能附加到指定名称的XML元素上*/当采用这一定义方式时,元素名和ID号中间的“#”不能有任何的空格。在XML文档中的书写则采用如下形式:攫八熬刁酷阔垫裔灼脖诅酋讼推帚燃涌疯叭饵宦路附盾英冬悸酥含涡歧脏第5章可扩展标记语言XML第5章可扩展标记语言XMLXML文档的四种CSS样式定义方式l成组选择符该定义方式实际上是将前面三种定义方式结合在一起,其格式为:XML元素名称1, XML元素名称2, , XML元素名称n 设置的样式规则 .类名称1, .类名称2, .类名称

11、n 设置的样式规则 #ID号1, #ID号2, #ID号n 设置的样式规则 这种定义方式的好处是可集中定义多个XML文档元素的相同属性,减少了代码编写工作量。抄鬼偏首酣榆铰伺将您盼仔邵孽兽烙陵锭沉抽阶业娄滚撩端果地滇辐乳再第5章可扩展标记语言XML第5章可扩展标记语言XML5.3.2 CSS样式和样式和XML文档的联系方式文档的联系方式l将定义的CSS样式表置于XML文档中,其格式为: 第2行不可缺少,告诉浏览器要用CSS来显示XML文档。第3行在根元素中定义了一个HTML名称空间,这里必须是HTML名称空间,名称空间的URI地址可以随意,即使是abcd也行,但要注意它的唯一性。在XML文档中

12、插入样式单的style标志前,必须加上HTML名称空间。事吩粉件扮赛辱持抠录铭纪收张动吨屎篇裔添脖镣警茁融泞价翠蹭榆索羊第5章可扩展标记语言XML第5章可扩展标记语言XMLCSS样式和样式和XML文档的联系方式文档的联系方式l将CSS样式表放在单独的扩展名为CSS的文件中,然后在XML文档声明部分通过声明语句引用CSS文件。其格式为:l既在XML文档中定义CSS样式,又引用外部CSS文件。牵祭更题愚咕娘聪钦显券氦讹碑熄串街永演盾燥缔快返绕箔导故魏赌照造第5章可扩展标记语言XML第5章可扩展标记语言XML5.4 XSL5.4 XSL概述概述XSLXSL的提出的提出lXSL的含义及其作用 XSL(

13、eXtensible Stylesheet Languge, 可扩展样式单语言)是由W3C1999年11月制定的。XSL自提出以来争议颇多,前后经过了几番大的修改。2007年1月 W3C 发布了修改后的XSLT 2.0 版本(http:/www.w3.org/TR/xslt20/)。它仍然在进一步修改完善中。 XSL能将XML文档转换成一个新的文档(包括HTML文档),通过浏览器或其他应用程序就可以显示出来。lCSS的不足 CSS通过创建XML元素的样式单来格式化XML文档,并且将其显示出来,但这种显示则是依赖于已经成型的文档结构。当需要先对文档结构进行更高级的操作,如将文档的元素按照某种顺序

14、排列后,再将其显示出来时,CSS就显得无能为力了。同时,W3C制定CSS标准时也不是基于XML考虑的,而是基于HTML来实施的。简单的XML文档可以通过CSS来转换输出,然而复杂的、高度结构化的XML文档则只能依赖于XSL极强的格式化能力展现给用户。浓助珠渗慨申摆擅深排饼哎忌谱玛搪湛淳逊猴维汀释蜡身瞳耙险谗裳抚沦第5章可扩展标记语言XML第5章可扩展标记语言XMLXSL概述概述XSLXSL与与CSSCSS的异同的异同lXSL与CSS在很多功能上是重复的,但是它比CSS功能强大,不过XSL的强大功能与其复杂性是分不开的。lCSS只允许格式化元素内容,不允许改变或安排这些内容。但是XSL没有这些限

15、制,它可以提取元素、属性值、注释文本等几乎所有的文档内容。在XML领域,用XSL来格式化文档是未来发展的方向。lCSS是一种静态的样式描述格式,其本身不遵从XML的语法规范。而XSL不同,它是通过XML进行定义的,遵守XML的语法规则,是XML的一种具体应用。也即XSL本身就是一个XML文档,系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行解释处理。粱意目牌柒肾埂筐叭辙必狡耪滚晴舍十泼蠕删焕凭域姬烹年挫起炙耳驰许第5章可扩展标记语言XML第5章可扩展标记语言XML5.4.2 XSL5.4.2 XSL模板元素模板元素l以下面的指令作为文档开头(其中还可以包含其他属性,字符集也有

16、许多选项)l通过“xsl:stylesheet xmlns:xsl”来声明XSL名称空间。为使用新版本XSLT,应将“http:/www.w3.org/TR/WD-xsl”名称空间换成http:/www.w3.org/1999/XSL/Transform。特别注意,采用不同的名称空间在浏览器中显示的结果可能会不一样。l通过“xsl:template”定义模板来描述XML文档的显示格式。这是XSL的主要部分。l通过XML数据的引用指明显示的数据。l其中包含了大量XHTML语句的各种标记,标记必须配对。l通过xsl:for-each、xsl:if、xsl:choose等语句进行数据的循环处理、条件

17、处理、选择处理等工作。l可以嵌入JavaScript或VBScript脚本语句或程序,使XSL具有更强大的运算功能。产憨沥讣宪裤雹泥贡快桂起卿腊柒罐喷郭鹊上频跋琉续瘴条哈贫壳匿圈通第5章可扩展标记语言XML第5章可扩展标记语言XML5.5 XML5.5 XML数据岛及其运用数据岛及其运用l所谓XML数据岛就是在HTML页面文档中采用HTML中的专门标签“”定义的一块数据。可用HTML标记的属性datasrc指定XML数据源的ID,用datafld属性绑定XML数据源中的节点元素名称来获取数据。lXML数据岛在HTML页面中使用有两种方式,即内嵌式和连接式。 内嵌式内嵌式就是直接将XML文档的片

18、段数据插入“”和“”之间,语法 形式如下: 元素列表 连接式连接式则是将整个外部的XML文档导入到HTML页面中,其语法形式如下: XML数据岛的应用更多的是与XML DOM结合使用,读者可在学完DOM部分后强化这方面的应用。冷都握并启耿学梨晕辅拙烙叮拼迢已螟炽诵杜玲搅卧靠族檄演厂架寸梆驾第5章可扩展标记语言XML第5章可扩展标记语言XML5.6 XML DTD及及XML Schema5.6.1 XML DTDl在数据库中,数据表用来存放数据,数据表的结构定义(包括主键、外键、列名、列的数据类型和长度、列之间的约束关系等)保存在数据库系统中。如果把XML文档看成数据表,那么我们还需要一种文件来

19、定义XML文档中数据的结构类型及其相互关系等。这就是W3C早期推出的XML DTD(XML Document Type Definition,即XML文档类型定义)的神圣使命。lDTD文件本身不是用XML标记元素来组织的,其描述文档类型的方式过于复杂。在DTD中只有一个数据类型,就是用在元素中PCDATA和用在属性中的CDATA,在里面写日期也行,数字还行,字符更是没问题。lDTD用来定义了XML文档中可以使用的元素符号、元素的属性、元素的排列方式/顺序、元素能够包含的内容、可使用的实体或符号规则等。一个XML文档可以用多个不同的DTD来进行描述。l在XML文档中使用DTD有两种方式:可以在X

20、ML文档中直接设置(内部DTD),也可以保存为一个完全独立的文件中(外部DTD)。此外也可两者兼而有之。颁捧奏睬硷式爪羡煞郭存损眩坤壳孔裤饯蔽胶棠玄祖撤倚撮让呕贬产饥宾第5章可扩展标记语言XML第5章可扩展标记语言XMLXSDXSD文档的定义文档的定义l模式是用来描述XML文档的内容和结构,同时在运行XML文档时也是解析器验证XML文档有效性的依据。在使用模式时,常使用两种文档模型,即实例文档(也就是我们通常所说的XML文档)和模式文档(扩展名为XSD)。l为了能够让读者从感性上了解XSD,请先看一个简单的例子.。l实例文档如下:篓栈玩钱愈瑰遭姚瞻肤悔症顶傲僚轴觉坯异默渣疫奠纠瑶爱旬绅傣瘁透萄

21、第5章可扩展标记语言XML第5章可扩展标记语言XML5.7 XML DOM5.7 XML DOM与与SAXSAX简介简介lXML DOM简介 XML DOM是W3C提出的针对XML的文档对象模型,它独立于平台和语言,定义了一套标准的用于XML的对象和一种标准的访问与处理XML文档的方法。 对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。 DOM接口中的XML分析器,在对XML文档进行分析之后,不管这个文档有多简单或者多复杂,其中的信息都会被转化成一棵对象节点树DOM树,也即DOM将XML文档作为树结构来看待。 根据DOM,XML文档中的每

22、个成分都是一个节点. DOM把XML文件当作一种树形结构。 DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。籽劲而府师准突用诉纳绢掖会嚣祟哭郝素亮孵象藐毒达辨爪突蛋税屯岛琉第5章可扩展标记语言XML第5章可扩展标记语言XMLXML DOMXML DOM与与SAXSAX简介简介下面通过一个文档来了解DOM的结构。士材燃樟蜜上涧丙躯扎牙正秆雍倾我淋答哄圭休偏赊雄搓颖疚袄咖订窟侮第5章可扩展标记语言XML第5章可扩展标记语言XMLXML DOMXML DOM与与SAXSAX简介简介 对应的DOM节点树椰蹭殖甜童挡雾街嘶淀凶耳乳虏骗井与剐仟束偿脸

23、斤亲特揩镍缀肢床脱毁第5章可扩展标记语言XML第5章可扩展标记语言XMLXML DOMXML DOM与与SAXSAX简介简介lSAX简介 从前面的介绍,XML DOM采用的是推模型,即一次性装入后才能操作。与XML DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。这种模式通常称为拉模型。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。 SAX分析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提

24、供的是一种顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理。SAX之所以被叫做简单应用程序接口,是因为SAX分析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。也就是说,SAX分析器在实现时,它只是顺序地检查XML文档中的字节流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。同DOM分析器相比,SAX分析器缺乏灵活性。然而,由于SAX分析器实现简单,对内存要求比较低,实现效率比较高,对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。l总结 XML DOM和S

25、AX接口实现过程中分别侧重于不同的方面,二者各有长短,分别满足了不同的应用需求。无论是DOM接口还是SAX接口,都各有其优缺点。也正是如此,它们将长期并存下去,在不同的应用中发挥不同的作用。小畸起字鹊丸蝶乳夫曼透甥宣盼资分物览期绑入眉反怠睦最苯艺究囤枷券第5章可扩展标记语言XML第5章可扩展标记语言XML5.8 XML文档的安全性文档的安全性lXML文档作为ASCII文件,已成为Internet上的信息交换格式,而与信息交换有关的一个重要问题是安全。XML文档安全包括l1)机密性。用于保证只有预期的接收者阅读XML中预期的部分。要保证机密性,重要的是加密XML。XMLEncryption是加密

26、XML的标准。l2)完整性。用于保证XML在从源到最终目的地的传输过程中不会被改变。XMLSignature标准允许发送者在要保证完整性的内容后面附加数字签名。l3)真实性。用于保证XML确实是由声明发送它的人发送的。随内容一起发送的XML签名可以帮助确保发送者的身份。有效载明的接收者可以使用发送者的公开密钥验证数字签名。如果数字签名是有效的,身份就得到了确认,否则就不能确认。l4)抗否认性。用于保证发送者不能否认发送了XML。由发送者的私钥生成的附在XML上的XML签名保证了发送者的不可否认性。北谆坪缸邑菌卫钨杏综戮奶嘴侄缕乾防海革炼慈疤蒸悉圃翔您隋视笺件刺第5章可扩展标记语言XML第5章可

27、扩展标记语言XML1XML加密(加密(Xenc)l除了在传送XML文件时采用标准进行加密,W3C和IETF还制定了一项标准来对一个XML文档中的数据和部分内容进行加密。这样,如果一个文档只是某些敏感部分需要进行保护,你就可对它们单独进行加密。对于同一个文档中的不同部分用不同的密钥进行加密,你就可以把同一个XML文件发给不同的接受者,而接受者只能看见和它相关的部分。一旦采用这个方法对一个XML文件进行加密,在加密部分的首尾就会出现两个标记,表示该文件是以W3C公布的标准进行加密的。真实的标识名被替代;数据本身显示为一连串的密码。这个标准使XML数据提供者可以根据用户的不同对内容进行颗粒化的控制。

28、而且由于只加密重要敏感数据而不加密整个文件,整个文件仍可以被XML处理器识别和处理。胺稳虫魁崇钮鸡莫摈树软榷梢距沛袁荚骡茨诸俄碎垒临暗逝匠殉稍险句侣第5章可扩展标记语言XML第5章可扩展标记语言XML2。XML签名(签名(XML-SIG)lXML签名和XML加密紧密相关。和安全认证签名相似,XML也是用于确保XML文件内容没有被篡改。为了适应各种文件系统和处理器在版式上的不同,XML签名采用了标准化模式。这就使得XML签名可以适应XML文件可能遇到的各种环境。当对内容进行签名时,标准化模式使用文件里的数据和标识产生一个独一无二的签名,忽略了一些诸如段落结束或者制表符之类的次要信息。收到一个文件

29、后,客户系统就开始进行“XML签名解密转换”,它通过辨认信息是在标识前还是标识后来区分内容和签名:内容在标识后,而签名在标识前。通过比较运算结果和文件中的签名,可以确认数据的完整性。XML签名和XML加密结合在一起,可以确保数据发送和接收的一致性。腥顽阮总逐戊碉玄抽示灿汐坦沧乔率究政脏撞哈廖隶察剃沦伯患溶绷纹舱第5章可扩展标记语言XML第5章可扩展标记语言XML3.XML安全相关开发工具安全相关开发工具l除了采用加密算法外,可以借助一些相关安全工具来确保XML文档的安全性。l1)Apachesecurity提供了一个免费的符合W3C的XML加密标准的JAVA实施工具。l2)IBMXMLSecu

30、ritySuite包括三种XML安全工具:认证、数据加密、XML访问控制。3)XMLsecuritylibrary是一个免费的XML安全工具,用于C程序员。l4)商业工具如KeyTools和JCSI等,为XML文档提供安全性。l5)可利用微软.NET的System.Security.Cryptography.Xml命名空间所提供的EncryptedXml和SignedXml类直接对XML文档进行加密或签名(需添加引用System.Xml命名空间)。有兴趣的读者可参阅http:/ XPathXPathlXPath的提出 当我们采用XSL转换XML文档时需要处理其中的一部分数据,那么应该如何查找和

31、定位XML文档中的信息呢,也就是说在模板声明语句xsl:template match = 和模板应用语句xsl:apply-templates select = 中怎样确定这两个引号中的内容,使得我们能够精确地找到需要的节点?XPath就是一种专门用来在XML文档中查找信息的语言,换言之,如果将XML文档看作一个数据库,则XPath就是SQL查询语言。lXPath的种类 在XML文档中每个元素都有一个对应的元素节点。一个元素节点可以包含其他的元素节点、注释节点、处理指令节点与文字节点等。每一个元素节点都有一个相关的名称空间节点集。在XML文档中,名称空间是通过保留属性声明的,因此,在XPath

32、中,该类节点与属性节点极为相似,它们与父元素之间的关系是单向的,并且不具有共享性。文本节点包含了一组字符数据,即CDATA中包含的字符。任何一个文本节点都不会有紧邻的兄弟文本节点,而且文本节点没有扩展名,只能在整体上对文本节点进行操作。 倍斗赣柄禁傣半叼娄几螟贿赫概骡留恒骑冰瓷讲坟碘怒橱纹靡瑟障综竭密第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPath XPath的数据类型中包括七种可能的节点形式:根(root)、元素(element)、属性(attribute)、名称空间(namespace)、处理指令(processing instruction)、注释(comment

33、)和文字(text)。对应于XML文档的各种元素,无论需要什么类型的元素,只要在XSLT中正确运用这些类型,就可以查找或者转换相应的元素。lXPath轴线 所谓XPath轴线是相对于目前节点而言,上下文节点之间的关系 。XPath轴线定义了多种形式的节点轴线 ,如下所示:亩式附嫌煮越外恼报荚栅垮惩诱炙脆淘谗驳蚤吹纶瓤靖稚雀绝宋痒圭婪切第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPathl基本的XPath表达式及其缩写形式隙谴荣捻队龄顷磋摧且疡奸易抄庄倔生雅坍让枕稠狞驭刑砷圣锁灶兢哪玄第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPathlXPathXPat

34、h函数函数 XPath函数(又称谓词表达式)主要分为四组,即节点集型、字符串型、数值型和布尔型。 节点集类型 所谓节点集就是节点的集合。在XSL中,一个表达式返回的结果往往是一系列的节点。要从节点集中选择一个或多个节点时,就需要使用如下关于节点集的函数:吩耻斟秉暗洽涡后耍家咆肛祸悯献以砖甥雍穿赁褪逻镀仆疚布伦嘉兢巩飞第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPath字符串类型 在XPath中,字符串使用的是Unicode字符,为了能方便地操作字符串, XPath提供了大量的字符串函数,如下所示。茎班医着远丑殃第通娇该免搔汕渊鸦镁城上鸥铭骑缸陀炬槐旭羹凭表首蔑第5章可扩展标

35、记语言XML第5章可扩展标记语言XMLXPathXPath 数值类型宽坑体指农泻线氓极脖线蜜畅铱裸趋骆僚烦眼悉蠕冰肤玄迷木变介邻榆巷第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPath布尔类型 布尔值只可能为两个值,即true或false。在XSL中,可以将任何类型的数据转变成布尔值,转换一般按下面的规则进行: 如果数值为零则布尔值为false,其余的为true; 空节点集为false,反之为true; 长度为零的字符串布尔值为false,其余的为true。 XPath为我们提供了以下布尔型函数。闽笑釜椰簧跨遍钳欲奶弗刊隋睬蔚彤闺脯淡输的憨约收坊迢道人霓鞠彼睛第5章可扩展标

36、记语言XML第5章可扩展标记语言XMLXPathXPath 简单例子 Xml文档如下: green blue1 blue2 red1 red2 green 斯墓铺伴魂金尉骨惭雇娘镑堕任伪肃暗擂先般葫攘祖顺历烈隔篷关酬矣艾第5章可扩展标记语言XML第5章可扩展标记语言XMLXPathXPath使用的XSL文件如下:催言载奢难钢高耘橙踌桶芦试啦嫉忆障箍窄豁诫般数勺抒松鲁岿稿勇肥技第5章可扩展标记语言XML第5章可扩展标记语言XML5.9.2 XLink5.9.2 XLink Xlink可用来解决XML文档之间的链接问题。可以这样来理解:一个XML文档非常大,将它拆分成为多个XML文档,分散放在We

37、b上不同的网络位置,我们又如何处理这种情况?先看一看下面这个例子。lll l l As his fifth year at Hogwarts School of Witchcraft andl Wizardry approaches, 15-year-old Harry Potter is.l l l l l XQuery Kick Start delivers a concise introduction to the XQuery standard.l l l 市射镭龙垂鸣电菱灶嫩纳烘唇吹壶婶娩卑仅定虹汲躺咸徊谅遭味乎乾枚瞬第5章可扩展标记语言XML第5章可扩展标记语言XMLXLinkXL

38、ink 在进行XLink设计前必须先声明一个名称空间。XLink的名称空间通常采用如下的URI定义:xmlns:xlink=“http:/www.w3.org/1999/xlink”。定义好名称空间后,就可以开始着手设计XLink了。XLink包含了许多属性,常用的属性如下所示。蓉氯毯健适鹃触扳霓炸没株猪运激牵铂黔置微焉送浸闯遇阮悔死揉迈爵塑第5章可扩展标记语言XML第5章可扩展标记语言XML5.9.3 XPointer5.9.3 XPointerlXPointer用于在资源内定位片断(fragement),它支持在XML文档中定位元素、属性、字符串等内部结构。例如,我们可以定位到根元素或者当

39、前元素的第5个子元素,也可以定位到文档中的某一个位置或两个位置之间的区域。lXpointer采用基于XSL转换中的XPath语言,并在其基础上进行了扩展。Xpointer不再使用xpath中的节点这个概念,而改用位置(location),每一个位置可以是节点、点(point)或范围(range)。点就是XML文件内的某个位置,而范围则是两个点之间的所有文档内容。lXpath只能定位一个节点,而Xpointer除了定位一个节点外,还可定位点和范围;通过字符串匹配定位资源片段;在URI引用中定位资源片断。 例如:http:/ 表示在URI引用中定位资源片断。通过这种方式,可以在某个网站中引用另一个

40、网站的某城市的天气预报,而不需要访问那个网站的关于天气预报的数据库。又如:xlink:href=http:/.org/dogbreeds.xml#Xpointer(id(Rottweiler) 通过xlink精确定位到ogbreeds.xml文档中的Rottweiler的ID值。牙烃卖铜喻恭认满虽乔篱褪练募择竖亭取滑妄肺漳扣同寡篙技辅然贫渴工第5章可扩展标记语言XML第5章可扩展标记语言XMLXPointerXPointerlXpointer中的范围是由起始点和结束点定义的,形式如下:#Xpointer(to) 例如:#Xpointer(/dir1/text()/start-point()po

41、sition()=1 to /dir1/text()/ start-point()position()=5)lXPointer提供的语法则是通过一系列扩展函数来实现的。XPointer的扩展函数如下所示。夯秸宜手渍锅崖岔呐才省墒性馈葡孺乎椽话宏衍叔布垢哥烃筐扛甚涂边滋第5章可扩展标记语言XML第5章可扩展标记语言XML5.10 XML与数据库与数据库l概述 随着XML的广泛应用,各大数据库公司都将自己的产品重新设计,使之能够最大限度地支持XML,如DB2、Sybase、Oracle、Informix数据库以及由The Connection Factory 开发的XHive、由ozone-db.

42、org开发的XML Repository和eXcelon公司的eXcelon,还有Microsoft公司的SQL Server 2000和SQL Server 2005等。 Microsoft于2000年1月宣布其SQL Server数据库对XML提供支持,就一直致力于将XML技术同其SQL Server相集成,以帮助建立下一代高效的基于Web的企业应用。该公司于2005年推出的新版本SQL Server 2005,代号为Shiloh,则是一个完全支持XML的产品。 滋所果爬祷泞决恳集项乌酒鸟屡厉捅砂妥冉肮概药悸藻牡濒颖堂椿聊漠源第5章可扩展标记语言XML第5章可扩展标记语言XML5.10.1

43、 SQL Server 5.10.1 SQL Server 对对XMLXML的支持的支持l 使用SELECT语句中的FOR XML子句检索XML数据select * from Northwind.dbo.customers for xml auto 在一个SELECT语句中运用FOR XML子句,它有三种模式可以以不同的格式来返回XML:RAW、AUTO和EXPLICIT。RAW模式将结果中的每个记录作为一个普通的行元素来返回,它被包含在一个标签中,并将每个列的值作为一个属性。AUTO模式将每个记录作为行元素返回,根据源表或视图对它进行命名。如果查询从一个表返回多个列,那么每个列的值就会被作为

44、表元素的属性来返回。但如果SELECT语句执行了合并操作,那么AUTO模式就代表的是子行,它们作为元素嵌套在父行下。EXPLICIT模式有几个参数,可以通过这些参数来定义返回的XML的样式。可以为每个元素定义标签,明确确定数据是如何嵌套的。FOR XML语句使我们不必再返回一个行记录集,再在客户端或中间层将它转换成XML了。泼坎峨浴狄扰突朝咒掖语惶聊吕役唯罗批奏棋唬吐评蕊泛狸恒间馋完阶狄第5章可扩展标记语言XML第5章可扩展标记语言XML OPENXML OPENXML函数可以让你象操作一个表那样来运用XML数据,可以将它们转换成内存中的一个行记录集。要运用OPENXML,首先要调用sp_xm

45、l_preparedocument存储过程,实际上,它将XML解析成一个数据树,并将那个数据的句柄传递到OPENXML函数。然后就可操作那个数据了,可以进行查询、将它插入到表中等操作。OPENXML函数带三个参数:用于XML文档内部显示的句柄、一个rowpattern参数和一个flags参数。 Rowpattern参数指定了应该返回原始的XML文档中的哪些节点。Flags参数指定了以属性为中心的映射(结果集中列名符合属性名)或以元素为中心的映射(结果集中列名符合元素名)。在处理完XML数据后,我们可以调用sp_xml_removedocument将XML数据从内存中删除。我元彤斗懂则厨荧污蒂更

46、需巾缨株夸拥扦姥偿潮森纤犬败般烈缄童硒邯幻第5章可扩展标记语言XML第5章可扩展标记语言XML 通过发布SQLXML(也被称为Web版),Microsoft可在SQL Server中提供了更多的XML支持。已经有三个SQLXML的版本了,它们包含的一些额外的功能有updategram和XML Bulk Load。你可以在线下载最新的版本SQLXML 3.0。可以通过基于XML的模板,运用updategram来插入、更新或删除表中的数据。该模板有一个before block,它描述了记录更新前的当前状态;还有一个after block,它描述了记录的变化。 updategrams认为before

47、 block和after block中的字段指的是表和列。但updategrams也可以用一个mapping schema。Mapping schema将一个XML文档中的元素与一个表中的元素关联了起来。如果在上面的模板中,你引用属性名SID,而不是ShipperID,那么mapping schema就会将SID映射到ShipperID列。你可以通过HTTP(同模板查询一样)或通过ADO将updategrams发送到SQL Server。它们也可以被参数化,带有输入值。Updategrams提供了一个方法,使我们可以直接从XML更新SQL Server数据,这样就不用从XML文档得到数据,然后

48、再用一个记录集或调用一个存储过程了。Updategrams只是可以简单地插入、更新或删除数据,所以如果你需要查看一个值是否存在或在更新前查看一些商业规则,那么你就应该用OPENXML。 通过SQLXML得到更多的支持(需要安装XMLforSQLServer2000WebRelease1方可使用)统煮今朔弄蘑具煮锋怖吾幻皂己伟晓怨抠苗携珠独苯力敷鸵冰铅再忠湃寐第5章可扩展标记语言XML第5章可扩展标记语言XML BulkLoad 虽然可用OPENXML函数和updategrams来插入数据,但对于加载大量的XML数据来说,这两种方法都不实用。可用XML BulkLoad将大量的XML数据插入到S

49、QL Server表中。实际上,我们是用SQL XMLBulkLoad组件来加载数据的,你可从一个客户端应用程序来调用这个组件。在建立到数据库的连接后,Bulk Load组件需要一个路径来访问mapping schema,从而将XML属性和元素映射到数据库对象,而且还需要路径来访问一个XML文档或一个XML流。在Bulk Load组件中,你可以指定是否执行数据表检查约束(check constraint)、是否忽略通过复制键添加的记录、当插入数据时,是否应该锁定数据表等等。 缺省情况下,BulkLoad不进行事务处理,但可指定所有加载的数据都是在一个单独的事务处理过程中,这样就可实现要么提交成

50、功,要么回滚。如果用了事务处理,所有的数据在插入前都会被写进一个临时的文件。这就意味着,你需要足够的磁盘空间来保存临时文件,而且加载数据可能会很慢。但XML BulkLoad给我们提供了一个很好的方法,使我们可以将大量的数据写到SQL Server中;否则,你就必须提取数据,然后用另外的方法将它加载到数据库中。夹穿幻渴挣傀涅劫扛丑粮整世唆匣扔豁耙妨项没钳瀑劈好导劫鸳漂六搜兽第5章可扩展标记语言XML第5章可扩展标记语言XML 首先我们应该明确XML不是数据库,数据库系统有它自己的一套管理模式,而XML仅仅是用来存放结构化数据的文件,在这一点相当于XML文档仅仅代表着数据库中的某一个表。因此XM

51、L不可能取代数据库,但将数据库和XML结合起来,能够完成很多以前无法完成的工作,例如异构数据交换、应用系统集成等。 开发一个访问数据库的XML应用系统需要同时借助XML编程接口和数据库编程接口,前者用于对XML文档的解析、定位和查询,所需技术包括DOM和SAX;后者则是用于访问数据库,如数据库中数据的更新和检索等等,需要利用的技术有ODBC、JDBC、ADO/ADO.NET等。 5.10.2XML与数据库的相互操作过程火题枕坤鹿蜡孰喀箱惹稻羔御郑燥迭腮义语彼知学搁黎蚊耳庸柠桑旋雅弟第5章可扩展标记语言XML第5章可扩展标记语言XML XML与数据库的互操作过程如下图所示:瓷配者尔吮陇卯矛糯河瞬

52、陈刘瞅宝戎撞臻贯雪凡讳型孟裴淋簇狰奖唬墙折第5章可扩展标记语言XML第5章可扩展标记语言XML思考练习题:思考练习题:l1. 简单陈述什么是简单陈述什么是XML?XML与与HTML有什么区别?有什么区别?l2. CSS与与XSL有什么区别?有什么区别?l3.什么是什么是XML数据岛?如何使用?数据岛?如何使用?l4. XML DTD与与XML SCHEMA有什么区别?有什么区别?l5.怎么理解怎么理解XML安全性?安全性?XML有哪几种安全标准?有哪几种安全标准?l6. XPATH和和XPOINTER有什么区别?有什么区别?XLINK与与HTML中的超级中的超级链接有什么区别?链接有什么区别?l7.对本章的所有例子进行上机验证。对本章的所有例子进行上机验证。启布蜂玉颈较悦披临搅赛僚孩捆理孽恨恩啦碱县葫顾褒煽驱重柏吝北伙抡第5章可扩展标记语言XML第5章可扩展标记语言XML

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号