XML卷之实战锦囊(2)动态查询

2016-02-19 17:17 9 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的XML卷之实战锦囊(2)动态查询,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - Web开发 】

  动机: 

  查询功能是我们在网站上见过的最普遍也是最常用的一个功能模块了。以往的信息查询都是连接到数据库的,每一次点击都必须要后台数据库的支持。然而很多情况下用户往往只针对某一部分的数据进行操作,这样不但服务器的负担加重,而且严重的影响用户浏览的速度。 

  针对这种情况我们需要将用户需要的某一部分数据以XML的方式传递到客户端,用户对这些数据可以很方便的进行操作。既方便了用户,又减轻了服务器数据库的负担。何乐而不为呢!而且这项功能可以通用到其他众多模块,因此添加了这个动态查询功能。 

  材料: 

  XML卷之动态查询有2个文件:search.xml  和 search.xsl 

  作用: 

  在不刷新页面的情况下对数据进行过滤筛选,有效的提高数据查询的功能。 

  效果:

  代码: 

  search.xml 

?xml version="1.0" encoding="gb2312" ??xml-stylesheet type="text/xsl" href="search.xsl" ?BlueIdea team  blue_ID1/blue_ID  blue_nameSailflying/blue_name  blue_text一个简单的查询/blue_text  blue_time2002-1-11 17:35:33/blue_time  blue_classXML专题/blue_class /team team  blue_ID2/blue_ID  blue_nameflyingbird/blue_name  blue_text嫁给你,是要你疼的/blue_text  blue_time2001-09-06 12:45:51/blue_time  blue_class灌水精华/blue_class /team team  blue_ID3/blue_ID  blue_name苛子/blue_name  blue_text正则表达式在UBB论坛中的应用/blue_text  blue_time2001-11-23 21:02:16/blue_time  blue_classWeb 编程精华/blue_class /team team  blue_ID4/blue_ID  blue_name太乙郎/blue_name  blue_text年末经典分舵聚会完全手册 v0.1/blue_text  blue_time2000-12-08 10:22:48/blue_time  blue_class论坛灌水区/blue_class /team team  blue_ID5/blue_ID  blue_namemmkk/blue_name  blue_textAsp错误信息总汇/blue_text  blue_time2001-10-13 16:39:05/blue_time  blue_classjavascript脚本/blue_class /team/BlueIdea

  search.xsl 

  

