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>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>当然,不一定是xml,xsl要存为文件,也可以是符合规范的字串. 用loadxml方法加载即可.
要支持ff,那么换一种声明方法.
本文介绍如何使用XML和XSLT进行数据转换及展示,通过JavaScript动态更改XSLT中的排序规则来实现不同排序方式的数据呈现。
131

被折叠的 条评论
为什么被折叠?



