Presentation is loading. Please wait.

Presentation is loading. Please wait.

第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作

Similar presentations


Presentation on theme: "第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作"— Presentation transcript:

1 第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作
10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作 10.5 XML数据转换为数据库 10.6 XML数据库

2 10.1 概述 XML的数据交换技术,除了CSS、XSLT外,还有数据岛和数据源技术。数据岛和数据源技术是以HTML作为载体显示XML数据文件的另外一种技术。 把XML数据文件嵌入HTML文本中,作为提供数据的模块,借助HTML可以方便地在浏览器上浏览这个XML数据文件。 把XML转换成传统数据库,或把传统数据库的表转换成XML数据,需要用到ASP (Active Server Pages)技术和ADO(ActiveX Data Object)技术。

3 10.1 概述 在XML技术出现之后,各种传统数据库相继推出了自己的支持XML的解决方案来实现传统数据库与XML之间的转换。
本章将分别详细讨论上述问题。

4 10.2 数据岛 基本概念 在HTML中通过在元素<xml></xml>内包含XML文档。XML文档可以是内嵌式文档,也可以是外部文档。使得XML文档像一个用HTML承载的小船一样,因而叫做数据岛。要在HTML文档中加载XML文档,使用<xml>来实现。<xml>元素的语法格式为: <xml id=”” src=””></xml> 当<xml>元素中只定义了id属性值时,称XML文档为内嵌式文档。当<xml>元素中只定义了id属性值和src属性值,称XML文档为外部文档,此时src的值一定是外部XML文档的URL。

5 简单XML文档的处理 根元素下只有二层元素结构,与简单表格对应的XML文档称为简单XML文档。例如下面的文档(ch10-1.xml)中根元素files下有若干个file,file下有四个子元素,子元素没有下级子元素: <?xml version="1.0"?> <files> <file> <name>XML Design</name> <type>Word Document</type> <date> </date> <size>73kb</size> </file>

6 10.2.2 简单XML文档的处理 <file> <name>ASP Design</name>
<type>Word Document</type> <date> </date> <size>680kb</size> </file> <name>2005 Test Scores</name> <type>Excel Document</type> <date> </date> <size>65kb</size> </files>

7 10.2.2 简单XML文档的处理 此时,使用内嵌式数据岛的形式如下: <html> …… <body>
<xml id="files"> <?xml version="1.0"?> <files> </files> </xml> </body> </html>

8 10.2.2 简单XML文档的处理 这种形式使HTML文档显得十分臃肿,可读性下降。最好采用调用外部文档的数据岛形式来加载XML文档。
…… <body> <xml id="files" src="ch10-1.xml"></xml> </body> </html> 其中src的值是一个XML文档。这种形式的<xml>叫做外部文档的数据岛。

9 简单XML文档的处理 为了把数据岛的XML文档显示在浏览器上,需要在HTML文档中设计数据显示的模块。此时可以使用表格(table)元素来显示数据。 <table border="1" datasrc="#files"> <tr> <td><div datafld="name"></td> <td><div datafld="type"></td> <td><div datafld="date"></td> <td><div datafld="size"></td> </tr> </table> 引用数据岛时,使用了table元素的datasrc属性绑定数据源,该属性通过<xml>元素中的id属性值来加载数据岛中

10 简单XML文档的处理 的数据。如datasrc=“#files”。然后使用div或span元素d的datafld属性用于绑定数据源中的元素,datafld的值是需要显示的元素名称,如datafld=“type”。 例10.1 用数据岛形式加载例7.10的XML文档,并显示。 完善上述讨论,增加显示数据的表格,并为美化数据显示效果设计了简单的CSS,其完整的程序参考P.311。其效果如下: 图10.1 HTML加载XML数据岛的显示结果

11 多级XML文档的处理 当元素多级嵌套时,如何显示数据?如例1.2的XML文档(ch10-2.xml),在student的子元素score下还有一级子元素,此时的文档树结构如图10.2所示。 图10.2 例1.2的XML文档树型结构图 name sex score major mathematics programming circuit student ………… id

