js通过xmldom调用xslt对xml排序输出的一个简单例子.

本文介绍如何使用XML和XSLT进行数据转换及展示,通过JavaScript动态更改XSLT中的排序规则来实现不同排序方式的数据呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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,那么换一种声明方法.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值