我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp安全/XML > 使用xsl筛选记录
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

使用xsl筛选记录 

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-22

最近使用xml DataIsland配合javascript 将标准的html表格TABLE扩展成了一个类似windows下的MSFlexGrid一样的具有丰富客户端行为的网格,在更新数据时,为了减少提交上传的xml文件的大小,便将原先绑定的数据集添加了一个标记节点<RecordFlag>,值只有三种NEW,UPDATE,DEL,分别用来表示其父节点是新增的,还是修改过的,或者是删除过的,并且在通过xmlhttp上传之前,将所有添加了<RecordFlag>的纪录筛选出来。在处理这个筛选的过程中,我先使用了javascript模拟了一个筛选算法,但是在数据岛数据很大时,筛选就很慢,于是左思右想,配合高人指点,使用xsl来处理了这个数据岛,用很快的速度就实现了大量数据的筛选过程。
我的xml结构是这样的
&lt;root&gt;
&lt;record&gt;
&lt;field1&gt;...&lt;/field1&gt;
&lt;field2&gt;...&lt;/field2&gt;
&lt;field3&gt;...&lt;/field3&gt;
...
&lt;fieldn&gt;...&lt;/fieldn&gt;
&lt;record&gt;
...
&lt;record&gt;
&lt;field1&gt;...&lt;/field1&gt;
&lt;field2&gt;...&lt;/field2&gt;
&lt;field3&gt;...&lt;/field3&gt;
...
&lt;fieldn&gt;...&lt;/fieldn&gt;
&lt;RecordFlag&gt;...&lt;/RecordFlag&gt;
&lt;!--做了手脚的纪录节点--&gt;
&lt;record&gt;
...
&lt;/root&gt;
xsl文件如下,名称为“select.xsl“:
&lt;?xml version="1.0"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
&lt;xsl:output method = "xml" omit-xml-declaration = "yes" indent = "yes"/&gt;
&lt;xsl:template match="node()"&gt;
&lt;xsl:copy&gt;
&lt;xsl:for-each select="..."&gt;
&lt;!--这里就是对应每个记录的节点名称,这里可以为record--&gt;
&lt;xsl:if test="RecordFlag"&gt;
&lt;!--这里就是要筛选出来的标记节点名称,就是RecordFlag--&gt;
&lt;xsl:copy-of select="."/&gt;
&lt;/xsl:if&gt;
&lt;/xsl:for-each&gt;
&lt;/xsl:copy&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
通过以下javascript实现了转换:
function getResultSet()
{
var recordset = document.getElementById(you island id)
var xslselect = new ActiveXObject('MSXML2.DOMDocument');
xslselect.async = false;
xslselect.load('select.xsl');
var resultset = new ActiveXObject('MSXML2.DOMDocument');
resultset.loadXML(recordset.xml)
//由于Island在浏览器端不支持transformNode()方法,所以得用一
//个MSXML2DOM来转换一下。
resultset.loadXML(resultset.transformNode(resultset));
return resultset;
}




文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。