12 多级XML文档的处理 因为score下嵌套子元素,所以在表示student的子元素score时,需要在表示score单元格中嵌套一个表格table来实现,并在table中使用datafld="score"引用score元素,方法如下: <table border="1" datasrc="#students" datafld="score"> <tr> <td width="70"><div datafld="mathematics"></tr> <td width="70"><div datafld="programming"></tr> <td width="70"><div datafld="circuit"></tr> </tr> </table> 然后把此表格嵌套在表示score元素的单元格<td></td>中。

13 10.2.3 多级XML文档的处理 例10.2 用数据岛形式加载例1.2的XML文档。
这是一个根元素下面有三级子元素的多级结构的XML文档,使用上面的讨论,可以实现嵌套元素的显示。程序参考P.314。效果如下图: 图10.3 HTML加载嵌套XML数据岛的显示结果

14 10.3 数据源对象 基本概念 数据源对象(Data Source Object,DSO)是在HTML文件中加载结构化数据的一种对象。数据源对象必须创建实例方能使用。常用的数据源对象有表格式数据控制(Tabular Data Control),远程数据服务和XML数据源。不同类型的数据格式,有不同类型的DSO,不同类型的DSO有不同的数据处理方式。此处,我们讨论用XML DSO来处理XML数据的问题。

15 10.3.2 处理数据源对象 建立数据源对象的方法使用HTML的元素<object>,<object>的形式如下:
<object data=URL classid=URI id=identification……> </object> 下面是通过<object>元素创建的XML DSO实例: <object width="0" height="0" classid="clsid:550dda d2-9ca9-0060b0ec3d39" id="xmldso"> 其中,classid值不能写错,id值是需要建立实例的DSO对象。这个<object>元素创建的XML DSO可以用下列脚本来处理:

16 10.3.2 处理数据源对象 通过XML DSO对象xmldso的方法XMLDocument来创建XML DOM对象xmlDoc。
<script for="window" event="onload"> var xmlDoc=xmldso.XMLDocument; xmlDoc.async="false"; xmlDoc.load("……"); if(xmlDoc.parseError !=0) //显示错误信息 document.write(xmlDom.parseError.reason); else {//显示成功信息 处理语句 } </script> 通过XML DSO对象xmldso的方法XMLDocument来创建XML DOM对象xmlDoc。

17 10.3.2 处理数据源对象 例10.3 使用XML DSO处理XML文档。 程序参考P316。效果如下图:

18 10.4 数据集操作 数据集的概念与操作 作为一个文件形式保存在计算机系统中的XML文档,使用DSO来操作它们时,类似于操作传统关系数据库。统关系数据库。在一个关系数据库实例中,数据的组织使用若干个表格来管理数据。每个表格可以看成是一个二维表,表的每一列叫做数据项或字段,表格的一个行称为一条记录,一个表格包含若干字段和若干行。若干行的集合称为记录集(recordset)。 结构化XML数据可以与一张表格对应,相应地,每一列是一个元素,每一行被认为是一条记录,包含若干个元素。如表1-1所示,就是一张普通的表格。这样,处理XML数据的方法可以使用结构化数据操纵方式处理。

19 数据集的概念与操作 在操作XML文档数据时,DSO允许从一行数据移动到下一行数据,添加、删除、修改数据记录等,这些操作使用recordset来实现。表10.1是recordset对象的属性和方法。 为了讨论方便,假定XML数据源的名称是mydatas,下面讨论对该对象的操作。 1、移动指针 移动记录指针到第18条记录: mydatas.recordset.move(18) 移动记录指针到第一条记录: mydatas.recordset.moveFirst

