与Firefox兼容的用于处理XML文件的JavascriptXSLT

Firefox最近被用于调试Web页面,发现一些XML的XSLT语句只由IE浏览器支持,而介绍Javascript XSLT处理XML的网络中的一些文章基本上是在ajax基础上完成的。

无奈之下,我编写了一个Javascript XSLT的小函数来处理XML显示页面。

使用xsltprocessor对象来处理XML在Firefox中,对象的方法主要是利用:

一、transformtofragment()。

二,transformtodocument()。

下面的代码使用transformtofragment(XML)来处理文件,如果你使用Javascript XSLT的XML文件是对Firefox尝试下面的代码到transformtodocument使用()实现处理功能的方法。

Javascript代码如下所示:



复制代码代码如下所示:

函数初始化(){

VaR xmlDoc;

无功xsldoc;

确定浏览器的类型。

如果(document.implementation文件。执行。获取)

{

支持Mozilla browser

尝试

{

document.implementation.createdocument xmlDoc =(

xmldoc.async = false;

xmldoc.load(留言/留言。XML);

}

捕捉(e)

{

警报(错误:001 );

}

尝试

{

xsldoc = document.implementation.createdocument(

xsldoc.async = false;

xsldoc.load(留言/留言。XSL );



}

捕捉(e)

{

警报(错误:002 );

}

尝试

{

/ / xsltprocessor对象定义

无功xsltprocessor =新xsltprocessor();

xsltprocessor.importstylesheet(xsldoc);

无功oresultfragment = xsltprocessor.transformtofragment(xmlDoc,文档);

解析文本输出到页面

无功odiv = document.getelementbyid(guestbookpanel );

odiv.appendchild(oresultfragment);

}

捕捉(e)

{

警报(错误:003 );

}

}

else if(typeof window.activexobject!= 'undefined)

{

/ / var xmlDoc = server.createobject(MSXML2. DOMDocument。4);

支持IE浏览器

xmlDoc =新的ActiveX对象('microsoft XMLDOM。);

xsldoc =新('microsoft XMLDOM ActiveX对象。);

xmldoc.async = false;

xsldoc.async = false;

xmldoc.load(留言/留言。XML);

xsldoc.load(留言/留言。XSL );

guestbookpanel.innerhtml = xmldoc.documentelement.transformnode(xsldoc);

}

其他的

{

警报()浏览器未知!;

}

}



Javascript DOM处理XSL显示数据的第二种方式。

主要代码如下:

复制代码代码如下所示:

VaR xmlDoc;

无功xsldoc;

确定浏览器的类型。

如果(document.implementation文件。执行。获取)

{

支持Mozilla browser

尝试

{

document.implementation.createdocument xmlDoc =(

xmldoc.async = false;

xmldoc.load(留言/留言。XML);

xsldoc = document.implementation.createdocument(

xsldoc.async = false;

xsldoc.load(留言/留言。XSL );

/ / xsltprocessor对象定义

无功xsltprocessor =新xsltprocessor();

xsltprocessor.importstylesheet(xsldoc);

/ / transformtodocument

VaR结果= xsltprocessor.transformtodocument(xmlDoc);

VaR XMLS =新XmlSerializer();

document.getelementbyid(guestbookpanel ).innerHTML = xmls.serializetostring(结果);

}

捕捉(e)

{

警报(无法进行xml处理);

}

}

else if(typeof window.activexobject!= 'undefined)

{

尝试

{

支持IE浏览器

xmlDoc =新的ActiveX对象('msxml2 DOMDocument。);

xsldoc =新的ActiveX对象('msxml2 DOMDocument。);

xmldoc.async = false;

xsldoc.async = false;

xmldoc.load(留言/留言。XML);

xsldoc.load(留言/留言。XSL );

guestbookpanel.innerhtml = xmldoc.documentelement.transformnode(xsldoc);

}

捕捉(e)

{

警报(无法进行xml处理);

}

}

其他的

{

警报()浏览器未知!;

}