?xml version="1.0" encoding="gb2312" ?xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"xsl:template match="/"htmlheadtitle XML卷之实战锦囊(2):动态查询/titlestylebody,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ font: 12px "宋体", "Arial", "Times New Roman"; } table { font-size: 12px; border: 0px double; border-color: #99CC99 #99CC99 #CCCCCC #CCCCCC; cellpadding:3;cellspacing:3; bgcolor:#eeeeee; text-decoration: blink} span { font-size: 12px; color: red; }/stylescriptfunction searchtext(x) {stylesheet=document.XSLDocument;source=document.XMLDocument;sortField=document.XSLDocument.selectNodes("//@select");if (x!=""){sortField[1].value="team[blue_ID='"+x+"']";Layer1.innerHTML=source.documentElement.transformNode(stylesheet);}else {alert("请输入筛选条件!");} }/script/headbodyp align="center"spanXML卷之实战锦囊(2):动态查询/span/pdiv id="Layer1" name="Layer1"xsl:apply-templates select="BlueIdea" //divhr size="1" width="500" /table align="center" cellpadding="0" cellspacing="0" border="0" trtdspan 请输入筛选条件 : /spanblue_ID= input type="text" name="searchtext" size="1" maxlength="1" /input type="button" class="button" onClick="searchtext(document.all.searchtext.value)" value="Search" name="button" //td/tr/table/body/html/xsl:templatexsl:template match="BlueIdea"table width="500" border="1" align="center" cellpadding="1" cellspacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD"tr bgcolor="#FFCC99" align="center"td编号/tdtd姓名/tdtd主题/tdtd发表时间/tdtd归类/td/trxsl:apply-templates select="team" order-by="blue_ID"//table/xsl:templatexsl:template match="team"tr align="center"xsl:apply-templates select="blue_ID" /xsl:apply-templates select="blue_name" /xsl:apply-templates select="blue_text" /xsl:apply-templates select="blue_time" /xsl:apply-templates select="blue_class" //tr/xsl:templatexsl:template match="blue_ID"td bgcolor="#eeeeee"xsl:value-of //td/xsl:templatexsl:template match="blue_name"tdxsl:value-of //td/xsl:templatexsl:template match="blue_text"tdxsl:value-of //td/xsl:templatexsl:template match="blue_time"tdxsl:value-of //td/xsl:templatexsl:template match="blue_class"tdxsl:value-of //td/xsl:template/xsl:stylesheet

  讲解: 

  1)search.xml 是数据文件,相信大家都不会有问题。

  2)search.xsl 是格式文件,有几个地方要注意。 

  (1)脚本中: 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  sortField=document.XSLDocument.selectNodes("//@select");

  作用是:找到所有属性为select的节点。这个和我在动态排序中说到的sortField=document.XSLDocument.selectSingleNode("//@order-by"); 

  有些不一样了。大家注意这个小小的区别以及各自的功能。 

  sortField[1].value="team[blue_ID='"+x+"']";

  因此sortField[1]就是找到的第二个节点,它对应的节点就是xsl:apply-templates select="team" order-by="blue_ID"/

  参数 x 是文本框中输入的数值。

  我们将select="team" 的搜索条件修改为select="team[blue_ID='x']"作用是:增加判断条件,只有blue_ID的数值等于 x 的XML数据才显示出来。

  当然大家可以丰富判断的条件,我在这里做的简单判断是为了让大家更容易理解。 

  最后通过重新显示Layer1的innerHTML值来显示新的排序内容。

  (2)文本中:

  select="team"在我这里它是 sortField[1],但你在做的时候可能就会更改。

  那么你就一定要计算准确可错不得哦,不然就找到别家去了!

  我提供一个常用的方法:在代码里你可以用循环来判断是否为你需要的节点。 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  另外说一点:

  XML对大小写的要求极其严格。所以你的书写不规范的话,它可是会感冒的呀!

  后记: 

  大家熟悉动态排序和动态查询的完成思路后会发现,其实我们的实现手法很简单。

  就是修改某一个数值,然后重新显示。

  在动态分页的功能中我们依然是按照这个思路去完成的。 

来源:http://www.tulaoshi.com/n/20160219/1614851.html

延伸阅读
标签: Web开发
WordNet 是普林斯顿大学的一个研究项目,目标是建立英语词汇及其词法关系的数据库。这样的工具可以为 XML 语义应用程序建立很好的基础,比如 Uche Ogbuji 在本专栏以前文章中所提到的能识别同义词的搜索的例子。本期文章中他回顾了基本原理,给出了查询 XML 文档格式的 WordNet 2.0 的代码,这是构建更通用的 XML WordNet 应用程序的第一步...
标签: SQLServer
  ********************************************************************* Author:黄山光明顶 mail:leimin@jxfw.com version:1.0.0 date:2004-1-30 (如需转载,请注明出处!,如果有问题请发MAIL给我:-)) ************************************************************************    我所讲的一个故事的背景是这样的...
和生活如何查询航班动态   和生活如何查询航班动态?想出行旅游但是不知道航班动态?去机场态麻烦吗?没关系和生活里面就能查询只要你有航班号,现在小编就教小伙伴们和生活如何查询航班动态。 打开和生活,点击下方的然后点击下方的输入航班号。以及下方的出发城市很到达城市及出发时间,最后点击下方的即可。
标签: Web开发
以下为引用的内容: html head title不刷新页面查询的方法/title meta http-equiv="Content-Type" content="text/html; charset=gb2312" /head script language="javascript" !--初始化,将数据岛中数据装入列表框中-- function loadinsel() { var employeeid,employeelastname; //分别存放雇员ID和雇员名字 root=document....
相比SQL Server 2000提供的FOR XML查询,SQL Server 2005版本对现有功能增强的基础上增加了不少新功能,最为吸引人的功能包括对Xml数据类型支持、使用PATH模式以及嵌套FOR XML查询支持等,这意味着通过新的FOR XML查询功能可以构造出结构更加灵活的Xml数据。 在SQL Server 2000中FOR XML查询的结果是直接以文本方式返回到客户端,为支...

经验教程

728

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部