20 10.4.1 数据集的概念与操作 表10.1 recordset对象的属性和方法 属性 操作 AddNew 在文件尾部加入一条新记录。
bof() 记录集的逻辑顶,当指针指向记录集的逻辑顶时,该属性为真。否则为假。 delete 删除当前记录。 eof() 记录集的逻辑底,当指针指向记录集的逻辑底时,该属性为真。否则为假。 Move(n) 把记录指针移动到第n条记录。 MoveFirst 记录指针指向第一条记录。 MoveLast 记录指针指向最后一条记录。 MovePrevious 记录指针指向前一条记录。 MoveNext 记录指针指向下一条记录。 Field() 表示字段的属性。

21 10.4.1 数据集的概念与操作 移动记录指针到最后一条记录: 移动记录指针到前一条记录: 移动记录指针到下一条记录: 2、添加记录
mydatas.recordset.moveLast 移动记录指针到前一条记录: mydatas.recordset.movePrevious 移动记录指针到下一条记录: mydatas.recordset.moveNext 2、添加记录 在记录集中增加一条记录: mydatas.recordset.AddNew

22 10.4.1 数据集的概念与操作 4、修改记录 在记录集中修改数据,要使用field()属性指定某个字段。使用下面的语法可以修改一个字段:
mydatas.recordset.field(“num”)=” ” 5、循环操作 当需要操作整个记录集时,必须让记录指针遍历所有的记录,此时使用循环控制,可以方便地解决问题。使用VBScript和JavaScript的语法如下: do while not mydatas.recordset.eof …… mydatas.recordset.moveNext loop

23 10.4.1 数据集的概念与操作 使用JavaScript的语法如下:
while(!mydatas.recordset.eof) { …… mydatas.recordset.moveNext; } 例10.4 以例7.1的XML文档为例讨论,使用数据源转换XML文档。用于转换的的HTML文件参考P.319。效果如下图。 图10.5 例10.4的显示效果

24 10.4.2 移动指针 设置四个按钮,分别是“第一条”、“最后一条”、“上一条”、“下一条”,并把属性onclick设置成相应的移动操作:
移动指针 设置四个按钮,分别是“第一条”、“最后一条”、“上一条”、“下一条”,并把属性onclick设置成相应的移动操作: <input type="button" value="第一条" onclick="shirt.recordset.movefirst"> <input type="button" value="最后一条" onclick=" shirt.recordset.movelast"> <input type="button" value="上一条" onclick=" shirt.recordset.moveprevious"> <input type="button" value="下一条" onclick=" shirt.recordset.movenext"> 例10.5 在例10.4的基础上增加按钮。 程序参考P.320 效果如下图。

25 移动指针 图10.6 例10.5的显示效果

26 移动指针 在例10.5的文件中,可以在记录中移动指针。但是当指针到达末尾时,再单击“下一条”会出现空白。这是因为指针到达尾部时,已经没有记录了,所以会出现空白记录。另外,当指针位于第一行时,单击“上一条”也会出现空白,是因为第一条记录之前已经没有记录。使用数据集的eof和bof,可以解决这个问题。 为了把事件与操作联系起来,在例10.5的input中加入name属性定义按钮名称: <input … name="first" value="第一条…> <input … name="last" value="最后一条" …> <input … name="pre" value="上一条" …> <input … name="next" value="下一条" …>

27 10.4.2 移动指针 然后在事件onclick中引用这些按钮,并进行简单编程:
移动指针 然后在事件onclick中引用这些按钮,并进行简单编程: <script language="VBScript"> sub pre_onclick() if shirt.recordset.bof then shirt.recordset.moveLast end if end sub sub next_onclick() if shirt.recordset.eof then shirt.recordset.moveFirst </script> 修改后的HTML文件参考P.321~322。

28 ASP对象 1、简介 ASP(Active Server Pages)是一套微软开发的服务器端脚本编写环境,包含在基于Windows NT(Windows 2000/2003/2007 Server)的IIS(Internet Information Server)内。通过ASP可以结合HTML页、脚本语言源程序、ActiveX控件建立动态的、交互的、高效的Web服务器应用程序。 ASP应用程序以.asp作为文件的扩展名。浏览器从服务器上请求.asp文件时,ASP脚本开始运行。然后Web服务器调用ASP,ASP读取请求的文件,执行脚本命令,由脚本解释器

