最近使用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(documentimplementation && documentimplementationcreateDocument)
{
// 支持Mozilla浏览器
try
{
xmlDoc = documentimplementationcreateDocument( null);
xmlDocasync = false;
xmlDocload(guestbook/guestbookxml);
}
catch(e)
{
alert(error:);
}
try
{
xslDoc = documentimplementationcreateDocument( null);
xslDocasync = false;
xslDocload(guestbook/guestbookxsl);
}
catch(e)
{
alert(error:);
}
try
{
// 定义XSLTProcessor对象
var xsltProcessor = new XSLTProcessor();
xsltProcessorimportStylesheet(xslDoc);
var oResultFragment = xsltProcessortransformToFragment(xmlDocdocument);
// 将解析过的文本输出到页面
var oDiv = documentgetElementById(guestbookPanel);
oDivappendChild(oResultFragment);
}
catch(e)
{
alert(error:);
}
}
else if(typeof windowActiveXObject != undefined)
{
//var xmlDoc=ServerCreateObject(MsxmlDOMDocument);
// 支持IE浏览器
xmlDoc = new ActiveXObject(MicrosoftXMLDOM);
xslDoc = new ActiveXObject(MicrosoftXMLDOM);
xmlDocasync = false;
xslDocasync = false;
xmlDocload(guestbook/guestbookxml);
xslDocload(guestbook/guestbookxsl);
guestbookPanelinnerHTML = xmlDocdocumentElementtransformNode(xslDoc);
}
else
{
alert(Browser unknown!);
}
}
javascript dom 处理XSL显示数据的第二种方式
主要代码如下
var xmlDoc;
var xslDoc;
// 判断浏览器的类型
if(documentimplementation && documentimplementationcreateDocument)
{
// 支持Mozilla浏览器
try
{
xmlDoc = documentimplementationcreateDocument( null);
xmlDocasync = false;
xmlDocload(guestbook/guestbookxml);
xslDoc = documentimplementationcreateDocument( null);
xslDocasync = false;
xslDocload(guestbook/guestbookxsl);
// 定义XSLTProcessor对象
var xsltProcessor = new XSLTProcessor();
xsltProcessorimportStylesheet(xslDoc);
// transformToDocument方式
var result = xsltProcessortransformToDocument(xmlDoc);
var xmls = new XMLSerializer();
documentgetElementById(guestbookPanel)innerHTML = xmlsserializeToString(result);
}
catch(e)
{
alert(Unable to do xml/xsl processing);
}
}
else if(typeof windowActiveXObject != undefined)
{
try
{
// 支持IE浏览器
xmlDoc = new ActiveXObject(MsxmlDOMDocument);
xslDoc = new ActiveXObject(MsxmlDOMDocument);
xmlDocasync = false;
xslDocasync = false;
xmlDocload(guestbook/guestbookxml);
xslDocload(guestbook/guestbookxsl);
guestbookPanelinnerHTML = xmlDocdocumentElementtransformNode(xslDoc);
}
catch(e)
{
alert(Unable to do xml/xsl processing);
}
}
else
{
alert(Browser unknown!);
}
(注由于代码书写简单故没有写过多的注释敬请谅解!)