以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  javascript客户端用xslt 转换xml文件问题[求助]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=68321)


--  作者:wangyongshan
--  发布时间:10/16/2008 9:35:00 AM

--  javascript客户端用xslt 转换xml文件问题[求助]

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



上面的是用 javascript 通过 xsl 转换xml文件的方法,

现在我的问题是: 我的xml文件不是一个具体的xml文件,而是一段xml内容(比如在 textarea中输入一段xml格式的内容),

那么该如何加载这段xml格式的内容,并进行转换???

请大家帮忙。。。。。


-------------------------------------------------------------------------------------------------------------------------


--  作者:Qr
--  发布时间:10/16/2008 10:37:00 AM

--  
MSXML可以通过loadXML加载XML片断,Mozilla(FF)有两个transform开头的函数,其中有个好象支持XML片断...
--  作者:wangyongshan
--  发布时间:10/16/2008 10:44:00 AM

--  
在 IE 下, 我将 xmlDoc.load("..."); 改成 xmlDoc.loadXML(xml内容); 还是不行
--  作者:wangyongshan
--  发布时间:10/16/2008 10:49:00 AM

--  
可以了,谢谢 Qr, loadXML()中的内容不能含有xml文件头部(<?xml version="1.0" ..?>),

刚才我的 xml内容中含有XML文件头部,现在去掉了,就可以转换了,呵呵!Thank you !

存在就差 firefox 下的 方法了。。。。。


--  作者:Qr
--  发布时间:10/16/2008 10:49:00 AM

--  
xmlDoc.loadXML("<root/>"); 这样的用法应该没问题,最好将XML串定义为变量,再用loadXML调用即可。
--  作者:wangyongshan
--  发布时间:10/16/2008 10:56:00 AM

--  
找到了在 firefox下转换xml内容的方法了:

var domParser = new DOMParser();

var xmlDoc = domParser.parseFromString(xmlText, "text/xml");

呵呵。。。。


--  作者:Qr
--  发布时间:10/16/2008 11:01:00 AM

--  
对,就是这个,前面记错了。
--  作者:hexun831012
--  发布时间:10/16/2008 5:29:00 PM

--  
好熟悉的代码。。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms