网站制作

本类阅读TOP10

·IIS 安装配置全攻略
·html基础学习笔记(2)
·html基础学习笔记(1)
·用VS.NET打开网上下载的.NET web项目出错的解决办法
·如何在网页上实现进度条
·限制TextArea区的文字输入数量
·HTML 4.0 语言快速参考
·在weblogic上配置SSL
·页面垂直居中的两种方法
·Zope/Plone内容管理系统的探讨与应用-内容管理系统(CMS)的概述

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
对数据岛数据实现动态排序二法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站


现在数据岛被越来越广泛的应用;其中必然会涉及到的就是动态排序了;下面列出两种实现方法:

1、为<xsl:param>标签设定参数实现动态排序(推荐)
<html>
<body>
<table DATASRC="#catalogs" border=1>
<thead>
<tr>
<td onclick="sort('TITLE','descending');">TITLE</td>
<td>ARTIST</td>
<td onclick="sort('COUNTRY','ascending');">COUNTRY</td>
<td>COMPANY</td>
<td>PRICE</td>
<td>YEAR</td>
</tr>
</thead>
<tbody>
<tr>
<td ><div DATAFLD="TITLE"></div></td>
<td ><div DATAFLD="ARTIST"></div></td>
<td ><div DATAFLD="COUNTRY"></div></td>
<td ><div DATAFLD="COMPANY"></div></td>
<td ><div DATAFLD="PRICE"></div></td>
<td ><div DATAFLD="YEAR"></div></td>
</tr>
</tbody>
</table>

<xml id="catalogs">
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
Bob Dylan
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Burlesque</TITLE>
Dylan
<COUNTRY>UA</COUNTRY>
<COMPANY>umbia</COMPANY>
<PRICE>1.90</PRICE>
<YEAR>1987</YEAR>
</CD>
<CD>
<TITLE>Empire</TITLE>
Bob
<COUNTRY>US</COUNTRY>
<COMPANY>bia</COMPANY>
<PRICE>12.90</PRICE>
<YEAR>1995</YEAR>
</CD>
</CATALOG>
</xml>

<xml id="xstyle">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:param name="sortorder" select="'descending'"/>
<xsl:param name="sortfield" select="'xxx'"/>
<xsl:template match="/">
<CATALOG>
<xsl:for-each select="CATALOG/CD">
<xsl:sort select="*[name()=$sortfield]" order="{$sortorder}" />
<CD>
<TITLE><xsl:value-of select="TITLE"/></TITLE>
<xsl:value-of select="ARTIST"/>
<COUNTRY><xsl:value-of select="COUNTRY"/></COUNTRY>
<COMPANY><xsl:value-of select="COMPANY"/></COMPANY>
<PRICE><xsl:value-of select="PRICE"/></PRICE>
<YEAR><xsl:value-of select="YEAR"/></YEAR>
</CD>
</xsl:for-each>
</CATALOG>
</xsl:template>
</xsl:stylesheet>
</xml>

<script language="vbscript">
function sort(strSortField, strSortOrder)

  dim objXSL, objXML, objTemplate, objProcessor, strHTML, strDrinkType
 
  Set objXML = CreateObject("Msxml2.FreeThreadedDOMDocument")
  Set objXSL = CreateObject("Msxml2.FreeThreadedDOMDocument")
  
  'Load the XML document
  objXML.async = False
  objXML.Loadxml catalogs.xml  
  
  'Load the XSL document
  objXSL.async = False
  objXSL.Loadxml xstyle.xml
     
  'Create an instance of our XSL Template object
  Set objTemplate = CreateObject("MSXML2.XSLTemplate")
     
  'Create an instance of our stylesheet object using our recently loaded XSLT document
  Set objTemplate.stylesheet = objXSL
      
  'Create an instance of our Processor object
  Set objProcessor = objTemplate.createProcessor

  'Define the input object for our object equal to our recently loaded XML document
  objProcessor.input = objXML

  'Now, finally we can add any parameters that we require to our Template processor
  objProcessor.AddParameter "sortfield", strSortField
  objProcessor.AddParameter "sortorder", strSortOrder
     
  'Last but not least we do our transformation
  objProcessor.Transform
     
  'Store the results of the output into a string.
  strXML = objProcessor.output

  'Load up an XML DOM object from the recent XML output
  objXML.loadxml strXML
  
  'Select only the "employees" elements from our document object
  objXML.selectNodes("//CATALOG")
  
  'Load our Data Island using our new XML object
  catalogs.loadxml  objXML.xml  
 end function  
</script>

<script language="javascript">
function sort2(xmlObj, xslObj, sortByColName)
{
var xmlData=eval("document.all."+xmlObj).XMLDocument;
var xslData=eval("document.all."+xslObj).XMLDocument;
var nodes=xslData.documentElement.selectSingleNode("xsl:for-each");
nodes.selectSingleNode("@order-by").value=sortByColName;

xmlData.documentElement.transformNodeToObject(xslData.documentElement,xmlData);
}
</script>

</body>
</html>

2、直接通过DOM实现,灵活性欠缺:
<html>
<body>
<table DATASRC="#catalogs" border=1>
<thead>
<tr>
<td onclick="sort('catalogs','xstyle','TITLE');">TITLE</td>
<td>ARTIST</td>
<td>COUNTRY</td>
<td>COMPANY</td>
<td>PRICE</td>
<td>YEAR</td>
</tr>
</thead>
<tbody>
<tr>
<td ><div DATAFLD="TITLE"></div></td>
<td ><div DATAFLD="ARTIST"></div></td>
<td ><div DATAFLD="COUNTRY"></div></td>
<td ><div DATAFLD="COMPANY"></div></td>
<td ><div DATAFLD="PRICE"></div></td>
<td ><div DATAFLD="YEAR"></div></td>
</tr>
</tbody>
</table>

<xml id='catalogs'>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
Bob Dylan
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Burlesque</TITLE>
Dylan
<COUNTRY>UA</COUNTRY>
<COMPANY>umbia</COMPANY>
<PRICE>1.90</PRICE>
<YEAR>1987</YEAR>
</CD>
<CD>
<TITLE>Empire</TITLE>
Bob
<COUNTRY>US</COUNTRY>
<COMPANY>bia</COMPANY>
<PRICE>12.90</PRICE>
<YEAR>1995</YEAR>
</CD>
</CATALOG>
</xml>

<xml id="xstyle">
<CATALOG>
<xsl:for-each select="CD" order-by="+TITLE" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<CD>
<TITLE><xsl:value-of select="TITLE"/></TITLE>
<xsl:value-of select="ARTIST"/>
<COUNTRY><xsl:value-of select="COUNTRY"/></COUNTRY>
<COMPANY><xsl:value-of select="COMPANY"/></COMPANY>
<PRICE><xsl:value-of select="PRICE"/></PRICE>
<YEAR><xsl:value-of select="YEAR"/></YEAR>
</CD>
</xsl:for-each>
</CATALOG>
</xml>

<script language="javascript">
function sort(xmlObj, xslObj, sortByColName)
{
var xmlData=eval("document.all."+xmlObj).XMLDocument;
var xslData=eval("document.all."+xslObj).XMLDocument;
var nodes=xslData.documentElement.selectSingleNode("xsl:for-each");
nodes.selectSingleNode("@order-by").value=sortByColName;

xmlData.documentElement.transformNodeToObject(xslData.documentElement,xmlData);
}
</script>
</body>
</html>




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有