29 10.4.3 ASP对象 (即脚本引擎)进行翻译并将其转换成服务器能够执行的命令,然后,将执行的结果以标准的HTML形式传送给浏览器。
1)、使用脚本语言编程。常用的脚本语言有VBScript、JavaScript、Perl等等。 2)、当使用Windows NT作为服务器并在其上运行IIS时,就自动拥有了ASP的运行环境。对于不具备Windows NT环境的一般单机用户,可以在Windows 98下安装PWS(Personal Web Server),在PWS下运行ASP。也可以在自己的XP环境中加载IIS模块。

30 ASP对象 3)、使用内置ADO(ActiveX Data Object)组件, 与SQL Server、Microsoft Access等数据库进行连接。这为 ASP的数据库应用提供了方便,使得ASP成为Internet上开发数据库应用的较理想的工具之一。 4)、ASP使用内置对象组件,处理来自客户浏览器的Form提供的数据。这些对象组件是:Request、Response、Application、Session、Server、FileSystemObject、TextStream。

31 ASP对象 2、ASP对象 1)Request对象 Request对象用于支持ASP收集Internet客户的请求信息。Request对象用来接收来自HTML页面提交的数据,这些数据以表单形式(form)向服务器发送,服务器端程序通过该对象来获取这些数据。 下面的HTML就是这样的表单。在form中使用了Method = “post”来发送表单内容到“login.asp”。 <form Method="post" Action="login.asp"> <p>输入姓名:<input name="username" type="text"></p> <p>所在公司:<input name="usercompany“type="text"></p> <p><input type="submit" value=" 确认注册 "></p> </form>

32 10.4.3 ASP对象 用于接收此表单信息的ASP代码(login.asp)为:
例10.6 接收注册信息的ASP文档,使用了request对象。 <html> <head><title>login_thanks</title></head> <body> <br> Welcome <%=Request.form("username")%> come here! <br> How about <%=Request.form("usercompany ")%>? </body> </html> 这段ASP代码使用Request对象的属性form来接收来自客户端HTML的表单信息,信息的接收通过变量username和usercompany 来传递。

33 ASP对象 2)Response对象 在ASP中如何将服务器端对用户提交的查询,要求提供的服务返回给用户?Response对象可以解决这一问题。Response将服务器端的数据以HTML文本的格式发送到客户的浏览器,客户浏览器可以直接将从服务器端返回的数据以网页的形式显示出来。这样,就使得客户和服务器之间的动态数据交互成为可能,使动态网页的设计成为可能。 Response与Request共同构成了ASP中Client/ Server(客户/服务器)模式的基础,使得在Internet环境中进行动态数据交互的设计变得轻松愉快。

34 10.4.3 ASP对象 例10.7 用Response对象重写上面的login.asp。
<html> <head><title>login_thanks</title></head> <body> <% Response.write "Welcome" &Request.form("username")& "come here!" Response.write " How about " &Request.form("usercompany") & "?“ %> </body> </html> Response对象的write方法可以实现把服务器接收到然后通过处理的信息反馈给客户端浏览器。

35 ASP对象 3)Server 对象 Server是ASP中提供服务器端服务功能的内置对象。用来设置HTML代码,映射文件,建立对象。Server对象的常用方法是CreateObject方法。 CreateObject方法用于创建已注册到服务器上的ActiveX的对象。这是一个非常重要的方法,因为通过使用ActiveX组件能够扩展ActiveX的能力。在ASP文件中,用如下的方法把创建的对象赋给一个变量conn: <% set conn=Server.CreateObject(“ADODB.connection”) %>

