xml实用教程:第11章 XML与ASP_第1页
xml实用教程:第11章 XML与ASP_第2页
xml实用教程:第11章 XML与ASP_第3页
xml实用教程:第11章 XML与ASP_第4页
xml实用教程:第11章 XML与ASP_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章 XML与ASP 返回主页 上一章 下一章教学提示:ASP(Active Server Page)是微软为了推广网络应用程序开发及数据库链接而推出的一项技术。这项技术最早在IIS(Internet Information Server)3.0上开始使用。由于Windows、IIS日益普及,ASP凭借其简单而且功能强大的特点逐渐成为重要的Web应用开发技术。ADO(ActiveX Data Objects)是微软公司众多数据存取技术中的一种,用以包装复杂的数据存取动作,并提供简单易写的对象接口,ADO已逐渐成为数据存取的标准接口。XML的可扩展性和灵活性,使XML容易

2、结合不同来源的结构化数据,XML能够描述各种类型的应用程序中包含的数据,将查看数据的用户界面和数据本身分离,为设计功能强大的应用程序提供可能。 教学目标:理解ASP的概念,掌握ASP内建对象,理解ADO基本功能,掌握如何利用ASP、ADO与XML结合的方法,对数据库的操作。11.1 ASP语言简介11.2 ADO的内部对象11.3 XML在ASP中的应用11.4 综合实例小 结习 题写字版 绘图板 进入Editplus11.1 ASP简介 本章开头 下一节在第9章中,使用DOM编写的脚本都是嵌套在客户端的HTML页面中,基于安全的因素,DOM的许多功能受到限制,如不能动态修

3、改XML文档内容。而使用ASP,可以利用脚本来创建动态的文档,即使用ASP来动态生成和修改XML文档。在ASP中,可以使用多种脚本语言,如VBScript、JavaScript,为开发人员提供灵活的选择空间,利用ADO组件轻松存取数据库。ASP简单易学,目前使用非常广泛,很多大型站点都是用ASP开发的。11.1.1 ASP语言功能ASP(Active Server Page)是一个Web服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序。ASP允许采用脚本语言VBScript和JavaScript作为自己的开发语言,默认采用VBScript,采用微软的IIS作为

4、ASP的服务器。ASP给WEB开发带来一阵暴风,它能够将代码直接嵌入HTML,使得设计WEB页面变得更简单,更强大,并且通过内置的组件能够实现强大功能,最明显的就是ActiveX Data Objects (ADO),它使得建立一个动态页面十分简单。    ASP与ADO的结合使开发者很容易在一个数据库中建立和打开一个记录集,这很快就被大众接受,因为开发者现在能使用这些脚本建立和打开一个记录集,以任何顺序处理和输出任何数据,几乎只要能想到的,它就能完成。 ASP实际上是将标准的HTML文件拓展了一些附加特征,并像标准的HTML文件一样包含HTML对象,然后在一个浏

5、览器上解释并显示。任何可以放在HTML中的东西,如Java applets、闪烁字符串、客户端脚本和客户端ActiveX控件等,都可以放在ASP中。因此,一个ASP有如下4个重要特征来使之具备很强的通用性:· ASP可以包括服务端脚本。 · ASP提供了一些内建对象。 · ASP可以用另外的元素来扩展。 · ASP可以和数据库、XML等外部数据源进行挂接。 11.1.2 ASP内建对象ASP的功能是十分强大的,这首先要来源于它内建的6个基本对象,这6个内建对象提供了大量的基本功能,让编程变得更加容易。1. Application对象Application

6、对象被用来存储一个应用中所有用户共享的信息。它实际上由在硬盘上的一组主页以及ASP文件组成,当一个ASP加入了一个Application,那么它就拥有了作为单独主页所无法拥有的属性,通过这些属性,可以存储所有用户的共同信息。例如,可以利用Application对象来在站点的不同用户间传递信息。Application对象还有两个事件Application_OnStart和Application_OnEnd,第1个事件在Application开始时触发,第2个事件在Application结束时触发。2. Request对象Request对象可以被用来访问所有从浏览器到服务器间的信息。通过使用Req

