最近使用firefox进行网页的调试,发现有些javascript xslt处理xml的语句仅仅支持ie浏览器。而网络中的一些介绍javascript xslt 处理xml的文章基本上都是依据ajax来做的。
无奈中,自己写了一个javascript xslt处理xml展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
在firefox中使用xsltprocessor对象处理xml,主要使用该对象的两个方法:
一、transformtofragment()。
二、transformtodocument()。
下面的代码仅仅使用transformtofragment()方法来实现对xml文件处理,如果你对在firefox中使用javascript xslt 处理xml文件感兴趣的话不妨试着将以下代码改写成使用transformtodocument()方法来实现的处理功能。
javascript 代码如下:
复制代码 代码如下:
function initialize() {
var xmldoc;
var xsldoc; // 判断浏览器的类型
if(document.implementation && document.implementation.createdocument)
{
// 支持mozilla浏览器
try
{
xmldoc = document.implementation.createdocument(, , null);
xmldoc.async = false;
xmldoc.load(guestbook/guestbook.xml);
}
catch(e)
{
alert(error:001);
}
try
{
xsldoc = document.implementation.createdocument(, , null);
xsldoc.async = false;
xsldoc.load(guestbook/guestbook.xsl);
}
catch(e)
{
alert(error:002);
}
try
{
// 定义xsltprocessor对象
var xsltprocessor = new xsltprocessor();
xsltprocessor.importstylesheet(xsldoc);
var oresultfragment = xsltprocessor.transformtofragment(xmldoc,document);
// 将解析过的文本输出到页面
var odiv = document.getelementbyid(guestbookpanel);
odiv.appendchild(oresultfragment);
}
catch(e)
{
alert(error:003);
}
}
else if(typeof window.activexobject != 'undefined')
{
//var xmldoc=server.createobject(msxml2.domdocument.4.0);
// 支持ie浏览器
xmldoc = new activexobject('microsoft.xmldom');
xsldoc = new activexobject('microsoft.xmldom');
xmldoc.async = false;
xsldoc.async = false;
xmldoc.load(guestbook/guestbook.xml);
xsldoc.load(guestbook/guestbook.xsl);
guestbookpanel.innerhtml = xmldoc.documentelement.transformnode(xsldoc);
}
else
{
alert(browser unknown!);
}
}
javascript dom 处理xsl显示数据的第二种方式。
主要代码如下:
复制代码 代码如下:
var xmldoc;
var xsldoc;
// 判断浏览器的类型
if(document.implementation && document.implementation.createdocument)
{
// 支持mozilla浏览器
try
{
xmldoc = document.implementation.createdocument(, , null);
xmldoc.async = false;
xmldoc.load(guestbook/guestbook.xml);
xsldoc = document.implementation.createdocument(, , null);
xsldoc.async = false;
xsldoc.load(guestbook/guestbook.xsl);
// 定义xsltprocessor对象
var xsltprocessor = new xsltprocessor();
xsltprocessor.importstylesheet(xsldoc);
// transformtodocument方式
var result = xsltprocessor.transformtodocument(xmldoc);
var xmls = new xmlserializer();
document.getelementbyid(guestbookpanel).innerhtml = xmls.serializetostring(result);
}
catch(e)
{
alert(unable to do xml/xsl processing);
}
}
else if(typeof window.activexobject != 'undefined')
{
try
{
// 支持ie浏览器
xmldoc = new activexobject('msxml2.domdocument');
xsldoc = new activexobject('msxml2.domdocument');
xmldoc.async = false;
xsldoc.async = false;
xmldoc.load(guestbook/guestbook.xml);
xsldoc.load(guestbook/guestbook.xsl);
guestbookpanel.innerhtml = xmldoc.documentelement.transformnode(xsldoc);
}
catch(e)
{
alert(unable to do xml/xsl processing);
}
}
else
{
alert(browser unknown!);
}