36 10.4.3 ASP对象 4)FileSystemObject
Set FileVar=Server.CreateObject(“scripting.FileSystemObject”) 这个对象可以在服务器端对文件和文件夹进行创建、打开、复制、移动、删除等操作。具体如下: CreateTextFile()——创建文件。 OpenTextFile()——打开文件。 DeleteFile()——删除文件。 CopyFile()——复制文件。

37 10.4.3 ASP对象 其中,OpenTextFile()的格式:
MoveFile()——移动文件。 FileExists()——返回一个布尔值。 其中,OpenTextFile()的格式: OpenTextFile(filename,mode,create,format) filename是需要打开的文件名称。mode取值分别是1、2、8,1代表只读,2表示改写, 8表示追加。Create是一个逻辑参数,它为真时,如果文件不存在,就会创建一个新的文件。Format指定使用的格式化信息:0表示以ASCII码打开文件;-1表示以unicode格式打开文件,-2以默认格式打开文件。

38 ASP对象 5)TextStream TextStream对象是FileSystemObject对象的对象属性,当使用CreateTextFile或openTextFile()方法时,将返回该类型的变量值。例如: Dim FileObject Dim TxtStream Set FileObject= server.createObject(“scripting. FileSystemObject”) Set TxtStream= FileObject.openTextFile(“ch6-21.xml”) TxtStream是一个TextStream对象的变量,把openTextFile(ch6-21.xml)获得的内容赋值给它. TextStream对象有如下的方法进行操作:

39 ASP对象 ReadAll——把文件内容全部作为一个字符串读入. WriteLine——在文件末尾追加以参数传入的一行字符串,然后加上回车符。 Write——在文件末尾写入参数传入的字符串。 Close——关闭文件 3、操作文本文件 使用FileSystemObject对象和TextStream对象,可以实现对文档的操作。下面是一个关于软磁盘的文本文件,文件名为disk.txt,内容如下: 3M,diskette,3.5inch,5.00 Maxell,diskette,3.5inch,6.00

40 10.4.3 ASP对象 通过FileSystemObject对象和TextStream对象来访问该文本文件。
Philips,diskette,3.5inch,5.50 Konica,diskette,3.5inch,5.00 Sony,diskette,3.5inch,5.00 通过FileSystemObject对象和TextStream对象来访问该文本文件。 首先建立一个FileSystemObject对象: set FSO=Server.CreateObject(Scripting.FileSystemObject) 用OpenTextFile()方法打开disk.txt文件,以只读方式: set txtObj=FSO. OpenTextFile(“d:\xml\disk.txt”,1) 以写方式打开: set txtObj=FSO. OpenTextFile(“d:\xml\disk.txt”,2)

41 10.4.3 ASP对象 以读写方式: set txtObj=FSO. OpenTextFile(“d:\xml\disk.txt”,8)
读出该文件流到变量txtvar: set txtvar=txtObj.Readall 对文件写: txtvar.write(“……”) 1)读文件 例10.8 用FileSystemObject对象以只读方式打开文本文件disk.txt,然后显示内容。 程序参考P.326。

42 ASP对象 2)写文件 写文件有两种方式,当OpenTextFile的mode参数为2时,会以write方法的内容覆盖原来的文件内容。当参数为8时,将把write方法的内容追加到原文件的尾部。 例10.8 以追加方式打开文件,然后追加“TDK,DISKETTE,3.5INCH,5.5YUAN” 4、操作XML文件 使用与上述类似的方法,可以操作XML文档。 例10.9 在例1.2的XML文档的根元素前插入一行注释<!—这是有关学生信息的XML文档 -->。

43 ADO 1.简介 ActiveX Data Object(ADO)提供了一种简单、有效而又功能强大的数据库编程模式,运用ADO,应用程序能够方便地进行数据库访问。通过ADO,我们可以在脚本中对数据库进行灵活的控制,可以进行复杂的数据库操作,生成的页面具有很强的交互性,可以方便地控制和管理数据。 ADO是一个运行于服务器端的ActiveX组件,它所提供的功能是进行数据库访问。运用ADO,我们可以编写简洁、可扩展性强的脚本,脚本既可以与ODBC数据源互连,又可以与OLE DB数据源互连。