7、uest对象,可以得出许多来自于客户端的信息,例如可以从HTML的表单中接受信息,或者通过URL地址后面用问号带着的Query字段来查询特定信息。3. Response对象Response对象用来将信息发送回给浏览器。Response是和Request对象相对的一个对象,它们一个负责服务器端的响应,一个负责浏览器端的请求,使浏览器端可以和服务器端很好地完成交互。最常用的Response对象的功能就是显示服务器端发回的信息,此外,还可以使用它来产生页面的重定向。4. Server对象Server对象提供了大量服务器端的应用函数。通过Server对象,可以创建其他外部对象的实例,使ASP的功能大大

8、的增强了。此外,还可以用Server对象来控制网页页面的超时时间。5. Session对象Session对象被用来存储一些普通用户滞留期间的信息。Session实际上指的就是访问者从到达某个特定主页到离开为止的那段时间,每个访问者都会单独获得一个Session对象。Session对象是十分常用的,可以用来跟踪访问者的习惯,如:访问者是喜好绿色背景还是蓝色?访问者是否喜欢浮动菜单?这些信息都可以依据Session来跟踪。Session还可以创建虚拟购物篮。无论什么时候当用户在网站中选择了一种产品,那么这种产品就会进入购物篮,当他或她准备离开时,就可以立即进行以上所有选择的产品的订购。这些购物信息

9、可以被保存在Session中。11.2 ADO的内部对象 上一节 下一节 本章开头ADO的全名是ActiveX Data Objects,ADO是微软公司众多数据存取技术中的一种,用以包装复杂的数据存取动作,并提供简单易写的对象接口。ADO就是要达到一个简单目的:只需要使用一种方式来存取各种数据、提供与任何形式的“数据源”链接的机制。最常见的数据源就是关系数据库,但是在ADO中,数据源不只局限于关系数据库,甚至连电子邮件系统都可以是数据源,这是与以往的ODBC数据库技术不同的地方。ADO目前已成为数据存取的标准接口,其主要功能是让应用程序存取、操纵来自数据库服务器的数据。ADO包括很多对象和子

10、对象,有大量的属性和方法。如果系统掌握了这些属性和方法,就能够完成更多、更高级的功能。ADO的主要对象有3个,分别为Connection、Command和Recordset,3个对象的主要功能如表11.1所示。表11.1  ADO对象及其主要功能对  象说  明Connection用来建立与数据库的连接Command用来对数据库执行命令,如查询、删除、修改记录等命令Recordset用来得到从数据库返回的记录集Connection对象又称连接对象,主要用来建立与数据库的连接。只有建立连接后,才能利用Command对象和Recordset对象来对数据库进行各种操作。

11、Command对象又称命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。当然,也可利用Connection对象的Execute方法也可以进行查询、添加、删除、修改记录等操作,这是一种常用方法。Recordset对象又称记录集对象,是最主要的对象。当用Command对象或Connection对象执行查询命令后,就会得到一个记录集对象,该记录集包含满足条件的所有记录。利用Recordset对象也可以添加、删除或修改记录。这3个对象看起来逻辑关系还是比较简单的,利用Connection对象和数据库建立连接,然后用Command对象执行命令,最后在得到的Recor

12、dset对象中具体操作。11.2.1 Connection对象Connection对象是用来连接数据库的。关于该对象,需要注意以下几点。一般需要明确建立Connection对象,但也可以不明确建立,而是利用Command对象或Recordset对象直接连接数据库,这样将建立一个隐含的Connection对象,只是无法利用Connection对象的许多功能,也就无法发挥Connection对象的巨大作用。Connection对象一般用来建立和数据库的连接,也可以用它来查询、添加、删除、修改记录。这是一种常用的方法,但是与利用Command对象和Recordset对象相比有一定的局限性,比如就无法

13、实现分页显示记录功能。学习Connection对象有几个比较重要的内容:首先是如何建立Connection对象,本章主要讲建立与Access数据库的各种连接方法; 其次一定要注意Connection对象的Execute方法,尽管利用该方法查询记录有一定局限性,但它确实是一个非常简单、好用和常用的方法。1. 建立Connection对象使用Connection对象之前,首先要建立该对象。在ADO中建立对象一般需要利用Server对象的CreatObject方法。语法如下:Set Connection 对象=Server.CreateObject(“ADODB.Connection”)建立对象后,

14、就可以利用Connection对象的Open方法来打开数据库并与之建立连接。语法如下:Connection对象.Open“参数1=参数1的值;参数2=参数2的值;”其中参数的意义如表11.2所示。表11.2  Connection对象的Open方法的参数参 数说 明DsnODBC数据源名称User数据库登录账号Password数据库登录密码Driver数据库的类型(驱动程序)Dbq数据库的物理路径Provider数据提供者2. Connection对象的属性Connection对象有很多属性,常用的属性如表11.3所示。表11.3  Connection对象的常用属性属&#

