本文介绍一个JavaScript XSLT处理XML页面展现的小功能。一共分两个方法,分别使用transformToFragment()以及transformToDocument()。两个方法均可在Firefox下工作。
最近运用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 代码如下:
- functioninitialize(){
- varxmlDoc;
- varxslDoc;
- //判别浏览器的类型
- 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目标
- varxsltProcessor=newXSLTProcessor();
- xsltProcessor.importStylesheet(xslDoc);
- varoResultFragment=xsltProcessor.transformToFragment(xmlDoc,document);
- //将解析过的文本输出到页面
- varoDiv=document.getElementById("guestbookPanel");
- oDiv.appendChild(oResultFragment);
- }
- catch(e)
- {
- alert("error:003");
- }
- }
- elseif(typeofwindow.ActiveXObject!='undefined')
- {
- //varxmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");
- //支撑IE浏览器
- xmlDoc=newActiveXObject('Microsoft.XMLDOM');
- xslDoc=newActiveXObject('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("Browserunknown!");
- }
- }
javascript dom 处理XSL显现数据的第二种方法,首要代码如下:
- varxmlDoc;
- varxslDoc;
- //判别浏览器的类型
- 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目标
- varxsltProcessor=newXSLTProcessor();
- xsltProcessor.importStylesheet(xslDoc);
- //transformToDocument方法
- varresult=xsltProcessor.transformToDocument(xmlDoc);
- varxmls=newXMLSerializer();
- document.getElementById("guestbookPanel").innerHTML=xmls.serializeToString(result);
- }
- catch(e)
- {
- alert("Unabletodoxml/xslprocessing");
- }
- }
- elseif(typeofwindow.ActiveXObject!='undefined')
- {
- try
- {
- //支撑IE浏览器
- xmlDoc=newActiveXObject('Msxml2.DOMDocument');
- xslDoc=newActiveXObject('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("Unabletodoxml/xslprocessing");
- }
- }
- else
- {
- alert("Browserunknown!");
- }
【修改引荐】
- Javascript完成的超强语法高亮引擎
- 痛陈Javascript的缺陷
- JavaOne 2009第三天:微软与Sun/Oracle携手并进
- 开发高可移植性J2ME的软件
- Java虚拟机(JVM)中的内存设置详解