十万火急,有一个页面的数据,要按到地区,年龄等,数据进行分类排序,不能为每种排序做一个静态页,那样太慢了,现在是用javascript操作xml 当需要排序的时候,就用js去操作,并输出,不需要再去访问服务器

解决方案 »

  1.   

    可以用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你就可以借签了.
      

  2.   

    送佛送到西, 把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>
      

  3.   

    xsl 是怎么来是需要自己编写吗? 我的xml是数据库中的一张表
      

  4.   

    xslt当然要自己写了.
    当然,xslt和xml都不是要求非要存为文件的.可以是字串,或是变量.比如:var xmlSTR="<root>aaa</root>";
    xmlDoc.loadXML(xmlSTR);//这里用loadxml方法将符合xml规范的字串加载至xml文档. 同理加载xsl时也可以用loadxml方法,注意是loadXML ,js里区分大小写.
      

  5.   

    可是我不会写xlsk啊,这个项目有等着要呢,大家帮帮我
      

  6.   

    请问楼上的大哥,还有一个致命有问题也就是要分页,xml中的数据不一次显示出来,一次只显示一些,分页显示,这个怎么办啊xsl 一次是把全部显示出来的
      

  7.   

    关于这个问题,以前讨论过很多了.http://topic.csdn.net/u/20071120/14/b2257915-408f-4452-9379-8d2b48b4f9a6.html
    http://topic.csdn.net/u/20071119/14/0209dba4-7701-4886-94e6-ca00d9eaf46a.html
    直接拿纯xslt按不同的字段分页排序,是比较难办的.如果拿xmldom配合xslt的话,还是可以的. 那就是在dom里动态改变xslt文档对象的内容.如果你的xml是从数据库生成的,建议你最好的做法是,每次只取当前分页所需要的数据生成xml文档.
      

  8.   

    如果不是,
    那么建议你在dom里自己写算法分页吧.