数据排序及如何动态排序

2016-01-29 18:19 8 1 收藏

数据排序及如何动态排序,数据排序及如何动态排序

【 tulaoshi.com - ASP 】

  数据排序及如何动态排序

//Belltree
//http://www.lurer.net/

//初学XML,错误之处多多,各路高手多多指正

在<xsl:for-each select="//item" order-by="text()"及<xsl:apply-templates select="//item"/中都可以看到
order-by属性,该属性可以对选出来的节点按照order-by的值进行排序.

<singer
<titleChristina Aguilera</title
<songs
<item id="0" href="genieinabottle.christina.xml"Genie in a bottle</item
<item id="1" href="whatagirlwants.christina.xml"What a girl wants</item
<item id="2" href="iturntoyou.christina.xml"I turn to you</item
<item id="5" href="soemotional.christina.xml"So emotional</item
<item id="4" href="comeonover.christina.xml"Come on over</item
<item id="3" href="reflection.christina.xml"Reflection</item
<item id="6" href="lovefor.christina.xml"Love for all seasons</item
<item id="7" href="somebody.christina.xml"Somebody's somebody</item
<item id="10" href="puturhands.christina.xml"When you put your hands on me</item
<item id="9" href="blessed.christina.xml"Blessed</item
<item id="8" href="lovefindaway.christina.xml"Love will find a way</item
<item id="11" href="obvious.christina.xml"obvious</item
</songs
</singer

在这个例子中,如果我们需要一个按照歌名进行排序的列表,可以使用如下XSL:

<xsl:for-each select="//item" order-by="text()"
<a<xsl:attribute name="href"<xsl:value-of select="@href"/</xsl:attribute<xsl:value-of /</a
<br/
</xsl:for-each

这样就按照每个item节点的值进行了排序,还可以使用id属性来排序,只要将order-by="text()"改为oder-by="@id"即可.

但如果我们需要让用户自己选择如何排序,甚至是不排序,即按照原始顺序.

这时就该让script和XML DOM上场了,在DOM中,有一系列的Methods和Attributes让你设置,你可以重新生成一棵树,我们就可
以利用这些东东将order-by属性的值改掉,然后再重新利用这个XSL节点对你需要的节点数据重新生成一棵树,这棵树是排序
了的,注意,order-by的值可不是原来的了,是你的新值.你甚至可以将order-by属性从XSL节点属性中去掉,这样生成的树就
是按照原始顺序了.

看看相应的XML DOM Methods:
selectSingleNode   返回单个节点
setAttribute       设置属性值,如果属性不存在,创建它并设置值
removeAttribute    移去属性
transformNode      使用相应的XSL stylesheet对该节点及其字节点进行处理后,返回一个结果树

最开始,我们要将XSL中的xsl:for-each节点选出来,并将它赋予一个变量s,好对它进行处理:
var s = document.XSLDocument.selectSingleNode("//xsl:for-each")

然后,对它的属性order-by的值从新设置:
setAttribute("order-by",key);  //key为一个变量,可以为id,text()

或者,将其删去:
removeAttribute("order-by");

哈哈,很简单吧

我们现在来看看源树中需要排序的部分,是singer/songs节点中的每个item节点,不需要选择整个树,只要singer/songs就可
以了

var xmldoc = document.XMLDocument.selectSingleNode("singer/songs");

将整个XSL树应用该节点:

divItems.innerHTML = xmldoc.transformNode(document.XSLDocument);  //错误来了

是不是要对这个节点应用整个XSL树呢?当然不必,这样也会带来错误,应为结果必须显示在某个地方,我们回头来看一看:
<xsl:template match="/"
<div id="divItems"
<div id="in"

<xsl:for-each select="//item" order-by="id"
<a<xsl:attribute name="href"<xsl:value-of select="@href"/

来源:http://www.tulaoshi.com/n/20160129/1505303.html

延伸阅读
标签: excel
excel2010数据排序方法   Excel2010对表格中的学生成绩进行降序排列如下图:     排序方法: 1.点击菜单栏的数据,如下图: 2.鼠标点击一下成绩表中任意一个单元格 3.点击功能区的排序 4.选中对话框的数据包含标题 5.点确定,即排名结束,结果如下: excel2010页边距怎么...
标签: excel
Excel数据排序怎么操作?   Excel数据表格中如何将姓名信息 &nbswww.Tulaoshi.tulaoshi.comcomp; Excel数据格式怎么设置?  
标签: excel
如何不改变Excel数据进行排序   1、编辑好的工作簿。 2、在E2的单元格中输入=RANK。 3、在输入(D2,$D$2:SD$21,0)后按住Enter键。 4、其中,0代表的是按照降序排序列表,1则代表的是按照升序排列列表。 5、选中E2单元格,用填充柄填充其他的单元格。 6、这样,就可以在tulaoShi.com不改变数据...
标签: 办公软件
一、数值排序 1.RANK函数 RANK函数是Excel计算序数的主要工具,它的语法为:RANK (number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元格区域的绝对引用, order是用来说明排序方式的数字(如果order为零或省略,则以降序方式给出结果,反之按升序方式)。 例如E2、E3、E...
标签: SQLServer
        今天,当你需要对一个没有排序ID的表进行排序,并且想给每一行数据都给一个序号。这相当于很多人问到的,如何在一个视图中为每一行增加一个自动增长的“ID”号。你可以这样写: Select a.Badge,Count(a.Badge) as xorder        From cPayroll a , cPayroll b &...

经验教程

659

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部