《第5章可扩展标记语言XML.ppt》由会员分享,可在线阅读,更多相关《第5章可扩展标记语言XML.ppt(50页珍藏版)》请在三一文库上搜索。
1、第5章 可扩展标记语言XML,信息科技学院,学习要点,1XML文档的基本结构 2如何用CSS在浏览器中控制XML文档的显示? 3如何用XSL控制XML文档内容在浏览器中的显示? 4什么是XML数据岛? 5XML DTD和XML Schema的作用是什么? 6了解XML DTD的构成以及如何描述XML文档。 7. 如何通过VS 2005来定义和生成XML Schema文件? 8如何进行XML DOM的程序设计? 9. Xpath、Xpointer、 Xlink在XML中都起什么作用? 9XML文档和数据库系统相互间数据交换。,可扩展标记语言XML,学习XML之前,必须明确XML的特点:XML不是
2、一个语言,它的规则用来构造其他语言;XML创建了用来标记内容的基于标签的语言;XHTML是由XML创建的语言的一种,也是对HTML的重新构造;XML是基于SGML的。 XML技术已成为WEB开发中很重要的一项技术。很多读者可能存在“什么是XML?XML 能做什么?使用 XML 能给我带来什么好处?XML 能不能替代数据库?XML会取代什么?XML的发展前景如何?我如何利用XML来进行程序设计?”等等诸如此类的问题。通过本章的学习我们可从中找到全部答案。,第5章 可扩展标记语言XML,5.1 XML 基础 5.2 XML文档的基本结构 5.3 用CSS在浏览器中控制XML文档的显示 5.4 用X
3、SL控制XML文档内容在浏览器中的显示 5.5 XML数据岛及其应用 5.6 XML DTD及XML Schema 5.7 XML DOM及其编程实例 5.8 XML文档的安全性 5.9 XPATH、XLINK和XPOINTER简介 5.10 XML与数据库,5.1 XML的概念,XML (Extensible Markup Language, 即可扩展标记语言)是W3C推荐 使用的标准,也 是整个Web的基本结构和未来技术发展的基础.但是, 对于什么是XML,业界却说法不一. XML是一种类似于HTML的标记语言 XML是用来描述数据的 XML的标记不是在XML中预定义的,你必须定义自己的标
4、记 XML使用文档类型定义(DTD)或者模式(Schema)来描述数据 XML使用DTD或者Schema后就是自描述的语言,XML的概念,为了让读者能从感性上认识XML,请看一个简单的例子 XML语言及应用 华铨平等 清华大学出版社 200509 其中book、title、author、publisher、publisherdate都是自定义的标记(tags),XML的特点,XML的可扩展性 XML标记的描述性 XML语言的规则性 XML文档的结构化 允许Meta数据(元数据) XML的多样显示性 允许XML DOM操作,XML与HTML的区别,XML与HTML的关系:,5.2 XML文档的基
5、本结构,1 .XML文档的有关术语 XML文档常见的术语主要有六个: Element(元素)和Tag(标识) Attribute(属性) Declaration(声明) DTD( Document Type Definition,文档类型定义) Well-formed XML(良好格式的XML) Valid XML(有效的XML),2 XML文档的基本结构,XML文档是一个纯文本文件,可以用任意的文本编辑器编写,如记事本、Word等。为了提高编写效率,也有一些专门的可视化XML创作及编辑工具,例如美国Altova公司的XMLSpy2006企业版(http:/ Editor(http: / 三国
6、演义 罗贯中 略。 西游记 吴承恩 略。 ,5.3 XML文档的四种CSS样式定义方式,元素名称选择符采用这种定义方式,可以同时为一个或多个元素定义样式,其格式为:XML元素名称 设置的样式规则 例如: Name,company,price,unit,details,.myclass,adderss#a1 Display:block; Font-weight:bold; Font-size:0.8em ,XML文档的四种CSS样式定义方式,用户自定义类选择符通过对类名的引用,不同的元素可使用同一样式,不同位置的同一元素可使用不同的类名。其格式为: .类名称 设置的样式规则 或者 /*可以被XM
7、L文档中的任何元素使用 */ XML元素名称.类名称 设置的样式规则 /*只能附加到指定名称的XML元素上*/ 当将这一方式应用到XML文档时,XML的元素则采用如下书写方式: 用户定义的ID选择符可以先为某元素指定一个ID属性,再在CSS样式定义中通过“元素名#ID”的方式指定样式。其格式为: #ID号 设置的样式规则 或者 /*可以被XML文档中的任何元素使用 */ XML元素名称#ID号 设置的样式规则 /*只能附加到指定名称的XML元素上*/ 当采用这一定义方式时,元素名和ID号中间的“#”不能有任何的空格。在XML文档中的书写则采用如下形式: ,XML文档的四种CSS样式定义方式,成
8、组选择符该定义方式实际上是将前面三种定义方式结合在一起,其格式为: XML元素名称1, XML元素名称2, , XML元素名称n 设置的样式规则 .类名称1, .类名称2, .类名称n 设置的样式规则 #ID号1, #ID号2, #ID号n 设置的样式规则 这种定义方式的好处是可集中定义多个XML文档元素的相同属性,减少了代码编写工作量。,5.3.2 CSS样式和XML文档的联系方式,将定义的CSS样式表置于XML文档中,其格式为: 第2行不可缺少,告诉浏览器要用CSS来显示XML文档。第3行在根元素中定义了一个HTML名称空间,这里必须是HTML名称空间,名称空间的URI地址可以随意,即使是
9、“abcd“也行,但要注意它的唯一性。在XML文档中插入样式单的style标志前,必须加上HTML名称空间。,CSS样式和XML文档的联系方式,将CSS样式表放在单独的扩展名为CSS的文件中,然后在XML文档声明部分通过声明语句引用CSS文件。其格式为: 既在XML文档中定义CSS样式,又引用外部CSS文件。,5.4 XSL概述 XSL的提出,XSL的含义及其作用 XSL(eXtensible Stylesheet Languge, 可扩展样式单语言)是由W3C1999年11月制定的。XSL自提出以来争议颇多,前后经过了几番大的修改。2007年1月 W3C 发布了修改后的XSLT 2.0 版本
10、(http:/www.w3.org/TR/xslt20/)。它仍然在进一步修改完善中。 XSL能将XML文档转换成一个新的文档(包括HTML文档),通过浏览器或其他应用程序就可以显示出来。 CSS的不足 CSS通过创建XML元素的样式单来格式化XML文档,并且将其显示出来,但这种显示则是依赖于已经成型的文档结构。当需要先对文档结构进行更高级的操作,如将文档的元素按照某种顺序排列后,再将其显示出来时,CSS就显得无能为力了。同时,W3C制定CSS标准时也不是基于XML考虑的,而是基于HTML来实施的。简单的XML文档可以通过CSS来转换输出,然而复杂的、高度结构化的XML文档则只能依赖于XSL极
11、强的格式化能力展现给用户。,XSL概述 XSL与CSS的异同,XSL与CSS在很多功能上是重复的,但是它比CSS功能强大,不过XSL的强大功能与其复杂性是分不开的。 CSS只允许格式化元素内容,不允许改变或安排这些内容。但是XSL没有这些限制,它可以提取元素、属性值、注释文本等几乎所有的文档内容。在XML领域,用XSL来格式化文档是未来发展的方向。 CSS是一种静态的样式描述格式,其本身不遵从XML的语法规范。而XSL不同,它是通过XML进行定义的,遵守XML的语法规则,是XML的一种具体应用。也即XSL本身就是一个XML文档,系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行
12、解释处理。,5.4.2 XSL模板元素,以下面的指令作为文档开头(其中还可以包含其他属性,字符集也有许多选项) 通过“xsl:stylesheet xmlns:xsl”来声明XSL名称空间。为使用新版本XSLT,应将“http:/www.w3.org/TR/WD-xsl”名称空间换成http:/www.w3.org/1999/XSL/Transform。特别注意,采用不同的名称空间在浏览器中显示的结果可能会不一样。 通过“xsl:template”定义模板来描述XML文档的显示格式。这是XSL的主要部分。 通过XML数据的引用指明显示的数据。 其中包含了大量XHTML语句的各种标记,标记必须配
13、对。 通过xsl:for-each、xsl:if、xsl:choose等语句进行数据的循环处理、条件处理、选择处理等工作。 可以嵌入JavaScript或VBScript脚本语句或程序,使XSL具有更强大的运算功能。,5.5 XML数据岛及其运用,所谓XML数据岛就是在HTML页面文档中采用HTML中的专门标签“”定义的一块数据。可用HTML标记的属性datasrc指定XML数据源的ID,用datafld属性绑定XML数据源中的节点元素名称来获取数据。 XML数据岛在HTML页面中使用有两种方式,即内嵌式和连接式。 内嵌式 内嵌式就是直接将XML文档的片段数据插入“”和“”之间,语法 形式如下
14、: 元素列表 连接式 连接式则是将整个外部的XML文档导入到HTML页面中,其语法形式如下: XML数据岛的应用更多的是与XML DOM结合使用,读者可在学完DOM部分后强化这方面的应用。,5.6 XML DTD及XML Schema,5.6.1 XML DTD 在数据库中,数据表用来存放数据,数据表的结构定义(包括主键、外键、列名、列的数据类型和长度、列之间的约束关系等)保存在数据库系统中。如果把XML文档看成数据表,那么我们还需要一种文件来定义XML文档中数据的结构类型及其相互关系等。这就是W3C早期推出的XML DTD(XML Document Type Definition,即XML文
15、档类型定义)的神圣使命。 DTD文件本身不是用XML标记元素来组织的,其描述文档类型的方式过于复杂。在DTD中只有一个数据类型,就是用在元素中PCDATA和用在属性中的CDATA,在里面写日期也行,数字还行,字符更是没问题。 DTD用来定义了XML文档中可以使用的元素符号、元素的属性、元素的排列方式/顺序、元素能够包含的内容、可使用的实体或符号规则等。一个XML文档可以用多个不同的DTD来进行描述。 在XML文档中使用DTD有两种方式:可以在XML文档中直接设置(内部DTD),也可以保存为一个完全独立的文件中(外部DTD)。此外也可两者兼而有之。,XSD文档的定义,模式是用来描述XML文档的内
16、容和结构,同时在运行XML文档时也是解析器验证XML文档有效性的依据。在使用模式时,常使用两种文档模型,即实例文档(也就是我们通常所说的XML文档)和模式文档(扩展名为XSD)。 为了能够让读者从感性上了解XSD,请先看一个简单的例子.。 实例文档如下:,5.7 XML DOM与SAX简介,XML DOM简介 XML DOM是W3C提出的针对XML的文档对象模型,它独立于平台和语言,定义了一套标准的用于XML的对象和一种标准的访问与处理XML文档的方法。 对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。 DOM接口中的XML分析器,在对X
17、ML文档进行分析之后,不管这个文档有多简单或者多复杂,其中的信息都会被转化成一棵对象节点树DOM树,也即DOM将XML文档作为树结构来看待。 根据DOM,XML文档中的每个成分都是一个节点. DOM把XML文件当作一种树形结构。 DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。,XML DOM与SAX简介, 下面通过一个文档来了解DOM的结构。,XML DOM与SAX简介, 对应的DOM节点树,XML DOM与SAX简介,SAX简介 从前面的介绍,XML DOM采用的是推模型,即一次性装入后才能操作。与XML DOM不同,SAX提供的访问
18、模式是一种顺序模式,这是一种快速读写XML数据的方式。这种模式通常称为拉模型。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。 SAX分析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理。SAX之所以被叫做简单应用程序接口,是因为SAX分析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。也就是说,SAX分析器在实现时,它只是顺序地检查XML文档中的字节
19、流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。同DOM分析器相比,SAX分析器缺乏灵活性。然而,由于SAX分析器实现简单,对内存要求比较低,实现效率比较高,对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。 总结 XML DOM和SAX接口实现过程中分别侧重于不同的方面,二者各有长短,分别满足了不同的应用需求。无论是DOM接口还是SAX接口,都各有其优缺点。也正是如此,它们将长期并存下去,在不同的应用中发挥不同的作用。,5.8 XML文档的安全性,XML文档作为ASCII
20、文件,已成为Internet上的信息交换格式,而与信息交换有关的一个重要问题是安全。XML文档安全包括 1)机密性。用于保证只有预期的接收者阅读 XML 中预期的部分。要保证机密性,重要的是加密 XML。XML Encryption 是加密 XML 的标准。 2)完整性。用于保证XML在从源到最终目的地的传输过程中不会被改变。XML Signature 标准允许发送者在要保证完整性的内容后面附加数字签名。 3)真实性。用于保证XML确实是由声明发送它的人发送的。随内容一起发送的 XML 签名可以帮助确保发送者的身份。有效载明的接收者可以使用发送者的公开密钥验证数字签名。如果数字签名是有效的,身
21、份就得到了确认,否则就不能确认。 4)抗否认性。用于保证发送者不能否认发送了XML。由发送者的私钥生成的附在 XML 上的 XML 签名保证了发送者的不可否认性。,1XML加密(Xenc),除了在传送XML文件时采用标准进行加密,W3C和IETF还制定了一项标准来对一个XML文档中的数据和部分内容进行加密。这样,如果一个文档只是某些敏感部分需要进行保护,你就可对它们单独进行加密。对于同一个文档中的不同部分用不同的密钥进行加密,你就可以把同一个XML文件发给不同的接受者,而接受者只能看见和它相关的部分。一旦采用这个方法对一个XML文件进行加密,在加密部分的首尾就会出现两个标记,表示该文件是以W3
22、C公布的标准进行加密的。真实的标识名被替代;数据本身显示为一连串的密码。这个标准使XML数据提供者可以根据用户的不同对内容进行颗粒化的控制。而且由于只加密重要敏感数据而不加密整个文件,整个文件仍可以被XML处理器识别和处理。,2。XML签名(XML-SIG),XML签名和XML加密紧密相关。和安全认证签名相似,XML也是用于确保XML文件内容没有被篡改。为了适应各种文件系统和处理器在版式上的不同,XML签名采用了标准化模式。这就使得XML签名可以适应XML文件可能遇到的各种环境。 当对内容进行签名时,标准化模式使用文件里的数据和标识产生一个独一无二的签名,忽略了一些诸如段落结束或者制表符之类的
23、次要信息。收到一个文件后,客户系统就开始进行“XML签名解密转换”,它通过辨认信息是在标识前还是标识后来区分内容和签名:内容在标识后,而签名在标识前。通过比较运算结果和文件中的签名,可以确认数据的完整性。 XML签名和XML加密结合在一起,可以确保数据发送和接收的一致性。,3.XML安全相关开发工具,除了采用加密算法外,可以借助一些相关安全工具来确保XML文档的安全性。 1)Apache security提供了一个免费的符合W3C的XML加密标准的JAVA实施工具。 2)IBM XML Security Suite包括三种XML安全工具:认证、数据加密、XML访问控制。3)XML securi
24、ty library 是一个免费的XML安全工具,用于C程序员。 4)商业工具如 KeyTools和JCSI等,为XML文档提供安全性。 5)可利用微软.NET的System.Security.Cryptography.Xml命名空间所提供的EncryptedXml和SignedXml类直接对XML文档进行加密或签名(需添加引用System.Xml命名空间)。有兴趣的读者可参阅http:/ system.security.cryptography.xml(VS.80).aspx网站。,5.9 XPath,XPath的提出 当我们采用XSL转换XML文档时需要处理其中的一部分数据,那么应该如何查
25、找和定位XML文档中的信息呢,也就是说在模板声明语句xsl:template match = “和模板应用语句xsl:apply-templates select = “中怎样确定这两个引号中的内容,使得我们能够精确地找到需要的节点?XPath就是一种专门用来在XML文档中查找信息的语言,换言之,如果将XML文档看作一个数据库,则XPath就是SQL查询语言。 XPath的种类 在XML文档中每个元素都有一个对应的元素节点。一个元素节点可以包含其他的元素节点、注释节点、处理指令节点与文字节点等。每一个元素节点都有一个相关的名称空间节点集。在XML文档中,名称空间是通过保留属性声明的,因此,在X
26、Path中,该类节点与属性节点极为相似,它们与父元素之间的关系是单向的,并且不具有共享性。文本节点包含了一组字符数据,即CDATA中包含的字符。任何一个文本节点都不会有紧邻的兄弟文本节点,而且文本节点没有扩展名,只能在整体上对文本节点进行操作。,XPath, XPath的数据类型中包括七种可能的节点形式:根(root)、元素(element)、属性(attribute)、名称空间(namespace)、处理指令(processing instruction)、注释(comment)和文字(text)。对应于XML文档的各种元素,无论需要什么类型的元素,只要在XSLT中正确运用这些类型,就可以查
27、找或者转换相应的元素。 XPath轴线 所谓XPath轴线是相对于目前节点而言,上下文节点之间的关系 。XPath轴线定义了多种形式的节点轴线 ,如下所示:,XPath,基本的XPath表达式及其缩写形式,XPath,XPath函数 XPath函数(又称谓词表达式)主要分为四组,即节点集型、字符串型、数值型和布尔型。 节点集类型 所谓节点集就是节点的集合。在XSL中,一个表达式返回的结果往往是一系列的节点。要从节点集中选择一个或多个节点时,就需要使用如下关于节点集的函数:,XPath, 字符串类型 在XPath中,字符串使用的是Unicode字符,为了能方便地操作字符串, XPath提供了大量
28、的字符串函数,如下所示。,XPath, 数值类型,XPath, 布尔类型 布尔值只可能为两个值,即true或false。在XSL中,可以将任何类型的数据转变成 布尔值,转换一般按下面的规则进行: 如果数值为零则布尔值为false,其余的为true; 空节点集为false,反之为true; 长度为零的字符串布尔值为false,其余的为true。 XPath为我们提供了以下布尔型函数。,XPath, 简单例子 Xml文档如下: green blue1 blue2 red1 red2 green ,XPath,使用的XSL文件如下:,5.9.2 XLink,Xlink可用来解决XML文档之间的链接问
29、题。可以这样来理解:一个XML文档非常大,将它拆分成为多个XML文档,分散放在Web上不同的网络位置,我们又如何处理这种情况?先看一看下面这个例子。 As his fifth year at Hogwarts School of Witchcraft and Wizardry approaches, 15-year-old Harry Potter is. XQuery Kick Start delivers a concise introduction to the XQuery standard. ,XLink,在进行XLink设计前必须先声明一个名称空间。XLink的名称空间通常采用如下
30、的URI定义:xmlns:xlink=“http:/www.w3.org/1999/xlink”。定义好名称空间后,就可以开始着手设计XLink了。XLink包含了许多属性,常用的属性如下所示。,5.9.3 XPointer,XPointer用于在资源内定位片断(fragement),它支持在XML文档中定位元素、属性、字符串等内部结构。例如,我们可以定位到根元素或者当前元素的第5个子元素,也可以定位到文档中的某一个位置或两个位置之间的区域。 Xpointer采用基于XSL转换中的XPath语言,并在其基础上进行了扩展。Xpointer不再使用xpath中的节点这个概念,而改用位置(locat
31、ion),每一个位置可以是节点、点(point)或范围(range)。点就是XML文件内的某个位置,而范围则是两个点之间的所有文档内容。 Xpath只能定位一个节点,而Xpointer除了定位一个节点外,还可定位点和范围;通过字符串匹配定位资源片段;在URI引用中定位资源片断。 例如: http:/ 表示在URI引用中定位资源片断。通过这种方式,可以在某个网站中引用另一个网站的某城市的天气预报,而不需要访问那个网站的关于天气预报的数据库。又如: xlink:href=http:/.org/dogbreeds.xml#Xpointer(id(Rottweiler) 通过xlink精确定位到ogb
32、reeds.xml文档中的“Rottweiler“的ID值。,XPointer,Xpointer中的范围是由起始点和结束点定义的,形式如下: #Xpointer(to) 例如: #Xpointer(/dir1/text()/start-point()position()=1 to /dir1/text()/ start-point()position()=5) XPointer提供的语法则是通过一系列扩展函数来实现的。XPointer的扩展函数如下所示。,5.10 XML与数据库,概述 随着XML的广泛应用,各大数据库公司都将自己的产品重新设计,使之能够最大限度地支持XML,如DB2、Syba
33、se、Oracle、Informix数据库以及由The Connection Factory 开发的XHive、由ozone-db.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的产品
34、。,5.10.1 SQL Server 对XML的支持, 使用SELECT语句中的FOR XML子句检索XML数据 select * from Northwind.dbo.customers for xml auto 在一个SELECT语句中运用FOR XML子句,它有三种模式可以以不同的格式来返回XML:RAW、AUTO和EXPLICIT。RAW模式将结果中的每个记录作为一个普通的行元素来返回,它被包含在一个标签中,并将每个列的值作为一个属性。AUTO模式将每个记录作为行元素返回,根据源表或视图对它进行命名。如果查询从一个表返回多个列,那么每个列的值就会被作为表元素的属性来返回。但如果SEL
35、ECT语句执行了合并操作,那么AUTO模式就代表的是子行,它们作为元素嵌套在父行下。EXPLICIT模式有几个参数,可以通过这些参数来定义返回的XML的样式。可以为每个元素定义标签,明确确定数据是如何嵌套的。FOR XML语句使我们不必再返回一个行记录集,再在客户端或中间层将它转换成XML了。, OPENXML OPENXML函数可以让你象操作一个表那样来运用XML数据,可以将它们转换成内存中的一个行记录集。要运用OPENXML,首先要调用sp_xml_preparedocument存储过程,实际上,它将XML解析成一个数据树,并将那个数据的句柄传递到OPENXML函数。然后就可操作那个数据了
36、,可以进行查询、将它插入到表中等操作。OPENXML函数带三个参数:用于XML文档内部显示的句柄、一个rowpattern参数和一个flags参数。 Rowpattern参数指定了应该返回原始的XML文档中的哪些节点。Flags参数指定了以属性为中心的映射(结果集中列名符合属性名)或以元素为中心的映射(结果集中列名符合元素名)。在处理完XML数据后,我们可以调用sp_xml_removedocument将XML数据从内存中删除。,通过发布SQLXML(也被称为Web版),Microsoft可在SQL Server中提供了更多的XML支持。已经有三个SQLXML的版本了,它们包含的一些额外的功能
37、有updategram和XML Bulk Load。你可以在线下载最新的版本SQLXML 3.0。可以通过基于XML的模板,运用updategram来插入、更新或删除表中的数据。该模板有一个before block,它描述了记录更新前的当前状态;还有一个after block,它描述了记录的变化。 updategrams认为before block和after block中的字段指的是表和列。但updategrams也可以用一个mapping schema。Mapping schema将一个XML文档中的元素与一个表中的元素关联了起来。如果在上面的模板中,你引用属性名SID,而不是Shippe
38、rID,那么mapping schema就会将SID映射到ShipperID列。你可以通过HTTP(同模板查询一样)或通过ADO将updategrams发送到SQL Server。它们也可以被参数化,带有输入值。Updategrams提供了一个方法,使我们可以直接从XML更新SQL Server数据,这样就不用从XML文档得到数据,然后再用一个记录集或调用一个存储过程了。Updategrams只是可以简单地插入、更新或删除数据,所以如果你需要查看一个值是否存在或在更新前查看一些商业规则,那么你就应该用OPENXML。, 通过SQLXML得到更多的支持(需要安装XML for SQL Serve
39、r 2000 Web Release1方可使用), BulkLoad 虽然可用OPENXML函数和updategrams来插入数据,但对于加载大量的XML数据来说,这两种方法都不实用。可用XML BulkLoad将大量的XML数据插入到SQL Server表中。实际上,我们是用SQL XMLBulkLoad组件来加载数据的,你可从一个客户端应用程序来调用这个组件。在建立到数据库的连接后,Bulk Load组件需要一个路径来访问mapping schema,从而将XML属性和元素映射到数据库对象,而且还需要路径来访问一个XML文档或一个XML流。在Bulk Load组件中,你可以指定是否执行数据
40、表检查约束(check constraint)、是否忽略通过复制键添加的记录、当插入数据时,是否应该锁定数据表等等。 缺省情况下,BulkLoad不进行事务处理,但可指定所有加载的数据都是在一个单独的事务处理过程中,这样就可实现要么提交成功,要么回滚。如果用了事务处理,所有的数据在插入前都会被写进一个临时的文件。这就意味着,你需要足够的磁盘空间来保存临时文件,而且加载数据可能会很慢。但XML BulkLoad给我们提供了一个很好的方法,使我们可以将大量的数据写到SQL Server中;否则,你就必须提取数据,然后用另外的方法将它加载到数据库中。, 首先我们应该明确XML不是数据库,数据库系统有
41、它自己的一套管理模式,而XML仅仅是用来存放结构化数据的文件,在这一点相当于XML文档仅仅代表着数据库中的某一个表。因此XML不可能取代数据库,但将数据库和XML结合起来,能够完成很多以前无法完成的工作,例如异构数据交换、应用系统集成等。 开发一个访问数据库的XML应用系统需要同时借助XML编程接口和数据库编程接口,前者用于对XML文档的解析、定位和查询,所需技术包括DOM和SAX;后者则是用于访问数据库,如数据库中数据的更新和检索等等,需要利用的技术有ODBC、JDBC、ADO/ADO.NET等。,5.10.2 XML与数据库的相互操作过程, XML与数据库的互操作过程如下图所示:,思考练习题:,1. 简单陈述什么是XML?XML与HTML有什么区别? 2. CSS与XSL有什么区别? 3. 什么是XML数据岛?如何使用? 4. XML DTD与XML SCHEMA有什么区别? 5. 怎么理解XML安全性?XML有哪几种安全标准? 6. XPATH和XPOINTER有什么区别?XLINK与HTML中的超级链接有什么区别? 7. 对本章的所有例子进行上机验证。,
链接地址:https://www.31doc.com/p-2577920.html