xsl 和xml生成html,兼容多个浏览器

<html>
<head>
<meta charset="UTF-8"/>
</head>
<body id="srcDiv"> </body>
<script>
var oXSLDoc = loadXMLDoc("./XMLSelTree.xsl");
var oXMLDom = loadXMLDoc("./XMLDoc.xml");
var p_oSrcDiv = document.getElementById("srcDiv");
//var sHtml = oXMLDom.transformNode(m_oConfig.oXSLDoc);
var sHtml = xml_transformNode(oXMLDom, oXSLDoc);
//将HTML中的&apos;转化为"'"
var rep = /&apos;/g;
sHtml = sHtml.replace(rep,"'");
p_oSrcDiv.innerHTML = sHtml;
function loadXMLDoc(xml_name)
{
var xmlDoc;
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE
}
catch(e)
{
try
{
// Support Firefox, Mozilla, Opera, etc
xmlDoc = document.implementation.createDocument("", "", null) ;// 创建一个空的 XML 文档对象。
}
catch(e)
{
alert(e.message);
}
}
// 加载XML文档
try
{
xmlDoc.async = false; // 关闭异步加载
xmlDoc.load(xml_name);
}
catch(e)
{
// alert(e.message) 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load",所以,以下实现支持chrome加载XML文档(只是粗略的写下)
var xhr = new XMLHttpRequest();
xhr.open("GET", xml_name, false);
xhr.send(null); if (xhr.responseXML) {
xmlDoc = xhr.responseXML.documentElement;
} else {
xmlstr = xhr.response;
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlstr, "text/xml");
}
}
return xmlDoc;
}
// 使用XSLT把XML文档转换为一个字符串。
function xml_transformNode(xmlDoc, xslDoc) {
console.log("xmlDoc", xmlDoc);
console.log("xslDoc", xslDoc);
if (null == xmlDoc) return "";
if (null == xslDoc) return "";
if (window.ActiveXObject) // IE
{
return xmlDoc.transformNode(xslDoc);
}
else // FireFox, Chrome
{
//定义XSLTProcesor对象
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
// transformToDocument方法
<!-- var result = xsltProcessor.transformToDocument(xmlDoc); -->
// transformToFragment 方法
var result = xsltProcessor.transformToFragment(xmlDoc,document);
console.log("result", result);
var xmls = new XMLSerializer();
var rt = xmls.serializeToString(result);
return rt;
}
}
</script>
</html>

transformToDocument API

使用transformToDocument 方法,需要在xsl的文件中,加入outPut的方法才可以


用这个transformToDocument API,需要设置这个outputtype 

transformToDocument API

 
 

最新文章

  1. Anciroid的IPC机制-Binder概述
  2. IPC-----POSIX消息队列
  3. PostgreSQL的时间/日期函数使用
  4. JMeter中的场景执行持续时间设置
  5. 新浪微博客户端(18)-集成下拉刷新控件UIRefreshControl
  6. NSNotificationCenter 的详细说明
  7. IEEE Floating Point Standard (IEEE754浮点数表示法标准)
  8. 开扒本地存储—localStorage
  9. ABP项目中的使用AutoMapper
  10. Android 7.0 安装器安装过程分析 (com.android.packageinstaller)
  11. 2017上海QCon之旅总结(下)
  12. 使用密钥登录CentOS系统(基于密钥的认证)
  13. Brup Suite 渗透测试笔记(七)
  14. arch Linux 安装完,无法通过 SSH 远程连接 root 用户问题
  15. 洛谷4556 [Vani有约会]雨天的尾巴
  16. SP6779 GSS7
  17. winfrom图片放大器
  18. Leetcode 33
  19. linux命令之信息显示与搜索文件命令
  20. 安装虚拟机&amp;Linux命令学习

热门文章

  1. Hibernate 干货2
  2. webshell在php方向的研究(精华篇)
  3. Haproxy搭建Web群集
  4. GraphQL 如何取代 Redux
  5. QuantLib 金融计算——数学工具之数值积分
  6. P4859 已经没有什么好害怕的了
  7. [转] Spark sql 内置配置(V2.2)
  8. 本地docker镜像上传Docker Hub,并且在腾讯云上pull该镜像,最后运行成功。
  9. Mac下使Iterm2开机启动不显示界面
  10. [Xamarin] 產生專案的AndroidManifest.xml (转帖)