44 ADO 使用ADO,我们可以对数据提供者所提供的各种数据进行读取和写入操作,其中包括Microsoft Access、Microsoft SQL Serer和Oracle等数据库。除了这些传统数据库之外,使用ADO,我们还可以操纵其他数据资源,其中包括普通文本文件、Microsoft Excel、Microsoft Exchange和Microsoft Index Serer等数据资源。 2、ADO操作 详细讨论ADO,内容十分丰富,已超出本书的范围,具体的细节,读者可以参考相关文献和书籍。我们这里只对如何具体实现进行简单的讨论。

45 ADO 1)ADO组件 在ADO组件中,最主要的是三个对象一一Connection、Command和Recordset。通过这三个对象,我们在ASP脚本中可以与数据库连接,查询数据库中的数据,以及插入、删除和修改数据库中的数据。

46 ADO (1) Connection对象 Connection对象用于建立应用程序和数据库之间的连接,Command对象和Recordset对象是在Connection对象的基础上完成查询和更新数据库操作的。 (2)Command对象 Command对象用于定义数据库的操作,通常情况下数据库操作都是以SQL指令的形式表现出来,现在绝大多数数据库都支持SQL语言。除了SQL指令之外,Command对象还允许使用特定数据库自身的指令,例如,当我们访问SQL Server数据库的时候,可以使用SQL Server中存储过程这样特殊的指令。

47 ADO (3)Recordset对象 Recordset对象也许是ADO对象中最复杂的一个对象,但它的功能十分强大,在Recordset对象中包含了从数据库中查询的结果集合。使用Recordset对象,我们可以每次取出结果集合中的一条记录,独立地访问记录中的每一个字段。通过服务器端的脚本环境,我们还可以对结果集合中的记录进行分析和统计。 ADO对数据库和数据源的访问可以使用ODBC和OLEDB,其模型如图10.7所示。

48 ADO (2)建立ADODB对象 ADODB是(ADO for database)的缩写,称为数据库的ActiveX数据对象。创建ADO对象时,使用下面的语法(VBScript): Dim DBconn,DBcmd,DBrs Set DBconn= server.createObject(“ADODB.connection”) Set DBcmd= server.createObject(“ADODB.command”) Set DBrs= server.createObject(“ADODB.recordset”) 限于本书的内容,我们重点讨论recordset 在XML数据转换中的使用方法。至于command对象,不在讨论之例。

49 10.4.5 连接数据库 连接数据库可以使用早期的ODBC,也可以使用OLE DB。下面分别讨论这两种方法。 1、使用ODBC
连接数据库 连接数据库可以使用早期的ODBC,也可以使用OLE DB。下面分别讨论这两种方法。 1、使用ODBC 使用ODBC连接数据库,需要建立数据源名称DSN(Data Source Name),通过打开DSN,建立与数据库的连接。方法如下。 1)建立数据源 假定我们要使用SQL Server作为数据库打开,建立数据源的方法为:

50 10.4.5 连接数据库 点击:控制面板/管理工具/数据源(ODBC),出现“ODBC数据源管理器”界面。
连接数据库 点击:控制面板/管理工具/数据源(ODBC),出现“ODBC数据源管理器”界面。 在该界面中选择“系统DSN”标签。在此界面中单击“添加”按钮。 在“创建新数据源”对话框中,选择“SQL Server”,单击“完成”。 在“建立新的数据源到SQL Server”对话框中输入“数据源名称”,选择连接的SQL Server数据库。 根据后面的提示,输入用户名,用户密码等,然后完成后续工作,即可建立数据源。

