基于XSLT的动态搜索技术研究与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:chenming000
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:利用XSLT将XML文档转换成格式化过的HTML代码的方法的提出,避免了Ajax中使用JavaScipt动态遍历XML节点来创建结果表格所导致创建一个大字符串所引发的种种问题,提高了代码的可维护性,改善了网络性能。
  关键词:动态搜索;Ajax;XSLT
  中图分类号:TP393文献标识码:A 文章编号:1009-3044(2007)04-10991-01
  
  1 引言
  随着信息访问量和传输量的不断加大,传统的Web搜索所采用的同步交互方式显示出越来越明显的问题,大大损失了浏览器端和服务器端的交互性,降低了搜索的用户体验度。利用Ajax通过在服务器端创建一个XML文档,然后在客户端使用JavaScript代码调用XML的DOM方法来遍历XML节点并创建结果表格的做法可以使问题得到改善。但是,该技术的缺陷在于,这个过程需要遍历全部数据并且动态创建表格。如果将来需要修改表格的格式,由于表格很复杂,添加或者减少栏目都可能会引起问题。避免这些问题的方法就是使用XSLT。通过Ajax,可以将XSLT文件和XML文档合并,由XSLT动态生成HTML表格,并显示结果,从而避免手工调用DOM方法的繁琐,也进一步改善了网络性能,提高了搜索用户的体验度。
  
  2 利用XSLT来创建动态搜索
  XSLT(Extensible Stylesheet Transformation Language)是一种用来转换XML文档结构的语言。利用XSLT可以在文件之外创建HTML布局,并且通过将它与XML文档合并的方式来对数据进行格式化,从而由XSLT文件来完成导航XML节点、创建表格、菜单和HTML布局等所有烦琐的工作。利用Ajax技术可以实现从服务器上得到静态或动态的XML文件和XSLT文件,在客户端将它们合并,从而实现创建HTML文档的目的。
  2.1 XSLT文档的创建
  当创建XSLT转换文档的时候,需要声明XML的版本和编码,以及指定XSLT的名字空间。名字空间提供了文档所期望遵循的规则和规范。XSLT名字空间中使用前缀xsl来定义所有的元素,然后设置匹配模式的模版规则,这个模式可以引用整个文档。接下来还要创建显示结果的表格模板。这个过程需要添加table标签,给表格设置一个ID,然后插入表格的表头行,其中包含了显示给用户的列名,以便用户理解用来显示搜索结果的表格中每列包含的信息含义。以一个显示论文列表信息的模板为例来创建一个XSLT文档。内容如下所示:
  定义了表格的头部信息之后,还需要通过遍历源节点集来得到表格中剩余的行。为了完成这个工作,使用for-each循环来对记录进行遍历,以获得存放搜索结果的XML文件中的源树节点,如paperInfo/entry中的节点。当遍历文档树的时候,可以通过value-of来从源树中取出XML元素的值,然后将它添加到转换的输出流中。
  2.2 合并XSLT和XML文档
  创建好XSLT文件以后,接下来是利用JavaScript代码在客户端将XSLT和XML文件进行合并以及利用XSLT将指定的XML文件组织成可视化的表格。这里假设客户端所使用的浏览器为微软的IE。合并及转换XML文档的文件内容如下所示:
  首先,引入了一个send.js文件,用来完成所有确定如何向浏览器发送信息的工作,并将代码隐藏在一个易于使用的封装对象中供合并转换文件使用。然后,声明三个全局变量来保存三个不同的对象。接着,可以通过调用LoadXMLXSLTDoc()函数来完成合并和转换工作。最后,是两次调用send.js文件中的ContentLoader,一次是为了获取XML文档,一次是为了获取XSL文档。在每次调用时,ContentLoader得到URL,然后调用另外一个函数来加载这个文档。onXMLLoad()将返回的XML结果加载到全局变量xmlDoc中,接着调用函数doXSLT()做进一步的处理。onXSLTLoad()将XSL文档加载到全局变量xslDoc中,也会调用函数doXSLT()。在加载两个文档的过程中,需要通过检查变量xmlDoc和xslDoc是否包含各自的文档来确定它们是否加载结束。函数doXSLT()用来判断哪个文档首先加载结束。该函数会被调用两次,分别在XML文档加载完之后和XSL文档加载完之后。第一次调用的时候,如果两个全局变量中有一个设置为null,函数直接退出。下一次调用时,因为两个全局变量都不是null,函数不再退出。两个文档加载完成之后,就执行XSLT转换。
  在IE中实现XSLT转换XML文档之前,需要先判断IE是否支持transformNode()方法,判断的方法是if(window.ActiveXObject){…}。如果浏览器支持这个方法,就调用含有XML数据的全局变量上的transformNode()方法,并将含有XSLT数据的全局变量传递给它。将转换的结果加在结果元素的innerHTML上,这样它就包含了最后格式化了的搜索结果。
  为了实现动态搜索的功能,还需要编写从数据库获取查询结果以及将查询结果组装成XML文件的程序代码,这些工作也完成之后,就可以通过搜索条来实现论文信息的动态搜索功能。在文本框中输入电子商务关键词,单击搜索按钮,搜索结果以表格的形式动态生成,如图1所示:
  图1 Ajax和XSLT动态搜索显示结果
  
  3 结论
  通过使用Ajax和XSLT技术来创建动态搜索,可以将XML文档转换成HTML布局。同时,它对动态生成的XML文档按照基于树的方式来做转换,代替了以往依赖服务器端代码和JavaScript手工解析的过程,提高了网络吞吐量,改善了网络的性能。同时,XSLT转换的代码更加容易维护,更有利于构建具有良好开放性、可重用性和一定的灵活性的搜索系统。
  参考文献:
  [1]梁民,汪伟.基于Ajax技术开发Web应用[J].电脑知识与技术,2006,05.
  [2]方俊.Ajax引擎的设计与应用[J].电脑与信息技术,2006.6,(14,3).
  [3]吴晓丹,王志坚.利用XSLT转换XML文档的应用[J].现代
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:为了解决传统专网可扩展性和可维护性比较差的问题,在ISP的IP城域网中,使用MPLS技术组建VPN,通过PE、CE的配置,实现基于IP城域网的BGP MPLS VPN运营。BGP MPLS VPN具有组网容易、易于扩展和维护等优点,为企业节省了大量的人力、物力和财力。  关键词:BGP MPLS VPN;VRF;RD;RT  中图分类号:TP393 文献标识码:A 文章编号:1009-304
期刊
摘要:设计并实现基于Web的铁路供电段电力作业安全督导系统,利用铁路计算机内部专用网络实现总公司及各供电段电力作业安全督导。  关键词:Web;B/S模式;安全督导  中图分类号:TP315文献标识码:A文章编号:1009-3044(2007)04-10896-02    1 引言  为了适应铁路供电段电力作业劳动安全的现代化分析和管理,借助铁路内部专用网,利用ASP.NET及相关技术己成功开发出
期刊
摘要:虚拟局域网(VLAN)技术改变了传统网络的结构,为计算机网络的不断发展创造了新的条件。本文主要介绍了虚拟局域网(VLAN)技术的概念,并通过具体事例展示了基于第三层交换的VLAN技术在提高校园网络性能上的优越性。  关键词:虚拟局域网;第三层交换;校园网  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10987-02    1 引言  以计算机互联网为核
期刊
摘要:本文介绍了Browser/Server体系结构开发应用软件的特点,提出了三层体系机构的模型,分析了三层体系结构的具体运行程序,最后根据这个模型开发了一个应用实例,并给出了这个实例的部分代码。  关键词:WEB;COM;应用软件;服务器  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-11003-02    1 引言  由于客户服务器两层结构存在灵活性差、升
期刊
摘要:实现Netscape邮件服务的目录管理,邮件服务与目录服务的数据转换,及详细配置情况。  关键词:Netscape Messaging Server;Netscape Directory Server;电子邮件;Domain  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)04-10975-02    1 引言  在信息社会中,拥有一个功能完善、性能优异的电子邮
期刊
摘要:本文用面向对象的思想阐述了俄罗斯方块游戏实现的机制,并通过VC++6.0实现了这个游戏。  关键词:VC++6.0;面向对象的程序设计;俄罗斯方块  中图分类号:TP311.52 文献标识码:A文章编号:1009-3044(2007)04-11012-02    1 引言  本文主要讲解如何使用VC++6.0和面向对象的思想来实现俄罗斯方块的游戏。  游戏的主要思路是:    2 首先定义一
期刊
2007年4月6日,上海易当网络科技有限公司正式宣布,已经同韩国艺堂娱乐产业有限公司(YeDang Online)签署了《ACE Online》的代理协议。根据协议,易当网络将拥有这款3D大型多人在线角色扮演飞行射击游戏在中国大陆地区的独家运营权。  在这款集角色扮演、飞行、射击等多种元素的大型3D网游中,玩家们将体验到前所未有的刺激。再加上新颖的游戏模式、科幻故事背景、超酷的飞行动作和互动性极强
期刊
摘要:校园网络建设中IP地址匮乏是一个十分突出的问题,NAT是解决该问题的一种比较行之有效的技术,本文探讨了NAT技术的原理以及在linux系统中的实现方案。  关键词:NAT;Linux;私有地址;全局地址  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10984-03    1 引言  IP地址的匮乏对于任何一个高校的网络管理员来讲,都应该是一个让人头疼的
期刊
拼音输入法是目前大家使用非常广泛的一种输入法,由于使用简单、门槛低而深得用户喜欢,相比之下,五笔输入法却需要掌握五笔拆分的规则,必须背五笔字根,让很多用户望而却步。也正因为如此,近年来拼音输入法蓬勃发展,2006年,搜狗拼音输入法的横空出世让拼音输入法领域为之一震,而就在最近,谷歌拼音输入法的推出让输入法领域再掀波澜,加上以前用户使用的紫光输入法、拼音加加、微软拼音、智能ABC,一时间,拼音输入法
期刊
摘要:PDF文件格式是国际通用的电子文档交换事实标准,PDF文档可以在各种平台下阅读、编辑、发布。通过实例介绍在C++中用PDFLib开发库创建PDF文档的过程, PDFlib 几乎可以在所有计算机操作系统上运行。  关键词:C++;PDF文档;PDFLib开发库  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)04-11024-02    1 PDF文档简介  PD
期刊