15、160; 性说  明Attributes设置Connection对象控制事务处理时的行为CommandTimeoutExecute方法的最长执行时间ConnectionString指定Connection对象的数据库链接信息ConnectionTimeoutOpen方法与数据库链接的执行最长时间CursorLocation控制光标的类型DefaultDatabase指定Connection对象的缺省数据库名称IsolationLevel指定Connection对象事务处理的时机Mode设置连接数据库的权根Provider设置Connection对象内定的数据库管理程序名称Versio

16、n显示ADO对象的版本信息比较常用的有以下几个:(1)ConnectionString该属性用于指定Connection对象的数据库连接信息。下面的例子也可以建立与数据库的连接:<%Dim dbDim strSqlSet db=Server.CreateObject("ADODB.Connection")              创建数据库连接对象StrCon="Provider=Microsoft.Jet.OLEDB.4.0;

17、" & "Data Source=" &  Server.Mappath("address.mdb")db.Open StrCon                                 

18、;          建立与数据库的连接%>(2)Connection Timeout该属性用于指定Connection对象的Open方法与数据库连接的执行最长时间。当时间到了数据库还没有正确连接上,就停止执行。该属性的默认值为15秒,如果设定为0,则表示无限期等候直到Open方法完成为止。下面例子将默认值设置为30秒:<%db.ConnectionTimeout=30%>同CommandTimeout一样,如果服务器比较慢,可以设置连接时间长些。(3)DefaultDatabase一般

19、的数据提供者只能提供一个数据库,有的数据提供者却能提供多个数据库,用该属性可以在多个数据库中指定默认的数据库。3. Connection对象的方法Connection对象有很多方法,都比较有用,其中Open方法和Execute方法是最常用的方法。更多的常用方法如表11.4所示。表11.4  Connection对象的常用方法方  法说  明Open建立与数据库的连接Close关闭与数据库的连接Execute执行数据库查询(可以执行各种操作)BeginTrans开始事务处理CommitTrans提交事务处理结果RollbackTrans取消事务处理结果下面详细介绍。

20、(1)Open该方法用来建立与数据库的连接。只有用Open方法和数据库建立连接后,才可以继续进行各种操作。(2)Close该方法用来关闭一个已打开的Connection对象及其相关的各种对象。它的作用主要是用以切断与数据库之间的连接通道。当该通道被关闭后,所有依赖该Connection对象的Command或Recordset对象也将立即被切断关系,方法如下:    <%    db.Close           

21、60;  '关闭与数据库的连接    Set db=nothing         '从内存中彻底清除Connection对象db,也可以省略    %>说明:其实也可以不用该方法关闭对象,因为当一个页面关闭后,Connection对象会自动关闭。不过养成使用完毕主动关闭的习惯还是很好的,有时可以节省内存资源。(3)ExecuteExecute方法用来执行数据库查询,该方法可以完成几乎所有的功能。它的语法有两种:Set Re

22、cordset对象=Connection对象.Execute(SQL字符串)或  Connection对象.Execute(SQL字符串)11.2.2  Recordset对象Recordset对象又称记录集对象,ADO中是最主要的对象。当用Command对象或Connection对象执行查询命令后,就会得到一个记录集对象,该记录集包含满足条件的所有记录,然后就可以利用ASP语句将记录集的数据显示在页面上。以前已经多次建立Recordset对象,主要是利用Connection对象或Command对象的Execute方法。其实标准的语法是:Set Recordset对象=Se

23、rver.CreateObject("ADODB.Recordset")然后,就可以用Open方法打开一个数据库,语法是:Recordset对象.OpenSource,ActiveConnection,CursorType,LockType,Options该方法的参数意义见表11.5表11.8。表11.5  Recordset对象的Open方法的参数意义参  数说  明SoruceCommand对象名或SQL语句或数据表名ActiveConncetionConnection对象名或包含数据库连接信息的字符串CursorTypeRecordset

24、对象记录集中的指针类型,可省略LockTypeRecordset对象的使用类型,可省略OptionsSource类型,取值如表11.8所示,可省略表11.6  CursorType参数取值CursorType参数数值描  述AdOpenForwardOnly0向前指针,只能利用MoveNext或GetRows向前移动检索数据,默认值AdOpenKeyset1键盘指针,在记录集中可以向前或向后移动,当某客户做了修改后(除了增加新数据),其他用户都可以立即显示AdOpenDynamic2动态指针,记录集中可以向前或向后移动,所有修改都会立即在其他客户端显示AdOpenStati

