这段代码如何按照金额来排序?

shysky 2006-01-17 07:42:36
一共两个文件:xml.html 和 style.xsl

问题:
按照金额的排序的时候是按照字符来排,而不是按照数字大小来排,如何解决?

xml.html内容如下
-------------------------------------------

<STYLE>
.header {font:bold 9pt Verdana; cursor:hand; padding:2px; border:solid #CCC;border-width:0px 0px 5px 0px;}
.button {font:9pt; BACKGROUND-COLOR: #FFF;border-width:0px;cursor:hand;}
td{border:solid #CCC;border-width:0px 0px 1px 0px;height:28px;font-size:12px; /** 边框 **/}
th{text-align:left;}
</STYLE>
<script language="vbscript">
Dim pageshowno '页号显示
Dim pageno '总页数
Dim sortvalue '排序的依据

sub sortby(whichFld)
if whichFld<>"" then
'正反排序字段赋值
if sortvalue = "" Then sortvalue=whichFld
if sortvalue = whichFld Then whichFld="-"&whichFld
sortvalue=whichFld

'对不同字段进行排序
set stylesheet = CreateObject("Microsoft.XMLDom")
stylesheet.async = false
stylesheet.load "style.xsl"
set sortNode = stylesheet.selectSingleNode("//@order-by")
sortNode.value = whichFld
set oldXMLDoc = xmldso
set newXMLDoc = CreateObject("Microsoft.XMLDom")
oldXMLDoc.transformNodeToObject stylesheet,newXMLDoc
xmldso.load newXMLDoc
END if
end sub

Function window_onload()
set stylesheet = CreateObject("Microsoft.XMLDom")
stylesheet.async = false
stylesheet.load "style.xsl"
set oldXMLDoc = xmldso
set newXMLDoc = CreateObject("Microsoft.XMLDom")
oldXMLDoc.transformNodeToObject stylesheet,newXMLDoc
xmldso.load newXMLDoc
pageshowno=1

' 显示设定的记录数
count = xmldso.recordset.RecordCount
pageno=CInt(count/Xmltable.dataPageSize)
Modresult=count Mod Xmltable.dataPageSize
if ((Modresult > 0) And (count > Xmltable.dataPageSize)) Then pageno=pageno+1
divCount.innerText = " 共有 "&pageno&" 页 "&count&" 条记录 "
pageShow.innerText = "第"&pageshowno&"页"
END Function




sub btnFirst_onclick()
Xmltable.FirstPage
count = xmldso.recordset.RecordCount
pageshowno=1
pageShow.innerText = "第"&pageshowno&"页"
window.scroll 0,0
end sub


sub btnPrevious_onclick()
xmltable.PreviousPage
pageshowno=pageshowno-1
if (pageshowno <=1) Then pageshowno=1
pageShow.innerText = "第"&pageshowno&"页"
window.scroll 0,0
end sub


sub btnNext_onclick()
xmltable.NextPage
pageshowno=pageshowno+1
if (pageshowno >= pageno) Then pageshowno=pageno
pageShow.innerText = "第"&pageshowno&"页"
window.scroll 0,0
end sub


sub btnLast_onclick()
xmltable.LastPage
pageshowno=pageno
pageShow.innerText = "第"&pageshowno&"页"
window.scroll 0,0
end sub


sub PageSizeChange()
count = xmldso.recordset.RecordCount
pageno=CInt(count/Xmltable.dataPageSize)
Modresult=count Mod Xmltable.dataPageSize
if ((Modresult > 0) And (count > Xmltable.dataPageSize)) Then pageno=pageno+1
divCount.innerText = " 共有 "&pageno&" 页 "&count&" 条记录 "
end sub
</script>
<BODY bgColor=#ffffff leftMargin=20 rightMargin=25>

<xml id="xmldso" >
<passengerlist xmlns:dt="urn:schemas-microsoft-com:datatypes" xml:space="preserve">

<passenger>
<p1>20060117010460</p1>
<p2> 成功</p2>
<p3>1</p3>
<p4> 2006-1-17</p4>
<p6> 82.2.233.15</p6>
<p10>successfully </p10>
</passenger>

<passenger>
<p1>20060117029780</p1>
<p2> 成功</p2>
<p3>2</p3>
<p4> 2006-1-17</p4>
<p6> 222.33.0.117</p6>
<p10>successfully </p10>
</passenger>

<passenger>
<p1>20060117394759</p1>
<p2> 成功</p2>
<p3>3</p3>
<p4> 2006-1-17</p4>
<p6> 218.83.110.45</p6>
<p10>successfully </p10>
</passenger>

<passenger>
<p1>20060117029769</p1>
<p2> 成功</p2>
<p3>4</p3>
<p4> 2006-1-17</p4>
<p6> 222.33.0.117</p6>
<p10>successfully </p10>
</passenger>

<passenger>
<p1>20060117102520</p1>
<p2> 成功</p2>
<p3>40</p3>
<p4> 2006-1-17</p4>
<p6> 221.224.54.198</p6>
<p10>successfully </p10>
</passenger>

<passenger>
<p1>20060117000465</p1>
<p2> 成功</p2>
<p3>5</p3>
<p4> 2006-1-17</p4>
<p6> 220.228.149.46</p6>
<p10> successfully </p10>
</passenger>

<passenger>
<p1>20060117394758</p1>
<p2> 未成功</p2>
<p3>6</p3>
<p4> 2006-1-17</p4>
<p6> 60.198.29.23</p6>
<p10>successfully </p10>
</passenger>
<passenger>
<p1>20060117022028</p1>
<p2> 成功</p2>
<p3>7</p3>
<p4> 2006-1-17</p4>
<p6> 138.243.201.10</p6>
<p10>successfully </p10>
</passenger>
</passengerlist>
</xml>

<table width="100%" bgcolor="#ffffff" datasrc="#xmldso" align=center datapagesize=8 id=Xmltable cellSpacing=0 cellPadding=0>
<thead>
<tr>
<th><DIV class="header" onClick="sortby('p1')">订单号</div></th>
<th><DIV class="header" onClick="sortby('p2')">情况</div></th>
<th><DIV class="header" onClick="sortby('p3')">金额</div></th>
<th><DIV class="header" onClick="sortby('p4')">访问日期</div></th>
<th><DIV class="header" onClick="sortby('p6')">IP</div></th>
<th><DIV class="header" onClick="sortby('p10')">附加信息</div></th>
</tr>
</thead>
<tbody>
<tr onmouseover='javascript:this.style.backgroundColor="#CCC"' onmouseout='javascript:this.style.backgroundColor=""'>
<td><span datafld="p1"></span></td>
<td><span datafld="p2"></span></td>
<td><span datafld="p3"></span></td>
<td><span datafld="p4"></span></td>
<td><span datafld="p6"></span></td>
<td><span datafld="p10"></span></td>
</tr>
</tbody>
</table>

<table width="100%" bgcolor="#ffffff" align="center" cellSpacing=0 cellPadding=0>
<tr><td colspan="10">
<input type=button class="button" id=btnFirst value="首页" >
<input type=button class="button" id=btnPrevious value="上页" >
<input type=button class="button" id=btnNext value="下页">
<input type=button class="button" id=btnLast value="末页" >  <span id=pageShow></span> <span id=divCount></span>
</td></tr>
</table>


style.xsl内容如下
-------------------------------------------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xml:space="preserve">
<xsl:template match="/">
<passengerlist>
<xsl:apply-templates select="//passenger" data-type="number" order-by="p3" />
</passengerlist>
</xsl:template>

<xsl:template match="passenger">
<passenger>
<p1><xsl:value-of select="p1" /></p1>
<p2><xsl:value-of select="p2" /></p2>
<p3><xsl:value-of select="p3" /></p3>
<p4><xsl:value-of select="p4" /></p4>
<p6><xsl:value-of select="p6" /></p6>
<p7><xsl:value-of select="p7" /></p7>
<p9><xsl:value-of select="p9" /></p9>
<p10><xsl:value-of select="p10" /></p10>
</passenger>
</xsl:template>
</xsl:stylesheet>


问题:
按照金额的排序的时候是按照字符来排,而不是按照数字大小来排,如何解决?

...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hax 2006-01-19
  • 打赏
  • 举报
回复
sort是用在apply-templates或者for-each之下的。明白?
shysky 2006-01-18
  • 打赏
  • 举报
回复
to: cds27(冰封) 按照你的方法,我改成了

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<passengerlist>
<xsl:sort select="passenger" data-type="number"/>
</passengerlist>
</xsl:template>

<xsl:template match="passenger">
<passenger>
<p1><xsl:value-of select="p1" /></p1>
<p2><xsl:value-of select="p2" /></p2>
<p3><xsl:value-of select="p3" /></p3>
<p4><xsl:value-of select="p4" /></p4>
<p6><xsl:value-of select="p6" /></p6>
<p7><xsl:value-of select="p7" /></p7>
<p9><xsl:value-of select="p9" /></p9>
<p10><xsl:value-of select="p10" /></p10>
</passenger>
</xsl:template>
</xsl:stylesheet>


但是提示JAVASCRIPT错误:此处不能使用关键字 xsl:sort
cds27 2006-01-18
  • 打赏
  • 举报
回复
建议你改用这个版本的命名空间:<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

然后
<xsl:apply-templates select="//passenger" data-type="number" order-by="p3" />
改为
<xsl:sort select="passenger" data-type="number"/>

我用这个版本的测试正常.

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