查询功用是我们在网站上见过的最广泛也是最经常使用的一个功用模块了。以往的信息查询都是连接到数据库的,每一次点击都必须要背景数据库的支撑。但是许多状况下用户每每只针对某一部份的数据举行操纵,如许不只效劳器的累赘加重,而且严峻的影响用户阅读的速率。
针对这类状况我们须要将用户须要的某一部份数据以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_ID>1</blue_ID> <blue_name>Sailflying</blue_name> <blue_text>一个简朴的查询</blue_text> <blue_time>2002-1-11 17:35:33</blue_time> <blue_class>XML专题</blue_class> </team> <team> <blue_ID>2</blue_ID> <blue_name>flyingbird</blue_name> <blue_text>嫁给你,是要你疼的</blue_text> <blue_time>2001-09-06 12:45:51</blue_time> <blue_class>注水英华</blue_class> </team> <team> <blue_ID>3</blue_ID> <blue_name>苛子</blue_name> <blue_text>正则表达式在UBB论坛中的运用</blue_text> <blue_time>2001-11-23 21:02:16</blue_time> <blue_class>Web 编程英华</blue_class> </team> <team> <blue_ID>4</blue_ID> <blue_name>太乙郎</blue_name> <blue_text>岁终典范分舵聚首完整手册 v0.1</blue_text> <blue_time>2000-12-08 10:22:48</blue_time> <blue_class>论坛注水区</blue_class> </team> <team> <blue_ID>5</blue_ID> <blue_name>mmkk</blue_name> <blue_text>asp错误信息总汇</blue_text> <blue_time>2001-10-13 16:39:05</blue_time> <blue_class>javascript剧本</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="/"> <html> <head> <title> XML卷之实战锦囊(2):动态查询</title> <style> body,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; } </style> <script> function 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> </head> <body> <p align="center"><span>XML卷之实战锦囊(2):动态查询</span></p> <p id="Layer1" name="Layer1"> <xsl:apply-templates select="BlueIdea" /> </p> <hr size="1" width="500" /> <table align="center" cellpadding="0" cellspacing="0" border="0" > <tr> <td> <span >请输入挑选前提 : </span> blue_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:template> <xsl:template match="BlueIdea"> <table width="500" border="1" align="center" cellpadding="1" cellspacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD"> <tr bgcolor="#FFCC99" align="center"> <td>编号</td> <td>姓名</td> <td>主题</td> <td>宣布时刻</td> <td>归类</td> </tr> <xsl:apply-templates select="team" order-by="blue_ID"/> </table> </xsl:template> <xsl: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:template> <xsl:template match="blue_ID"> <td bgcolor="#eeeeee"> <xsl:value-of /> </td> </xsl:template> <xsl:template match="blue_name"> <td> <xsl:value-of /> </td> </xsl:template> <xsl:template match="blue_text"> <td> <xsl:value-of /> </td> </xsl:template> <xsl:template match="blue_time"> <td> <xsl:value-of /> </td> </xsl:template> <xsl:template match="blue_class"> <td> <xsl:value-of /> </td> </xsl:template> </xsl:stylesheet>
解说:
1)search.xml 是数据文件,置信人人都不会有题目。
2)search.xsl 是格式文件,有几个处所要注重。
(1)剧本中:
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],但你在做的时刻能够就会变动。
那末你就一定要盘算正确可错不得哦,不然就找到别家去了!
我供应一个经常使用的要领:在代码里你能够用轮回来推断是不是为你须要的节点。
别的说一点:
XML对大小写的请求极为严厉。所以你的誊写不范例的话,它可是会伤风的呀!
以上就是 XML实战秘笈第二卷:动态查询的细致内容,更多请关注ki4网别的相干文章!