25、c3静态指针,在记录集中可以向前或向后移动,所有更新的数据都不会显示在其他客户端表11.7  LockType参数取值LockType参数数值描   述LockType参数AdLockReadOnly1只读,不许修改记录集,默认值AdLockPessimistic2只能同时被一个客户修改,修改时锁定,修改完毕释放AdLockOptimistic3可以同时被多个客户修改AdLockBatchOptimistic4数据可以修改,但不锁定其他客户 表11.8  Options参数Options参数值说   明adCmdUnknow

26、n-1CommandText参数类型无法确定,是系统的缺省值AdCmdText1CommandText参数是命令类型AdCmdTable2CommandText参数是一个表名称adCmdStoreProc3CommandText参数是一个存储过程名称 总的来说,Source是数据库查询信息;ActiveConnection是数据库连接信息;CursorType是指针类型(也称游标类型);LockType是锁定信息;Options是数据库查询信息类型。大部分情况下可以省略后3个参数,但有些情况下必须使用。例如,如不设置CursorType类型,在记录集中就只可以向前移动指针,而不能向后

27、移动指针。如果要省略中间的参数,则必须用逗号给中间的参数留出位置,也就是说,每一个参数必须对应相应的位置。例如:<% Set rs.Open "Select * From users",cmd,2 %>在这个例子中,省略了第3个和第5个参数,但必须用逗号给第3个参数留出位置,当然,第5个在最后,就不用管了。11.2.3  Recordset对象的方法以前几乎只用到Recordset对象的两个方法:Open和MoveNext,更多的方法如表11.9所示。Recordset对象的方法也可以按照功能分为几组,第一组主要是关于Recordset对象本身:(1)

28、Open方法用来打开记录集。语法为:Recordset对象.OpenSource,ActiveConnection,CursorType,LockType,Options(2)Close方法用于关闭Recordset对象。和Connection对象的关闭方法一样,不用时就关闭。语法为:Recordset对象.Close(3)MoveFirst方法用于记录指针移动到第一条记录。语法为:Recordset对象.MoveFirst(4)MovePrevious方法用于将记录指针移动到上一条记录,也就是向前移动一条。语法为:Recordset对象.MovePrevious表11.9  Rec

29、ordset对象的常用方法方   法说   明Open打开记录集Close关闭当前的Recordset对象Requery重新打开记录集MoveFirst移动到第一条记录MoveProvious移动到上一条记录(向后移动)MoveNext移动到下一条记录(向前移动)MoveLast移动到最后一条记录Move移动到指定记录AddNew添加新记录Delete删除当前记录Update更新数据库数据CancelUpdate取消数据更新GetRows从记录集中取得多行数据Resync与数据库服务器同步更新(5)MoveNext方法用于将记录指针移动到下一条记录,也就

30、是向后移动一条。语法为:Recordset对象.MoveNext(6)MoveLast方法用于将指针移动到最后一条记录。语法为:Recordset对象.MoveLast(7)Move方法用于将指针移动到指定的记录。语法为:Recordset对象.Move number,start(8)AddNew方法用于向数据库添加记录,语法为:Recordset对象.AddNew字段名数组,字段值数组如果只有一个字段,则为:Recordset对象.AddNew字段名,字段值(9)Delete方法用于删除当前记录。语法为:Recordset对象.Delete(10)Update方法用于更新数据库数据。语法为:

31、Recordset对象.Update 执行完AddNew或Delete方法后,必须执行Update方法,才能真正更新数据库(如果更新后,又移动了记录指针,也将自动更新数据库)。例如:<%rs.AddNew Fields,Valuesrs.Update%>11.2.4  利用Connection对象、Recordset对象取数据表数据利用Connection对象存取数据库的主要内容是利用Connection对象的Execute方法对数据库记录进行查询操作。【例11.1】Connection对象存取数据库的基本操作,code11_1.asp。<html> 

32、;  <head>    <title>数据库的基本操作</title>   <head>   <body><%'连接数据库,建立Connection对象,address.mdb下面将建立Dim dbDim strSq1,rs                  &#

