如何用javascript操作xml排序输出 十万火急,有一个页面的数据,要按到地区,年龄等,数据进行分类排序,不能为每种排序做一个静态页,那样太慢了,现在是用javascript操作xml 当需要排序的时候,就用js去操作,并输出,不需要再去访问服务器 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用xslt排序输出.随手写了一个给你比如test.xml<?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet type="text/xsl" href="Test.xsl"?><root> <item id="5" name="aa" /> <item id="2" name="bb" /> <item id="7" name="cc" /></root>test.xsl<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <table> <xsl:for-each select="//item"> <xsl:sort order="ascending" select="@id" data-type="number" /> <tr> <td><xsl:value-of select="./@id" /></td><td><xsl:value-of select="./@name" /></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>如果js调用dom的selectNodes方法的话,那么就得自己写算法排了.当然不排除使用 dom的transformnodes方法调用xslt来输出,呵呵.这样,我写的这个xslt你就可以借签了. 送佛送到西, 把js调用transformnode方法利用xslt输出排序的一并给你写了吧,呵呵.资源文件为上一贴子中的test.xml和test.xsl三个文件放在同一个目录下运行即可.test.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>test</TITLE><script type="text/javascript"> function myFun(str) { var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); xmlDoc.async = false; xmlDoc.load("test.xml"); var xslDoc = new ActiveXObject("Msxml2.DOMDocument"); xslDoc.async = false; xslDoc.resolveExternals = false; xslDoc.load("test.xsl"); var sortNode = xslDoc.selectSingleNode("//xsl:sort"); //alert(sortNode.attributes[1].value); //alert(sortNode); sortNode.attributes[1].value = "@" + str; document.getElementById("divContainer").innerHTML = xmlDoc.transformNode(xslDoc); //alert("OK"); }</script></HEAD><BODY><input value="try sort by id" type="button" onclick="myFun('id')" /> <input value="try sort by name" type="button" onclick="myFun('name')" /><div id="divContainer" /></BODY></HTML> xsl 是怎么来是需要自己编写吗? 我的xml是数据库中的一张表 xslt当然要自己写了.当然,xslt和xml都不是要求非要存为文件的.可以是字串,或是变量.比如:var xmlSTR="<root>aaa</root>";xmlDoc.loadXML(xmlSTR);//这里用loadxml方法将符合xml规范的字串加载至xml文档. 同理加载xsl时也可以用loadxml方法,注意是loadXML ,js里区分大小写. 可是我不会写xlsk啊,这个项目有等着要呢,大家帮帮我 请问楼上的大哥,还有一个致命有问题也就是要分页,xml中的数据不一次显示出来,一次只显示一些,分页显示,这个怎么办啊xsl 一次是把全部显示出来的 关于这个问题,以前讨论过很多了.http://topic.csdn.net/u/20071120/14/b2257915-408f-4452-9379-8d2b48b4f9a6.htmlhttp://topic.csdn.net/u/20071119/14/0209dba4-7701-4886-94e6-ca00d9eaf46a.html直接拿纯xslt按不同的字段分页排序,是比较难办的.如果拿xmldom配合xslt的话,还是可以的. 那就是在dom里动态改变xslt文档对象的内容.如果你的xml是从数据库生成的,建议你最好的做法是,每次只取当前分页所需要的数据生成xml文档. 如果不是,那么建议你在dom里自己写算法分页吧. 求多附件上传代码 datagrid编辑查询返回的数据问题 急,如何根据长度截断字符串? 修改了textbox的内容,但得到的还是原来的值,不知道怎么回事? DataGrid显示问提。 请问客户端访问asp.net页面老是要跳出一个登录框 两表连接问题!用DataGrid绑定 求webconfig connectionStrings参数解释 visual studio 2010 的msdn中为什么关于asp.net的内容没有本地安装?只能在线查看 在VB.NET里,如何实现发送EMAIL session过期问题。急等! vb.net中,如何实现数据控件datalist的2层嵌套
<?xml-stylesheet type="text/xsl" href="Test.xsl"?>
<root>
<item id="5" name="aa" />
<item id="2" name="bb" />
<item id="7" name="cc" />
</root>
test.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table>
<xsl:for-each select="//item">
<xsl:sort order="ascending" select="@id" data-type="number" />
<tr>
<td><xsl:value-of select="./@id" /></td><td><xsl:value-of select="./@name" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
如果js调用dom的selectNodes方法的话,那么就得自己写算法排了.当然不排除使用 dom的transformnodes方法调用xslt来输出,呵呵.
这样,我写的这个xslt你就可以借签了.
<HTML>
<HEAD>
<TITLE>test</TITLE>
<script type="text/javascript">
function myFun(str)
{
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = false;
xmlDoc.load("test.xml"); var xslDoc = new ActiveXObject("Msxml2.DOMDocument");
xslDoc.async = false;
xslDoc.resolveExternals = false;
xslDoc.load("test.xsl"); var sortNode = xslDoc.selectSingleNode("//xsl:sort");
//alert(sortNode.attributes[1].value);
//alert(sortNode);
sortNode.attributes[1].value = "@" + str;
document.getElementById("divContainer").innerHTML = xmlDoc.transformNode(xslDoc);
//alert("OK");
}
</script>
</HEAD><BODY>
<input value="try sort by id" type="button" onclick="myFun('id')" />
<input value="try sort by name" type="button" onclick="myFun('name')" />
<div id="divContainer" />
</BODY>
</HTML>
当然,xslt和xml都不是要求非要存为文件的.可以是字串,或是变量.比如:var xmlSTR="<root>aaa</root>";
xmlDoc.loadXML(xmlSTR);//这里用loadxml方法将符合xml规范的字串加载至xml文档. 同理加载xsl时也可以用loadxml方法,注意是loadXML ,js里区分大小写.
http://topic.csdn.net/u/20071119/14/0209dba4-7701-4886-94e6-ca00d9eaf46a.html
直接拿纯xslt按不同的字段分页排序,是比较难办的.如果拿xmldom配合xslt的话,还是可以的. 那就是在dom里动态改变xslt文档对象的内容.如果你的xml是从数据库生成的,建议你最好的做法是,每次只取当前分页所需要的数据生成xml文档.
那么建议你在dom里自己写算法分页吧.