首頁 > web前端 > js教程 > 相容於Firefox的Javascript XSLT 處理XML檔_javascript技巧

相容於Firefox的Javascript XSLT 處理XML檔_javascript技巧

WBOY
發布: 2016-05-16 16:22:54
原創
1784 人瀏覽過

最近使用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 程式碼如下:
 

複製程式碼 程式碼如下:

函數初始化() {
    var xmlDoc;
    var xslDoc;

    // 判斷瀏覽器的種類
    if(document.implementation && document.implementation.createDocument)
    {       
        // 支援Mozilla瀏覽器
        嘗試
        {
            xmlDoc = document.implementation.createDocument("", "", null);   
            xmlDoc.async = false;
            xmlDoc.load("guestbook/guestbook.xml");
        }
        抓住(e)
        {
            警報(「錯誤:001」);
        }
        嘗試
        {
            xslDoc = document.implementation.createDocument("", "", null);
            xslDoc.async = false;    
              xslDoc.load("guestbook/guestbook.xsl");
             
          }
          抓住(e)
          {
              警報(「錯誤:002」);
          }
          嘗試
          {
              // 定義XSLTProcessor物件   
            var xsltProcessor = new XSLTProcessor();
            xsltProcessor.importStylesheet(xslDoc);
            var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,文件);
            // 將解析過的文字輸出至頁面
            var oDiv = document.getElementById("guestbookPanel");
            oDiv.appendChild(oResultFragment);
        }
        抓住(e)
        {
            警報(「錯誤:003」);
        }   
    }
    else if(typeof window.ActiveXObject != '未定義')
    {       
        //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);   
    }
    其他
    {
        Alert("瀏覽器未知!");
    }
}

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!");
 }
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板