33、160; '定义变量Set db=Server.CreateObject("ADODB.Connection")StrCon="Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &  Server.Mappath("address.mdb")Db.Open StrConStrSq1="Select * From users"'查询记录'以下建立Recordset对象实例rsSet rs=db.

34、Execute(strSq1)   Do While Not rs.Eof       Response.Write rs("name") & "  " & rs("tel") & "  " & rs("age")  & "<br>"       Rs.Mo

35、veNext    Loop%>   </body></html>图11.1  使用ASP对数据库表数据查询显示程序说明:上面的例子主要是为了加深大家对数据库的基本操作语法的理解,同时也是强调这几种方法的重要性。11.3 XML在ASP中的应用 上一节 下一节 本章开头  对很多目的用途来说,用数据库太过浪费了。要使用一个数据库,必须安装和支持一个分离的服务器处理进程,它常要求有安装和支持它的管理员(administrator)。必须学习SQL语句, 并用SQL语句写查询,然后转换数据,再返回。

36、而如果用XML文件存储数据,将可减少额外的服务器的负荷。此外还有一个编辑数据的简单方法。只要使用文本编辑器,而不必使用复杂的数据库工具。XML文件很容易备份、和下载到客户端。 XML还有一个更抽象的优点,即作为层次型的格式比关系型的更好。它可以用一种很直接的方式来设计数据结构以符合需要。不需要使用一个实体-关系编辑器,也不需要使的图表(schema)标准化。 如果你有一个元素(element)包含了另一个元素,你可以直接在格式中表示它,而不需要使用表的关联。 ADO定义一个完整的功能接口,允许把Recordset当作XML文件来存取。我们除了自己编写ASP程序代码浏览Recordset然后将各

37、条记录存储为XML标记数据之外,还可以通过Recordset对象的Save函数直接将Recordset内的记录存储成XML格式(文件或网页)。11.3.1 使用APS创建XMLDom对象要想在ASP中对XML文件进行操作,必须在脚本中创建DOMDocument对象实例,DOMDocument对象代表了XML文档,即XML文档的DOM模型中的文档根节点。使用DOM方法对XML进行处理的基本步骤如下。1. 创建一个DOM对象的实例首先,要在服务器端创建一个XML DOM对象的实例。这时,就要用到前面所说的Server内建对象了。Server对象有一个CreatObject()方法,可以用来创建外部

38、对象的实例,如程序代码:<%LANGUAGE="VBSCRIPT"%><%        objDom=Server.CreateObject("MicroSoft.XMLDom")%>在这个例子中,创建了一个IE集成的XMLDom对象的实例,当然,也可以创建其他XMLDom对象,只要对象在系统中注册过即可。2. 为对象导入特定的XML文件已经有了XML DOM对象的实例,就可以为实例指定一个特定的XML文件了,如程序代码:<%LANGUAGE="

39、;VBSCRIPT"%><%        objDom.load(Server.MapPath("book.xml")%>这里,使用load方法导入了XML文件,这里需要注意的是,XML的路径可以使用URL地址,也可以使用相对地址,但使用相对地址时必须将地址通过Server对象的MapPath方法转换为URL地址,否则服务器将无法找到XML文件。3. 执行具体的工作有了和XML文件关联的DOM对象后,就可以执行各种具体的工作了,至于是什么工作,就由程序所需要达到的目的决定了。

40、11.3.2 使用APS遍历XMLDom对象下面创建第一个ASP文档,其作用是遍历XML文档,获得XML文档节点信息和节点值。先为ASP准备的XML文档book.xml如下:<?xml version="1.0" encoding="gb2312"?><books><book id="001" bookcategory="文艺" amount="100" remain="80" discount="8.7"> 

41、  <bookinfo>      <title>三国演义</title>      <author>罗贯中</author>      <publish>         <publisher>文艺出版社</publisher>   

42、;      <ISBN>0-764-58007-8</ISBN>         <pubdate>1998.10</pubdate>      </publish>      <price>80</price>   </bookinfo> 

43、  <resume>    滚滚长江东逝水,浪花淘尽英雄。是非成败转头空:青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢:古今多少事,都付笑谈中。</resume>   <recommendation>经典好书</recommendation>   <chapter>      <title>宴桃园豪杰三结义斩黄巾英雄首立功</title>  

44、;    <para> 话说天下大势,分久必合,合久必分。</para>   </chapter>   <chapter>      <title>张翼德怒鞭督邮何国舅谋诛宦竖</title>      <para>且说董卓字仲颖,陇西临洮人也,官拜河东太守,自来骄傲。</para>   </chapter

