接收XML数据并使用XSL样式表进行格式化

        今天的一天时间都花费在实现XML数据的接收以及XSL-样式表的格式化,当然这些工作在IE上面都是很容易的事情。可是挪移到FireFox上的时候,一切就没有那么美妙了。:))
        必须实现脚本的跨越浏览器功能。上午吃饭前找到资料,在自己手写还是使用开源框架方面产生了冲突,最终采用在资料的基础上改写,这样的代码量不大。
        下面就是封装好的JS函数,只是暂时可以在Firefox,IE上面通用,测试只是小范围而已。这个函数就是为了程序使用,所以就这么写了......

     /*
    xml:可以提供给XML数据的连接或者文件
    xsl:样式表或者样式表的连接
    div:层-DIV的ID
    result:xsl文件解析xml的结果写入到div中
    
*/   
    function showXml( xml, xsl, div ){
    
if  (window.ActiveXObject) {
             IEXml( xml, xsl, div );
    }
    
// Para funcionar no Mozilla/Firefox
     else   if (window.XMLHttpRequest) {
            FireXml( xml, xsl, div );
    }
}


function IEXml( xml, xsl, div ){
            var objeXml;
            var objeXsl;
            var objeXml 
=   new  ActiveXObject( " Microsoft.XMLDOM " );
            objeXml.async 
=   false ;
            objeXml.load( xml );
            var objeXsl 
=   new  ActiveXObject( " Microsoft.XMLDOM " );
            objeXsl.async 
=   false ;
            objeXsl.load( xsl );
            var theDiv 
=  document.getElementById( div );
            theDiv.innerHTML 
=  objeXml.transformNode(objeXsl);
}

function FireXml( xml, xsl, div ){
            var objeXSLTProcessor;
            var objeXmlDoc;
            var objeXSLT;            
            var objeXml;
            var objeXsl;
            objeXSLTProcessor 
=   new  XSLTProcessor();
            objeXsl 
=   new  XMLHttpRequest();
            objeXsl.open(
" GET " , xsl,  false );
            objeXsl.send(
null );            
            objeXSLT 
=  objeXsl.responseXML;
            
            objeXSLTProcessor.importStylesheet(objeXSLT);

            objeXml 
=   new  XMLHttpRequest();
            
            objeXml.open(
" GET " , xml,  true  );
            objeXml.send(
null );    
            objeXmlDoc 
=  ( new  DOMParser()).parseFromString( objeXml.responseText,  " text/xml " );
            var tvs 
=  objeXSLTProcessor.transformToFragment(objeXmlDoc, document);
            var theDiv 
=  document.getElementById( div );
            div.innerHTML 
=   "" ;
            theDiv.appendChild( tvs );
}  

 

 

 

转载于:https://www.cnblogs.com/yongboy/archive/2006/03/23/357115.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值