posts - 495,comments - 227,trackbacks - 0
          最近使用Firefox進(jìn)行網(wǎng)頁的調(diào)試,發(fā)現(xiàn)有些Javascript XSLT處理XML的語句僅僅支持IE瀏覽器。而網(wǎng)絡(luò)中的一些介紹javascript XSLT 處理XML的文章基本上都是依據(jù)AJAX來做的。
              無奈中,自己寫了一個Javascript XSLT處理XML展現(xiàn)頁面的小功能。現(xiàn)在帖出來和大家共享,希望大家給點改進(jìn)意見。
              在Firefox中使用XSLTProcessor對象處理XML,主要使用該對象的兩個方法:
          一、transformToFragment()。
          二、transformToDocument()。
              下面的代碼僅僅使用transformToFragment()方法來實現(xiàn)對XML文件處理,如果你對在Firefox中使用Javascript XSLT 處理XML文件感興趣的話不妨試著將以下代碼改寫成使用transformToDocument()方法來實現(xiàn)的處理功能。
          Javascript 代碼如下:

           

          function initialize() {
              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");
                  }
                  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
                    {
                        // 定義XSLTProcessor對象    
                      var xsltProcessor = new XSLTProcessor();
                      xsltProcessor.importStylesheet(xslDoc);
                      var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);
                      // 將解析過的文本輸出到頁面
                      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");        
                  // 支持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);    
              }
              else
              {
                  alert("Browser unknown!");
              }
          }

          javascript dom 處理XSL顯示數(shù)據(jù)的第二種方式。

          主要代碼如下:

          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!");
           }

          posted on 2008-03-26 11:59 SIMONE 閱讀(1183) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 安阳市| 南宫市| 岐山县| 罗定市| 莆田市| 康马县| 太谷县| 阜康市| 长乐市| 江达县| 莫力| 桃源县| 塔河县| 巨野县| 九龙坡区| 洪洞县| 屯门区| 安徽省| 太谷县| 文水县| 九龙城区| 融水| 威信县| 武夷山市| 广水市| 阜南县| 山阳县| 龙里县| 九江市| 乌什县| 宜兰市| 兴义市| 常州市| 阜新| 米脂县| 西城区| 通许县| 全州县| 吴旗县| 昔阳县| 侯马市|