今天的一天时间都花费在实现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 );
}
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 );
}