51 10.4.5 连接数据库 2)打开数据源 建立好数据源之后,可以通过此数据源建立ADO与数据库的连接工作。
连接数据库 2)打开数据源 建立好数据源之后,可以通过此数据源建立ADO与数据库的连接工作。 假设数据源名称是Stuado,用户名是stu,用户密码是stu123,要打开的表为nature,则打开数据源的ASP代码为: ’建立Connection对象 Set DataCon=Server.CreateObject("ADODB.Connection") ‘ 建立Recordset对象 Set DataRs=Server.CreateObject("ADODB.Recordset") ‘打开Connection对象 DataCon.Open "dsn=Stuado","Stu","stu123"

52 10.4.5 连接数据库 2.使用OLEDB 使用OLEDB建立数据库连接,不需要事先建立数据源,只需要直接使用语句即可。
连接数据库 ‘把打开的数据源赋给Recordse对象 DataRs.ActiveConnection=DataCon ‘用SQL语句打开表nature,获得数据集 DataRs.Open “select * from nature” 2.使用OLEDB 使用OLEDB建立数据库连接,不需要事先建立数据源,只需要直接使用语句即可。 假设使用的数据库是SQL Server中的employee,数据库服务器名wzj,用户名是stu,用户密码是stu123,要打开的表为employee,则打开数据源的ASP代码为:

53 10.4.5 连接数据库 ‘建立Connection对象
连接数据库 ‘建立Connection对象 Set adoConn=Server.CreateObject("ADODB.Connection") ‘建立Connection对象的连接字符串 adoConn.Connectionstring="PROVIDER=SQLOLEDB;DATA SOURCE=wzj;UID=stu;PWD=stu123;DATABASE=employee" ‘打开Connection连接 adoConn.open ‘建立Recordset对象 Set adoRs=Server.CreateObject("ADODB.Recordset") ‘把Connection连接赋给Recordset对象 adoRs.ActiveConnection=adoConn ‘用SQL打开表employee,获得数据集 adoRs.Open "select *from employee"

54 10.4.5 连接数据库 如果数据库是Access,可以使用下面的连接字符串代替上面的连接字符串即可。
连接数据库 如果数据库是Access,可以使用下面的连接字符串代替上面的连接字符串即可。 adoConn.Connectionstring=="Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\asp\student.mdb" 注意:connection和recordset两个对象的open方法用法不同,使用时应该注意区别。

55 通过ADO 通过前面的讨论,我们已经可以建立ADO对象、建立ADO与数据库的连接、打开连接等工作。现在来讨论使用ASP、ADO把数据库的表转换成XML文档的问题。 在我们的实际应用中有一个用Access建立的学生student数据库,表格名称为nature,表结构如图10.5所示,其部分数据如图10.8所示。 我们根据此表设计XML文档的转换程序。 ①建立连接字符串 因为打开的是Access数据库,可以使用下面的连接字符串:

56 图10.8 student数据库下的nature表的结构
通过ADO 图10.8 student数据库下的nature表的结构

57 通过ADO 图10.9 student数据库下的nature表数据

58 10.4.6 通过ADO ②建立ADO对象 ③建立FileSystemObject对象,产生字符流
ConStr="Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\asp\student.mdb" ②建立ADO对象 set adoCon=server.createObject("ADODB.Connection") set adoRs=server.createObject("ADODB.Recordset") adoCon.Open ConStr adoRs.Open "Student",ConStr ③建立FileSystemObject对象,产生字符流 因为数据库表的数据取出后,要使用把表的字段转换为XML的文本字符流,所以建立该对象,并使用该对象产生的TextStream对象属性来书写文本文件。

59 10.4.6 通过ADO ④创建XML文档 在D盘上XML文件夹下建student.xml文件。 ⑤把字符串写入文件
set oFSO=server.CreateObject("Scripting.FileSystemObject") ④创建XML文档 在D盘上XML文件夹下建student.xml文件。 ⑤把字符串写入文件 使用FileSystemObjec产生的对象oXMLfile的writeline方法开始写XML文件。 oXMLfile.writeline "<?xml version='1.0' encoding='gb2312'?>" ⑥转换数据到XML元素 把National字段及其内容转换成元素National,可以如下实现: "<National>"&adoRs("National")&"</National>"