45、></book><book id="018" bookcategory="计算机" amount="560" remain="200" discount="8.2">   <bookinfo>      <title>计算机导论</title>      <author>丁跃潮等</author

46、>      <publish>         <publisher>高等教育出版社</publisher>         <ISBN>7-04-014768-8</ISBN>         <pubdate>2004.6&l

47、t;/pubdate>      </publish>      <price>19.7</price>   </bookinfo>   <resume>本书是学习计算机专业知识的入门教材,体现计算机专业主干课程的经典教学内容。全书注重在较低计算机知识背景下系统了解和认识计算机科学的全貌,理解基本原理,掌握关键概念。</resume>   <recomm

48、endation>推广教材</recommendation>   <chapter>      <title>第1章 计算机基础知识</title>      <para>计算机是一种能快速而高效地完成信息处理的数字化电子设备。.</para>   </chapter>   <chapter>   

49、0;  <title>第2章 计算机硬件基础</title>      <para>硬件就是构成计算机各部件的实体,是计算机中看的见、摸的到的部分。硬件是计算机工作的前提。.</para>   </chapter></book></books> ASP文档用于遍历book.xml,使用code11_2.asp程序可以得到XML文档的全部内容。【例11.2】遍历XML文档的ASP程序,code11_2.asp。<% Langua

