Recently, I used Firefox to debug web pages and found that some Javascript XSLT statements that process XML only support IE browser. Some articles on the Internet that introduce javascript XSLT to process XML are basically based on AJAX.
Helplessly, I wrote a small function of Javascript XSLT processing XML display pages. Now I'm posting to share with you, I hope you can give me some suggestions for improvement.
In Firefox, using the XSLTProcessor object to process XML, mainly using two methods of this object:
1. transformToFragment().
2. transformToDocument().
The following code only uses the transformToFragment() method to implement XML file processing. If you are interested in using Javascript XSLT to process XML files in Firefox, you might as well try to rewrite the following code into a processing function implemented using the transformToDocument() method.
The Javascript code is as follows:
The code copy is as follows:
function initialize() {
var xmlDoc;
var xslDoc;
// Determine the browser type
if(document.implementation && document.implementation.createDocument)
{
// Support Mozilla browser
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
{
// Define XSLTProcessor object
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var oResultFragment = xsltProcessor.transformToFragment(xmlDoc, document);
// Output the parsed text to the page
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");
// Support IE browser
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 The second way to process XSL display data.
The main code is as follows:
The code copy is as follows:
var xmlDoc;
var xslDoc;
// Determine the browser type
if(document.implementation && document.implementation.createDocument)
{
// Support Mozilla browser
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");
// Define XSLTProcessor object
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
// transformToDocument method
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
{
// Support IE browser
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!");
}