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

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
1 自然人憑證 結合人事差假管理系統 指導老師:丁德榮 教授 作者:何岳剛、蘇巨鋒、廖偉吏、鄭致瑋、湯媛喬、李封儒 報告人:廖偉吏 彰化師範大學 資訊工程學系 報告日期: 95/11/2.
我有一份考工的理论题库,是 Excel 文件。我在想如果转换到 Word 文件中再排版,再印刷,一是浪费时间,既要做成 Word 卷, 测试完还要手工批卷;二是浪费纸张( 4 — 5 个班级近 200 多人使 用),我在想能不能做成上机试卷,在计算机上测试,多方便, 谁能帮我这个忙吗? 我有一份考工的理论题库,是.
第15章 教学成绩管理系统的ASP实现 教学提示:本章主要通过案例《教学成绩管理系统(ASP版)》,演示以SQL Server 2000为后台数据库,用ASP进行B/S结构的数据库应用程序的开发。本教材提供了案例全部源代码及设计文档,请同学们进行阅读、研究,重点在了解B/S结构下的数据库应用程序的总体结构。
第六章 网页设计与制作基础.
动态Web开发技术--JSP.
主讲:史治平 地址:四川电大计算机教研室 电话:
第21章 .NET报表设计 (时间:1.5次课,3学时).
Web数据库技术 Web技术与数据库技术相结合 冯天宇.
第13章 数据库的基本应用 Visual Basic 程序设计教程.
10-1 資料庫管理系統簡介 10-2 關聯式資料模式和查詢語言 10-3 Access 簡介 10-4 XML 簡介
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
佛山科学技术学院 第7章 HTML Internet及多媒体应用.
Access数据库知识 安丘市职业中专 雷云龙.
第五章:JDBC与数据库 第一讲.
第三讲 站点链接与表格布局.
資料庫 (Database) SQL Server 2008實作
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
程式語言與設計 授課教師:蔣德威.
网站如何定制建设???.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
数据库管理软件 Access 2003的使用 安丘市职业中专 雷云龙 1.
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
网页制作 第五讲 Dreamweaver基础.
建國技術學院資訊管理學系 饒瑞佶 2004/7/5 彰化縣政府補助辦理網頁設計資料庫應用班 建國技術學院資訊管理學系 饒瑞佶 2004/7/5.
Microsoft Access 第十二組 黃彥維 陳重嘉.
第 11 章 資料庫應用與 ADO物件 製作.
第 3 章 網頁的基本設定與預覽.
第四章 網頁表單與資料傳遞.
資料庫程式設計 VB資料庫設計簡介 週次:4 建國科技大學 資管系 饒瑞佶.
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
第一章: Java Web 开发技术概述.
ADO.NET.
課程名稱:資料庫系統 授課老師:李春雄 博士
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
第2章 ADO.NET 2.0概述.
VB如何存取資料庫 ? 資料庫 資料儲存 資料庫引擎 資料庫引擎 Jet 讀取、寫入與修改 資料控制項 資料庫存取物件(ADO) 使用者介面.
ASP.NET 網頁製作教本 – 從基本語法學起
课程设计 归纳总结 4 知识目标 1 讲授新课 2 任务操作 3 布置作业 5.
第 13 章 深入Recordset物件 製作.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
資料庫系統導論.
第3 章 VBScript的控制结构.
課程名稱:_____________ 指導教授:_____________
XML基礎課程 5 數位芝麻網路公司 XML講師:蔡斐婷.
張智星 台大資工系 多媒體檢索實驗室 第十二章 ASP基本介紹 張智星 台大資工系 多媒體檢索實驗室.
网 站 设 计 与 建 设 Website design and developments
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
資料庫程式設計 VB資料庫設計簡介 週次:3 建國科技大學 資管系 饒瑞佶.
网页设计与制作 Dreamweaver CS6 标准教程
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
第十三讲 使用数据库(一) 上海财经大学信息管理与工程学院.
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
第 1 章 簡介XML.
CS, ZJU 4/18/2019 Chapter 7 数据库.
第 10 章 ADO.NET與XML.
COM组件及其设计 一、COM组件定义和DNA思想简介 二、COM组件的特点 三、COM组件对象的软件工程方法 四、DNS、MTS
ASP动态网页设计实用教程 主讲教师:贾海陶.
HOOK和数据库访问 主讲人:孙鑫
講師:梁家豪 動態網頁設計 ASP & 資料庫應用 講師:梁家豪
W3C标准网页制作 主讲教师:张 涛.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

第十 章 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数据库

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

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

10.2 数据岛 10.2.1 基本概念 在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。

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

10.2.2 简单XML文档的处理 <file> <name>ASP Design</name> <type>Word Document</type> <date>2003-10-15</date> <size>680kb</size> </file> <name>2005 Test Scores</name> <type>Excel Document</type> <date>2006-1-20</date> <size>65kb</size> </files>

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

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

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

10.2.3 多级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

10.2.3 多级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>中。

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

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

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

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。

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

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

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

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

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

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

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

10.4.2 移动指针 设置四个按钮,分别是“第一条”、“最后一条”、“上一条”、“下一条”,并把属性onclick设置成相应的移动操作: 10.4.2 移动指针 设置四个按钮,分别是“第一条”、“最后一条”、“上一条”、“下一条”,并把属性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 效果如下图。

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

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

10.4.2 移动指针 然后在事件onclick中引用这些按钮,并进行简单编程: 10.4.2 移动指针 然后在事件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。

10.4.3 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读取请求的文件,执行脚本命令,由脚本解释器

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模块。

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

10.4.3 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>

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 来传递。

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

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方法可以实现把服务器接收到然后通过处理的信息反馈给客户端浏览器。

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

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

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以默认格式打开文件。

10.4.3 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对象有如下的方法进行操作:

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

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)

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。

10.4.3 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文档 -->。

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

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

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

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

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

10.4.4 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对象,不在讨论之例。

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

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

10.4.5 连接数据库 2)打开数据源 建立好数据源之后,可以通过此数据源建立ADO与数据库的连接工作。 10.4.5 连接数据库 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"

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

10.4.5 连接数据库 ‘建立Connection对象 10.4.5 连接数据库 ‘建立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"

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

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

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

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

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对象属性来书写文本文件。

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>"

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

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

10.5.1 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是数据库的数据定义模

10.5.1 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来定义数

10.5.1 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元素定义的有效性。

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

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

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