50、ge=VBScript %><%set xmlDoc=Server.createObject("Microsoft.XMLDom")dim MyNode,namedNodeMapxmlDoc.load(Server.MapPath("book.xml")'获取节点为信息getallnodes(xmlDoc)子程序,在获得节点信息时 sub getallnodes(node)dim I'当前节点信息   Response.write("<br><b>节点名称:")&

51、#160;  Response.write(node.nodeName)   Response.write("</b><br>节点类型:")   Response.write(node.nodeTypeString)   Response.write("<br>节点值:")   Response.write(node.nodeValue)'获得子节点信息   if node.childNodes.len

52、gth<>0 then     for i=0 to node.childNodes.length-1       getallnodes(node.childNodes(i)     next   end ifend sub%>执行code11_2.asp,结果如图11.2所示。在该文档中,直接使用Response.write方法将结果返回。在code11_2.asp中,首先使用了Server.CreateObjec

53、t方法创建XML文档的DOMDocument对象实例,如下所示:set xmlDoc=Server.createObject("Microsoft.XMLDom")这是VBScript中的语法。Set命令将xmlDoc实例化为DOMDocument对象实例。在将XML文档加载到xmlDoc对象中时,使用了load方法,如下所示:xmlDoc.load(Server.MapPath("xmldata.xml")load方法的参数使用了Server.MapPath方法来指定,表示加载的XML文档在Web服务器上。Load方法可以使用loadXML方法替换,两

54、者作用相同。在获得节点信息时,定义了一个子程序getallnodes()。在getallnodes()中首先输出了当前节点的信息,如下所示:'当前节点信息Response.write("<br><b>节点名称:")Response.write(node.nodeName)Response.write("</b><br>节点类型:")Response.write(node.nodeTypeString)Response.write("<br>节点值:")Response

55、.write(node.nodeValue)输出当前节点之后,通过递归调用getallnodes()来获得当前节点子节点的信息,如下所示:'获得子节点信息   if node.childNodes.length<>0 then     for i=0 to node.childNodes.length-1       getnodes(node.childNodes(i)     next   e

56、nd if图11.2  使用ASP对XML文档遍历11.3.3  使用ASP显示XML文件本实例采用ASP+XMLDOM的编程框架,目的在于让读者了解如何用ASP使用xmlDoc格式化显示XML文件。【例11.3】ASP程序格式化显示XML文档,code11_3.asp。<%LANGUAGE="JAVASCRIPT"%><html><head><title>图书信息列表</title><meta http-equiv="Content-Type"content=&quo

57、t;text/html; charset=gb2312"></head><body>    <p align="center"><font size="7">图书列表</font></p>    <table width="100%" border="1">    <tr>   

58、0;   <td><div align="center">书名</div></td>       <td><div align="center">简介</div></td>       <td><div align="center">评论</div></td&g

59、t;       <td><div align="center">章节</div></td>       <td><div align="center">章节</div></td>    <tr>     <%    

60、0;    /创建XML DOM对象         var objDom=Server.CreateObject("MicroSoft.XMLDom");         /导入XML文件         objDom.load(Server.Mappath("book.xml");&#

61、160;        /选取BOOK节点集合         var bookitems=objDom.selectNodes("books/book");         var bookitem=bookitems.nextNode();         /利用两

62、重循环输出每个BOOK节点的内容         /第1重循环    for(var  i=0;i<bookitems.length;i+,bookitem=bookitems.nextNode()       %>       <tr>       <%  

63、     var childitems=bookitem.childNodes;       /第2重循环       for(item=childitems.nextNode();item;item=item.nextSibling)              %>    

64、;      <td><div align="center"><%=item.text%></div></td>       <%              %>       </tr> 

65、0;    <%      %>    </table>   </body></html>在IE中浏览code11_3.asp文档,结果如图11.3所示。11.3.4  使用ASP创建XML文档如果要将信息保存为XML格式,首先便需要在ASP中创建XML文档。例11.4中ASP文档用于在服务器中创建一个XML文档。图11.3  使用ASP格式化显示XML文档【例11.4】使用ASP创建XML文档,code11

66、_4.asp。 <%   set doc=Server.createObject("Microsoft.XMLDom")   doc.loadXML("<?xml version='1.0' ?><root>在ASP中创建的XML文档</root>")   doc.save(Server.MapPath("sample.xml")   Response.write("XML文档创建成功&q

67、uot;)%>文档使用了Server.CreateObject方法来创建DOM对象doc。第二条语句使用了loadXML方法(也可使用load方法)将需要创建的XML文档内容存入缓冲区,当然也可以使用该方法将其他的XML文档存入缓冲区备用。第三条语句使用了save方法将缓冲区中的内容存入XML文档,在指定保存对象时,使用了Server.MapPath(“sample.xml”)。Server.MapPath表示服务器的当前目录之下,并命名为“sample.xml”。第四条语句使用response的write方法输出一条信息,如果在创建文档的过程中没有出现错误,则该语句会被执行。在浏览器中

68、便可以看到输出的信息。如果出错,则看到的将是相应的错误信息。在IE中执行code11_4.asp,创建的XML文档结构如下: <?xml version="1.0"?><root>在ASP中创建的XML文档</root>11.3.5 使用ASP转换XML文档成HTML文档并不是所有的浏览器都可以支持XML,为了保证能够通过浏览器查看到XML文档内容,可以在服务器端使用ASP将XML文档转换为标准的HTML文档。使用ASP转换XML文档时,需要为XML文档设计好XSL样式表,然后利用DOMDocument对象的transformNode方法

69、使用样式表来将XML文档转换为HTML文档。下面将创建用于转换XML文档的ASP脚本。例11.5列出了等待转换的XML文档。例11.6列出了转换XML文档使用的XSL样式表。例11.7所示的是完成转换的ASP文档。【例11.5】 待转换的XML源文档code11_5.xml<?xml version="1.0" encoding="gb2312"?><网上书屋>   <书籍>      <书名>Red Hat Linux系统管理大全<

70、;/书名>      <作者>Thomas Schenk</作者>      <出版社>机械工业出版社</出版社>   </书籍>   <书籍>      <书名>中文版Windows NT技术支持培训教程</书名>      <作者>Micro

71、soft Press</作者>      <出版社>人民出版社</出版社>   </书籍>   <书籍>      <书名>Red Hat Linux宝典</书名>      <作者>Christopher Negus</作者>      <出版

72、社>电子工业出版社</出版社>   </书籍></网上书屋>【例11.6】 转换XML文档的XSL样式表code11_6.xsl<?xml version='1.0' encoding="gb2312" ?><xsl:stylesheet    xmlns:xsl="/TR/WD-xsl"    xmlns="/TR/REC-h

73、tml40" >    <xsl:template match="/">        <html><head>    <title>图书信息列表</title></head>         <body>      &

74、#160;     <xsl:apply-templates/>        </body></html>     </xsl:template>     <xsl:template match="网上书屋">        <center>&l

75、t;h1>图书信息列表</h1>        <table border="1">            <th>书名</th><th>作者</th><th>出版社</th>            <

76、xsl:apply-templates/>           </table>        </center>    </xsl:template>    <xsl:template match="书籍">        <t

77、r>           <td><xsl:value-of select="书名"/></td>           <td><xsl:value-of select="作者"/></td>           <td><xsl:value-of select="出版社"/></td>     

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论