60 10.4.6 通过ADO 例10.11 综合起来,把转换文件写成。 程序参考P.330。效果如图:
例 综合起来,把转换文件写成。 程序参考P.330。效果如图: 图 nature表数据产生的XML文档 左图是文档,右图是浏览图

61 10.5 XML数据库 上面的讨论总是没有离开传统数据库,如果我们直接用XML文档作为数据库系统来使用,情况会怎样?这就引发了关于XML数据库的研究工作。目前,XML数据库的研究正在成为XML应用的重要领域。

62 XML数据库概念 基于XML的数据库系统分为NXD(Native XML Database)和XEDB(XML Enable Database)两类。NXD是以XML文档为基础的数据库管理系统,目前是XML数据库研究的重要课题。XEDB则是在传统的RDBMS中增加了支持XML技术的功能,使得传统数据库系统能够访问XML。 XML文档是一种简单的文本文件,把XML文档作为一种数据存储方式,可以使XML文档具有传统数据库存储数据的基本功能,而访问XML文档数据要比访问传统数据库更简单、更方便。这就是NDX数据库系统。在这个系统中,XML文档是数据库的数据区, DTD和XMLSchema是数据库的数据定义模

63 XML数据库概念 型, XSLT、DOM、SAX是数据库数据处理技术,XPath、XLink、XPointer是数据库数据的查询链接工具。 基于XML的数据库系统分为NXD(Native XML Database)和XEDB(XML Enable Database)两类。NXD是以XML文档为基础的数据库管理系统,目前是XML数据库研究的重要课题。XEDB则是在传统的RDBMS中增加了支持XML技术的功能,使得传统数据库系统能够访问XML。 1、XML文档及其数据类型和有效性定义 作为数据库系统,数据类型定义和数据有效性检验都是必须的。在XML技术规范中,通过DTD和XML Schema来定义数

64 XML数据库概念 据类型。DTD是XML有效性检验的标准,但是其可以使用的数据类型十分有限。XML Schema在2001年5月成了W3C的建议规范。在设计中,可以采用了XML Schema 2.0对XML数据类型和格式的进行定义。 2、XML文档有效性定义验证 如何检验XML文档是否符合XML Schema的定义,最近出现了XML Schma进行验证的技术SOM(Schema Object Model),可以对XML Schema 文档进行加载、分析和检验,以确定XML元素定义的有效性。

65 10.5.2 访问XML数据库 把XML文档作为数据库使用,需要数据转换、数据查询、链接等访问技术。 1、XSLT
可以采用XSLT技术、实现XML文档数据的查询、读写操作。请参考第8章。 2、DOM 可以采用DOM接口集合操纵XML文档。请参考第9章。 3、SAX 可以使用SAX处理XML文档。它与DOM差异类似于磁带和磁盘,SAX只能向前顺序读取XML数据,把XML文档作为一个

66 10.5.2 访问XML数据库 可读取的字符流,这与磁带的读写类似。而DOM可以完整浏览和更新XML文档数据,这与磁盘的读写类似。
SAX是一组程序设计接口。在加载XML文档时可以部分调入内存,使得内存使用效率比较高,这样可以提高读取速度,提高处理效率。在顺序读取XML文档的场合,SAX可以大大提高XML文档的处理效率。但是,SAX不能随机访问XML,不能对XML数据进行修改。 4、XML的查询、链接、检索 目前XPath、XLink、XPointer是W3C推荐的用于XML文档的查询链接和检索的规范。这部分内容请参考第5章。

67 访问XML数据库 5、安全性 作为数据库的XML,其安全性十分重要。除了网络安全技术外,从XML技术入手的专用XML安全技术规范已经出台。在标准的XML成分中,增加一些专用属性,可以提供检验XML文档安全的手段和工具。XML安全技术包括XML加密、XML签名、XML密钥管理规范和XML的访问控制语言等内容。


Download ppt "第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作"

Similar presentations


Ads by Google