使用xsl筛选记录[转载]

转载 2006年06月03日 17:36:00
最近使用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;
}

使用xsl筛选记录

最近使用xml DataIsland配合javascript 将标准的html表格TABLE扩展成了一个类似windows下的MSFlexGrid一样的具有丰富客户端行为的网格,在更新数据时,为了减少...
  • dandantree
  • dandantree
  • 2004年08月30日 11:33
  • 490

从XSL参数中取值

出处:https://msdn.microsoft.com/zh-cn/library/ms950787.aspx 从 XSL 参数中取值 发布日期 : 4/1/2004 | 更新日期 : 4...
  • yintianqin
  • yintianqin
  • 2017年02月09日 10:25
  • 713

XSL变量的使用

XSLT 元素 定义和用法 元素用于声明局部或全局的变量。 注释:如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。 注释:一旦您设置了变...
  • xlyrh
  • xlyrh
  • 2016年07月31日 17:49
  • 1304

<xsl:with-param>&<xsl:param>

一、 相当于函数, 是函数的参数。  这个参数的值( ...xpath... " />)只能在对应的函数()里面使用(一个函数可以有多个参数)。 根模板-->     模板tim...
  • yintianqin
  • yintianqin
  • 2017年01月22日 09:08
  • 546

用xsl和xml加js处理

把下面的文本保存成main.xsl------------------------------------  xmlns:xsl="http://www.w3.org/1999/XSL/Transfo...
  • gzxiaohao
  • gzxiaohao
  • 2006年04月30日 18:38
  • 2373

xsl:script与函数调用输出xsl:eval应用示例

 本文来源于我在csdn社区的一个帖。http://community.csdn.net/Expert/TopicView.asp?id=5299556-)函数说明xsl:script xsl的扩展脚...
  • wqf363
  • wqf363
  • 2007年01月18日 19:32
  • 3330

使用XSL的select 有选择的显示数据

1.XML文档   Windows程序设计      好孩子   haohaizi@163.com      2000年5月1日  南京出版社    49.00元    深入潜出XML      老虎...
  • Cpp_Java_Man
  • Cpp_Java_Man
  • 2006年05月29日 23:23
  • 3647

在 XSLT 中用递归实现循环

原文地址:https://www.ibm.com/developerworks/cn/xml/x-tiploop.html 扩展 XSLT 能力的技术 XSLT 是一种函数式编程语...
  • u010523770
  • u010523770
  • 2017年05月04日 22:41
  • 411

xsl与xpath

XPath & XSL XML是一个完整的树状结构文档,从根节点到子节点一层一层往下。这有点类似于操作系统的文件的管理,从根目录到子目录,一层一层往下也形成树状结构(或许和Linux或是Unix相比较...
  • woaizhoulichao1
  • woaizhoulichao1
  • 2010年11月24日 15:30
  • 2766

XSLT xsl:attribute 元素

定义和用法 元素用于向元素添加属性。注释: 元素会替换名称相同的已有属性。语法 属性属性值描述nameattributename必需。规定属性的名称。namespaceURI可选。为属性定义命名空间...
  • xupeihuagudulei
  • xupeihuagudulei
  • 2010年03月26日 21:21
  • 2083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用xsl筛选记录[转载]
举报原因:
原因补充:

(最多只允许输入30个字)