J'ai récemment utilisé Firefox pour déboguer des pages Web et j'ai découvert que certaines instructions Javascript XSLT pour le traitement du XML ne prennent en charge que les navigateurs IE. Certains articles sur Internet qui présentent JavaScript XSLT pour traiter XML sont essentiellement basés sur AJAX.
En désespoir de cause, j'ai écrit une petite fonction de Javascript XSLT pour traiter la page d'affichage XML. Maintenant, je le publie pour le partager avec tout le monde et j'espère que vous pourrez me donner quelques suggestions d'amélioration.
Lorsque vous utilisez l'objet XSLTProcessor pour traiter du XML dans Firefox, vous utilisez principalement deux méthodes de cet objet :
1. transformToFragment().
2. transformToDocument().
Le code suivant utilise uniquement la méthode transformToFragment() pour traiter les fichiers XML. Si vous souhaitez utiliser Javascript XSLT pour traiter les fichiers XML dans Firefox, vous pouvez également essayer de réécrire le code suivant pour utiliser la méthode transformToDocument() pour obtenir l'objectif. fonction de traitement.
Le code Javascript est le suivant :
function initialize() {
var xmlDoc;
var xslDoc;
// Détermine le type de navigateur
si (document.implementation && document.implementation.createDocument)
{
// Prise en charge du navigateur Mozilla
essayer
{
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.async = faux ;
xmlDoc.load("livre d'or/livre d'or.xml");
}
attraper(e)
{
alerte("erreur:001");
}
essayer
{
xslDoc = document.implementation.createDocument("", "", null);
xslDoc.async = faux ;
xslDoc.load("livre d'or/livre d'or.xsl");
}
attraper(e)
{
alerte("erreur:002");
}
essayer
{
//Définir l'objet XSLTProcessor
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);
// Affiche le texte analysé sur la page
var oDiv = document.getElementById("guestbookPanel");
oDiv.appendChild(oResultFragment);
}
attraper(e)
{
alerte("erreur:003");
}
}
sinon if(typeof window.ActiveXObject != 'undefined')
{
//var xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");
// Prise en charge du navigateur IE
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xslDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = faux ;
xslDoc.async = faux ;
xmlDoc.load("livre d'or/livre d'or.xml");
xslDoc.load("livre d'or/livre d'or.xsl");
guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
}
autre
{
alert("Navigateur inconnu!");
}
}
javascript dom est la deuxième façon de gérer les données d'affichage XSL.
Le code principal est le suivant :
var xmlDoc;
var xslDoc;
// Détermine le type de navigateur
si (document.implementation && document.implementation.createDocument)
{
// Prise en charge du navigateur Mozilla
essayer
{
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.async = faux ;
xmlDoc.load("livre d'or/livre d'or.xml");
xslDoc = document.implementation.createDocument("", "", null);
xslDoc.async = faux ;
xslDoc.load("livre d'or/livre d'or.xsl");
//Définir l'objet XSLTProcessor
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
// Méthode transformToDocument
var résultat = xsltProcessor.transformToDocument(xmlDoc);
var xmls = new XMLSerializer();
document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);
}
attraper(e)
{
alert("Impossible d'effectuer le traitement XML/XSL");
}
}
sinon if(typeof window.ActiveXObject != 'undefined')
{
essayer
{
// Prise en charge du navigateur IE
xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
xslDoc = new ActiveXObject('Msxml2.DOMDocument');
xmlDoc.async = faux ;
xslDoc.async = faux ;
xmlDoc.load("livre d'or/livre d'or.xml");
xslDoc.load("livre d'or/livre d'or.xsl");
guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
}
attraper(e)
{
alert("Impossible d'effectuer le traitement xml/xsl");
}
}
autre
{
alert("Navigateur inconnu!");
}