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

 

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值