基于XML的三层CS模型
- 格式:rtf
- 大小:80.33 KB
- 文档页数:6
MVC是指Model模型,View视图和Control控制器,也就是业务逻辑,界面和用户输入,这样划分系统比较清晰,这是设计人员要考虑的事。
什么是C/S结构。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
而且代价高,效率低。
如我院使用的上海超兰公司“案件统计”管理软件就是典型的C/S体系结构管理软件。
什么是B/S结构。
B/S(Browser/Server)结构即浏览器和服务器结构。
它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。
传统的二层C/S结构有以下几个局限性:1、二层C/S结构是单一服务器组成以局域网为中心,难以扩展到大型企业的广域网或Internet。
2、软硬结合有限。
3、客户机负荷太重,难以管理大量的客户机。
4、数据安全性不好。
正是因为二层C/S有这么多缺点,因此,三层C/S结构应运而生。
三层C/S结构是将应用功能分成表示层、功能层和数据层三个部分,如图2所示。
图2 三层C/S结构示意图表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。
它用于检查用户从键盘等输入的数据,显示应用输出的数据。
为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。
检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。
例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。
表示层和功能层之间的数据交往要尽可能简洁。
例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。
功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。
数据层就是数据库管理系统,负责管理对数据库数据的读写。
数据库管理系统必须能迅速执行大量数据的更新和检索。
因此,一般从功能层传送到数据层的要求大都使用SQL语言。
三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。
原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。
一般情况是只将表示层配置在客户机中,如果连功能层也放在客户机中,与二层C/S 结构相比,其程序的可维护性要好得多,但是其他问题并未得到解决。
CS三层架构1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
各层的作用1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
具体的区分方法1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。
而不必管其他操作。
2:业务逻辑层:主要负责对数据层的操作。
也就是说把一些数据层的操作进行组合。
3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
表示层位于最外层(最上层),离用户最近。
用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。
它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。
例如Martin Fowler 在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。
三层架构详解一.三层架构图二.系统各层次职责1.UI(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。
Service Interface侧层用于将业务或数据资源发布为服务(如WebServices)。
2.BL(Business Logic)层的职责是按预定的业务逻辑处理UI层提交的请求。
(1)Business Function 子层负责基本业务功能的实现。
(2)Business Flow 子层负责将Business Function子层提供的多个基本业务功能组织成一个完整的业务流。
(Transaction只能在Business Flow 子层开启。
)3.ResourceAccess层的职责是提供全面的资源访问功能支持,并向上层屏蔽资源的来源。
(1)BEM(Business Entity Manager)子层采用DataAccess子层和ServiceAccess子层来提供业务需要的基础数据/资源访问能力。
(2)DataAccess子层负责从数据库中存取资源,并向BEM子层屏蔽所有的SQL语句以及数据库类型差异。
DB Adapter子层负责屏蔽数据库类型的差异。
ORM子层负责提供对象-关系映射的功能。
Relation子层提供ORM无法完成的基于关系(Relation)的数据访问功能。
(3)ServiceAccess子层用于以SOA的方式从外部系统获取资源。
注:Service Entrance用于简化对Service的访问,它相当于Service的代理,客户直接使用Service Entrance就可以访问系统发布的服务。
Service Entrance为特定的平台(如Java、.Net)提供强类型的接口,内部可能隐藏了复杂的参数类型转换。
(4)ConfigAccess子层用于从配置文件中获取配置object或将配置object保存倒配置文件。
⼀、三层C/S的基本硬件结构 传统的⼆层C/S结构存在以下⼏个局限:1它是单⼀服务器且以局域为中⼼的,所以难以扩展⾄⼤型企业⼴域或Internet;2受限于供应商;3软、硬件的组合及集成能⼒有限;4难以管理⼤量的客户机。
因此,三层C/S结构应运⽽⽣。
三层C/S结构是将应⽤功能分成表⽰层、功能层和数据层三部分。
其解决⽅案是:对这三层进⾏明确分割,并在逻辑上使其独⽴。
原来的数据层作为DBMS已经独⽴出来,所以关键是要将表⽰层和功能层分离成各⾃独⽴的程序,并且还要使这两层间的接⼝简洁明了。
将上述三层功能装载到硬件的⽅法基本上有三种(如图1所⽰)。
其中表⽰层配置在客户机中,⽽数据层配置在服务器中。
⼀般情况是只将表⽰层配置在客户机中,如图1(1)或图1(2)所⽰。
如果像图1(3)所⽰的那样连功能层也放在客户机中,与⼆层C/S结构相⽐,其程序的可维护性要好得多,但是其他问题并未得到解决。
客户机的负荷太重,其业务处理所需的数据要从服务器传给客户机,所以系统的性能容易变坏。
如果将功能层和数据层分别放在不同的服务器中(如图1(2)所⽰),则服务器和服务器之间也要进⾏数据传送。
但是,由于在这种形态中三层是分别放在各⾃不同的硬件系统上的,所以灵活性很⾼,能够适应客户机数⽬的增加和处理负荷的变动。
例如,在追加新业务处理时,可以相应增加装载功能层的服务器。
因此,系统规模越⼤这种形态的优点就越显著。
值得注意的是:三层C/S结构各层间的通信效率若不⾼,即使分配给各层的硬件能⼒很强,其作为整体来说也达不到所要求的性能。
此外,设计时必须慎重考虑三层间的通信⽅法、通信频度及数据量。
这和提⾼各层的独⽴性⼀样是三层C/S结构的关键问题。
MVC是指Model模型,View视图和Control控制器,也就是业务逻辑,界面和用户输入,这样划分系统比较清晰,这是设计人员要考虑的事。
什么是C/S结构。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
而且代价高,效率低。
如我院使用的上海超兰公司“案件统计”管理软件就是典型的C/S体系结构管理软件。
什么是B/S结构。
B/S(Browser/Server)结构即浏览器和服务器结构。
它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。
三层CSBS架构简易知识三层CS架构指的是客户端-服务器架构,其中包含三个层次:展示层、业务逻辑层和数据访问层。
这种架构将整个系统的功能分层,使得各个层次之间的关注点分离,便于系统的维护和扩展。
展示层(Client Tier)是用户直接与系统进行交互的界面,可以是桌面应用程序、移动应用程序或Web应用程序。
展示层向用户展示数据和功能,并接收用户的输入。
在三层架构中,展示层的职责主要是处理用户界面逻辑,将用户请求发送给业务逻辑层,并将业务逻辑层返回的结果显示给用户。
业务逻辑层(Business Logic Tier)是整个系统的核心,负责处理展示层发送过来的请求,进行业务处理并返回结果给展示层。
业务逻辑层包含了系统的业务逻辑,可以调用数据访问层进行数据的增删改查操作,也可以调用其他系统或服务进行协作。
业务逻辑层的职责是处理业务逻辑,保证系统的正确性和可靠性。
数据访问层(Data Access Tier)是负责与数据库进行交互的层次。
数据访问层封装了与数据库的交互细节,提供统一的接口给业务逻辑层进行数据的操作。
数据访问层主要包括数据访问对象(DAO)和数据库连接管理组件。
数据访问层的职责是处理数据的存储和获取,提供高效可靠的数据访问接口。
相对于三层CS架构,BS架构指的是浏览器-服务器架构,其中包含两个层次:前端层和后端层。
这种架构将系统的功能分布在客户端和服务器端,使得用户可以通过浏览器访问应用程序,无需安装任何软件。
前端层(Frontend Layer)是用户直接与系统进行交互的界面,一般使用HTML、CSS、JavaScript等前端技术进行开发。
前端层负责显示用户界面,并处理用户的交互行为。
前端层将用户的请求发送给后端层,并将后端层返回的结果显示给用户。
前端层的职责是处理用户界面逻辑,提供友好的用户体验。
后端层(Backend Layer)是整个系统的核心,负责处理前端层发送过来的请求,进行业务处理并返回结果给前端层。
delphi 三层CS架构一步步建立的简单例子所谓三层:(1) 客户端(2) 服务器端(3) 数据库在数据访问时,使得客户端必须通过服务器来访问数据库。
提高了系统的安全性。
在Delphi中可以使用Socket或者Dcom组件来连接他们相互间的通讯。
本例使用SOCKET组件. DCOM用在局域网, SOCKET用在互联网.环境为windows xp+ delphi 7 + access2000创建过程:1、请用ACCESS2000新建一个数据库database02.mdb.2、请在delphi7执行file-new- application, 新建一个桌面,上面放一个label, label.caption =’服务器端已运行….’3、接下来在delphi7执行file --new--other,选择"Multitier"--"Remote datamodule"。
在跳出来的对话框里面输入名称(任意),例如:AppSqlConn。
选择确定,进入remote data module窗口。
界面如下图所示4、加入组件:adodataset,点击connectionstring属性,点击后面的…,进入设定连接窗口。
在选择数据库中选择自己想要使用的数据库database02.mdb。
一般只要地址正确、用户名和密码无误,肯定可以连接通过。
确定。
3、ADODATASET1在commandtext中点击后面的…,啥也不用设定,默认配置;4、ADODATASET1将active属性设置为false。
5、再加入组件:datasetprovider。
设定其dataset属性为上面的adodataset1。
5.1 接着设置datasetprovider1的属性,poallowcommandtext=true,其他的参数默认即可.datasetprovider1的属性如下图所示6、到此服务器端已经设置完成。
精品文档一、单项选择题:1、电子商务解决方案不包括以下哪个效劳?()BA.客户效劳B.资金效劳C.存储效劳D.开发效劳2、电子商务框架的支柱之一有() CA.网络根底设施B.计算机软件C.技术标准D.物流效劳3、电子商务框架的支柱之一有()CA.网络根底设施B.计算机软件C.外部环境的政策法律D.物流效劳4、企业之间的电子商务模式称为()模式。
B5、企业与消费者之间的电子商务模式称为()模式。
A6、在电子商务开展的()阶段,企业、合作伙伴和顾客通过互动交流,在虚拟社区中找到节约本钱、创造价值和解决业务问题的方法。
DB.基于因特网的电子商务C.“E〞概念电子商务拓展D.面向效劳-协同式商务7、以下关于RFID技术的描述中,不正确的选项是()DA.识别过程无须人工干预B.可以识别多个标签C.是把天线和IC封装到塑料基片上的新型无源电子卡片、D.信号穿透能力高,不易受到环境因素的影响8、在以下关于RFID与条码之间的特性比拟中,不正确的选项是。
()A条码可携带的数据量是可变动的的本钱较高技术中可以一次读取多个标签采用RFID技术,不需要考虑外表是否污损。
9、以下属于客户端脚本语言的是()C。
1欢送下载10、HTML语言中,标题字体的标记是()AA.<title>B.<br>C.<pre>D.<hx>11、HTML语言中,文档首部的标记是()CA.<title>B.<body>C.<head>D.<hx>12、以下说法不正确的选项是()B文档不区分标签名称大小写是一种所见即所得的文本标记语言把信息的内容描述和显示混合在一起,造成了内容描述的不精确性文档包含定义文档内容的文本和定义文档结构及外观的标签13、以下说法正确的选项是()B脚本语言程序需要编译效劳器端脚本是能够在效劳器端执行的脚本程序能够独立运行与Jscript 语法非常相似,根本没有差异14、以下说法不正确的选项是( )C是一种面向对象的程序语言局限于微软的操作系统平台是在客户端运行的脚本语言中包括了六种内置对象15、在HTML文档头部中嵌入JavaScript ,应该使用的标记是( )BA.<Body></Body> B.<Script></Script>C.<Head></Head> D.<Js></Js>16、EDI工作系统主要包含三个方面的内容是()AA.数据标准化、EDI软件和硬件B.计算机、调制解调器和通信网络C.数据标准化、EDI软硬件和互联网D.数据标准化、EDI软硬件和通信网络17、映射这个过程是处在EDI数据处理流程的哪一阶段()AA.生成EDI平面文件;B.翻译生成EDI标准格式文件;C.通信;文件的接收和处理。
基于XML的三层CS模型.txt心脏是一座有两间卧室的房子,一间住着痛苦,一间住着快乐。
人不能笑得太响,否则会吵醒隔壁的痛苦。
基于XML的三层C/S模型[日期:2005-08-12] 来源:作者: [字体:大中小]基于XML的三层C/S模型华中科技大学电信系邓东华杨宗凯乐春晖摘要可扩展标志语言(简称XML)在实现信息标准化、信息的交流与共享上有其独特的技术优势,因此它受到了广泛的重视。
全文首先提出了基于XML的三层Client/Server模型;然后对其从数据获取、传输至显示以及外部处理的应用进行分析;接着以图书资料管理系统为例,说明了其具体的实现;最后对基于XML的三层C/S模型在信息标准化、数据处理等方面的应用优势进行了总结。
关键词XML,Client/Server模型三层结构模型1.问题的提出可扩展的标记语言(Extensible Markup Language,缩写为XML)是SGML (Standard Generalized Markup Language,标准通用标记语言)的一个子集,是简化的SGML。
它是互联网联合组织(W3C)创建一组规范,以便于软件开发人员和内容创作者在网页上组织信息,其目的不仅在于满足不断增长的网络应用需求,而且也在于确保在通过网络进行交互合作时,具有良好的可靠性与互操作性。
随着Web技术、分布式对象技术两者的有机结合,传统的Client/Server主从结构逐渐向灵活的多级分布式Web计算模型进行着演变。
多级分布式Web体系结构可划分为三层:表示层(客户机层)、功能层(应用服务器层)、数据层(数据库服务器层)。
而由于XML可以自定义文件类型,有利于信息的表达和结构化组织,而且可以以一致的方式格式化和传送数据,若将其运用到三层Client/Server模型中,必将产生很大的网络应用优势。
于是也就引出了本文讨论的问题--基于XML的三层C/S模型。
2.基于XML的三层C/S模型从网络体系结构各层次上看,基于XML的三层C/S模型具体实现的功能概括如下:数据层--实现数据的集成,XML数据产生于多种数据源,但都以统一的XML格式表达传输。
功能层--实现数据的发送与处理,应用服务器通过HTTP交换数据,通过DOM处理XML数据。
表示层--实现数据的显示,XML数据的可以有多种表现形式,而且可以为外部直接访问、编辑或转换,也可被其他系统所用。
基于XML的三层Client/Server模型的应用结构如图一所示:在基于XML的三层C/S模型中把XML作为一种结构化信息交换的表示方法,负责所有与数据源的通信,根据最终用户的要求,聚集和组织从多个远程数据库服务器上获取数据,并用XML 形式交互式的把数据源返回的消息传递给客户机。
以下是对基于XML的三层C/S模型应用过程的分析:2.1从数据层获取数据生成XML文档由于XML能够使不同来源的结构化的数据很容易的结合在一起,所以通过XML,可以在中间层服务器上对从后端数据库和其它应用处来的数据进行集成。
然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。
虽然每个数据库描述数据都是不同的,但XML可以自己定义文件标签,例如:通过XML,图书管理资料就可以很容易以标准的方式按照书名、作者、图书简介或其他的标准进行分类。
2.2 XML数据的发送与刷新利用XML开放的、基于文本的格式,可以将它通过HTTP像HTML一样传送。
同时,中间层应用服务器将支持XML更新功能,将数据服务器上数据的变化及时地传递给客户,反之亦然。
因此,中间层能够从客户端得到更新的数据,并把数据传送到数据储存服务器上。
2.3 XML数据在表示层的显示XML描述的数据发到表示层后,能够用多种方式显示。
XML定义的数据,其显示与内容是分开的,因此允许对同一数据指定不同的显示方式,使数据更合理地表现出来。
CSS和XSL为数据的显示提供了公布的机制,本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。
如图二所示:HTML描述数据的外观,而XML描述数据本身。
由于XML注重的是内容,其显示要通过XSL(eXtensible Stylesheet Language,可扩展样式语言)或CSS来实现。
XSL是为XML文件定义的一种标识语言,它提供类似但却远远超过CSS的强大功能。
XSL以包含了一套元素集的XML语法规范而定义,该语法规范将被用来把XML文件转换成HTML 文件或XML文档。
一个XSL样式表集合了一系列设计规则以用于将信息从XML文件中汲取出,并将其转换成HTML等其它格式。
XSL凭借其可扩展性能够控制无穷无尽的标签,而控制每个标签的方式也是无穷尽的。
这就给Web提供了高级的布局特性。
2.4 处理和编辑XML数据在基于XML的C/S模型中,不但能够通过XML集合多个数据源的数据,并把数据源数据及时传输给表示层,而且,只要能理解XML数据,就能从客户层处理和编辑中间层的数据,然后通过中间层与数据层之间的数据刷新机制,对数据层数据进行刷新。
运用XML解析器能够读入一串XML数据,经过处理,产生一棵结构树,并且使用DOM把所有数据元素作为对象。
解析器或者用脚本把数据进行进一步的处理,或者把数据移交给另外的应用软件或对象进行进一步的处理。
DOM实际上是一个应用编程接口(API),用来定义一种标准方法。
通过这种方法,能够处理XML结构树的元素。
对象模式控制着使用者如何同结构树交流,并且把所有树的元素作为对象暴露出来。
DOM用扩展方式支持名域、数据类型、查询和XSL转化。
3. 基于XML的三层C/S模型的应用实例下面具体介绍如何实现基于XML的三层C/S模型,以我们做所过的三层C/S 模式的图书资料管理为例,它是基于XML表达、传输与处理的,其详细实现如下:3.1 获取数据生成XML文档中间层通过XML获取数据源数据,生成XML文档,其中每一的书目信息包括:书名、作者、图书简介、出版日期。
下面所列的就是获取数据源的一段典型例程。
<%@ LANGUAGE=VBScript %><? XML VERSION="1.0" encoding="GB2312" ?><图书资料管理><%Set Connection=Server.CreateObject("ADODB.Connection")Connection.OpenSet ItemRecordset =Connection.Execute("select * from item ")Do while Not ItemRecordset.EOF%>`<书目><书名><%= ItemRecordset("书名") %></书名><作者><%= ItemRecordset("作者") %></作者><图书简介><%= ItemRecordset("图书简介") %></图书简介><出版日期><%= ItemRecordset("出版日期") %></出版日期></书目><%ItemRecordset.MoveNextLoop%></图书资料管理>3.2 XML文档通过HTTP从应用服务器传送到客户机层,并且支持XML更新功能,使得中间层或数据服务器上数据的变化可以传递给客户。
3.3 XML数据的在表示层(客户机层)的表达发送到客户端的数据(图书资料管理数据),可以根据用户对象及其不同的应用要求有不同的显示形式。
如下所示的XSL样式表,就是一个显示示例,将生成一个HTML文档,包括一个表格,其中的一行就为一个"书目"元素。
<xsl:template match="/"><HTML><HEAD><TITLE>图书资料管理</TITLE></HEAD><BODY><TABLE><xsl:for-each select="图书资料管理"><TR><xsl:for-each select="书目"><TD><xsl:process-children/></TD></xsl:for-each></TR></xsl:for-each></TABLE></BODY></HTML></xsl:template>3.4 编辑、处理数据的实现只要理解了中间层XML文档的数据,就能从任何地方处理和编辑数据(图书资料管理数据)。
如下例所示,LoadDocument程序打开XML文档,然后调用另一个程序DisplayNode,它用来显示文档的结构。
LoadDocument传递给正在打开的XML文档的ChildNodes属性一个引用作为它的参数,同时传递一个整数用来标示开始显示的层次级别。
代码利用参数来格式化在Visual Basic文档结构显示窗口中的文本。
DisplayNode属性的函数会遍历文档寻找需要的NODE_TEXT节点类型串,一旦代码找到一个NODE_TEXT的节点,它会利用NodeValue属性来获得相应的文本串。
另外,当前节点的ParentNode属性指向一个元素类型的节点。
元素节点实现了一个NodeName属性,Public Sub LoadDocument()Dim xDoc As MSXML.DOMDocumentSet xDoc = New MSXML.DOMDocumentxDoc.validateOnParse = FalseIf xDoc.Load("C:\My Documents\sample.xml") ThenDisplayNode xDoc.childNodes, 0Else' The document failed to load.End IfEnd SubPublic Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _ByVal Indent As Integer)Dim xNode As MSXML.IXMLDOMNodeIndent = Indent + 2For Each xNode In NodesIf xNode.nodeType = NODE_TEXT ThenDebug.Print Space$(Indent) & xNode.parentNode.nodeName & _":" & xNode.nodeValueEnd IfIf xNode.hasChildNodes ThenDisplayNode xNode.childNodes, IndentEnd IfNext xNodeEnd Sub4.总结在基于XML的三层C/S模型中,中间层一次性从远程数据库中获取满足客户需求的信息,生成相应的XML文档,以后中间层就不需要再与远程数据库进行交互了,即与远程数据库的连接也就终止了。