لقد استخدمت Firefox مؤخرًا لتصحيح أخطاء صفحات الويب ووجدت أن بعض عبارات Javascript XSLT لمعالجة XML تدعم متصفحات IE فقط. بعض المقالات على الإنترنت التي تقدم JavaScript XSLT لمعالجة XML تعتمد بشكل أساسي على AJAX.
في حالة من اليأس، كتبت وظيفة صغيرة من Javascript XSLT لمعالجة صفحة عرض XML. الآن أقوم بنشره لمشاركته مع الجميع، وآمل أن تعطيني بعض الاقتراحات للتحسين.
عند استخدام كائن XSLTProcessor لمعالجة XML في Firefox، فإنك تستخدم بشكل أساسي طريقتين لهذا الكائن:
1.transformToFragment().
2.transformToDocument().
تستخدم التعليمة البرمجية التالية فقط طريقة TransformToFragment() لمعالجة ملفات XML. إذا كنت مهتمًا باستخدام Javascript XSLT لمعالجة ملفات XML في Firefox، فقد تحاول أيضًا إعادة كتابة التعليمة البرمجية التالية لاستخدام طريقة TransformToDocument() لتحقيق ما يلي: وظيفة المعالجة.
رمز جافا سكريبت هو كما يلي:
وظيفة التهيئة () {
فار xmlDoc;
var xslDoc;
// تحديد نوع المتصفح
إذا (document.implementation && document.implementation.createDocument)
{
// دعم متصفح موزيلا
يحاول
{
xmlDoc = document.implementation.createDocument(""، ""، null);
xmlDoc.async = false;
xmlDoc.load("guestbook/guestbook.xml");
}
قبض (ه)
{
تنبيه("خطأ:001");
}
يحاول
{
xslDoc = document.implementation.createDocument(""، ""، null);
xslDoc.async = false;
xslDoc.load("guestbook/guestbook.xsl");
}
قبض (ه)
{
تنبيه ("خطأ: 002")؛
}
يحاول
{
// تحديد كائن XSLTProcessor
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);
// إخراج النص الذي تم تحليله إلى الصفحة
var oDiv = document.getElementById("guestbookPanel");
oDiv.appendChild(oResultFragment);
}
قبض (ه)
{
تنبيه("خطأ:003");
}
}
وإلا إذا (typeof window.ActiveXObject ! = 'undef')
{
//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);
}
آخر
{
تنبيه("المتصفح غير معروف!");
}
}
javascript dom هي الطريقة الثانية للتعامل مع بيانات عرض XSL.
الكود الرئيسي كالتالي:
var xmlDoc;
var xslDoc;
// تحديد نوع المتصفح
إذا (document.implementation && document.implementation.createDocument)
{
// دعم متصفح موزيلا
يحاول
{
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);
// طريقة تحويل ToDocument
نتيجة فار = xsltProcessor.transformToDocument(xmlDoc);
var xmls = new XMLSerializer();
document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);
}
قبض (ه)
{
تنبيه("غير قادر على معالجة XML/XSL");
}
}
وإلا إذا (typeof window.ActiveXObject ! = 'undef')
{
يحاول
{
//دعم متصفح 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);
}
قبض (ه)
{
تنبيه("غير قادر على معالجة XML/XSL");
}
}
آخر
{
تنبيه("المتصفح غير معروف!");
}