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

 
 

xsl 和xml transform方法的调用的更多相关文章

  1. java解析xml字符串方法

    一,用DOM4J  针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...

  2. javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet

    今天在调代码的时候遇到了一个异常: javax.xml.transform.TransformerConfigurationException: Could not compile styleshee ...

  3. Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException

    转自:https://www.jb51.net/article/98644.htm Java xml出现错误 javax.xml.transform.TransformerException: jav ...

  4. JAVA常用的XML解析方法

    转并总结自(java xml) JAVA常用的解析xml的方法有四种,分别是DOM,JAX,JDOM,DOM4j xml文件 <?xml version="1.0" enco ...

  5. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  6. Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

    在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...

  7. 三种读写XML的方法

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  8. Spring事务传播特性的浅析——事务方法嵌套调用的迷茫

    Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. 其实这 ...

  9. springMVC在普通方法中调用service方法

    SpringContextUtil类 package com.common.util; import org.springframework.beans.BeansException;import o ...

随机推荐

  1. 销售系统项目业务分析和Java中使用邮箱

    项目一般大致可分为三个模块, 我们以销售系统为例 分为 基础模块 进货模块 财务模块三个 基础模块分为:权限模块 产品模块和基础代码,基础模块的设计十分重要会影响到整个项目, 代码较为简单 核心模块 ...

  2. 【OCP-12c】2019年CUUG OCP 071考试题库(75题)

    75.Which statements are correct regarding indexes? (Choose all that apply.) A. A non-deferrable PRIM ...

  3. CSS3-渐变这个属性2

    渐变 有了渐变再也不用去切1px的图再重复了.. -webkit- 是浏览器前缀, 表示特定浏览器对一个属性还在实验阶段, 在这里顺便写下各个浏览器的前缀: chrome/ safari     -w ...

  4. SQL Server 根据树状结构表生成以/号分割的路由字符串

    很多情况下,我们有必要把树形结构进行数据梳理.比如,要方便的过滤出一个父节点下的所有子节点等等... 这个时候,我们可以生成一个路径表字符串,在应用时只需要对该字符串进行索引即可达成目的. 目标:按图 ...

  5. LOJ#2039. 「SHOI2015」激光发生器(计算几何)

    题面 传送门 题解 如果我初中科学老师知道我有一天计算的时候入射角不等于反射角不知道会不会把我抓起来打一顿-- 这题本质上就是个模拟,需要的芝士也就计蒜几盒的那点,不过注意细节很多,放到考场上只能看看 ...

  6. Comet OJ - Contest #0题解

    传送门 菜爆了--总共只有一道题会做的--而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂--歧视么-- \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}=y+z+2\sqrt{ ...

  7. Python面向对象(self参数、封装)

    day24 面向对象三大特性:封装 self参数 class Bar: def foo(self, arg): print(self, arg) x = Bar() print(x) x.foo(11 ...

  8. Qt5学习笔记(控件)

    上面的程序仅仅可以显示一个 大概 的界面,对其进行单击等操作,界面仅有一些简单的反应,对应的程序不能得知界面有什么改变(是否进行单击选择,文本框中是否有文字输入) 下面对程序进行完善. T05Cont ...

  9. [Swift实际操作]八、实用进阶-(3)闭包在定时任务、动画和线程中的使用实际操作

    闭包的使用相当广泛,它是可以在代码中被传递和引用的具有独立功能的模块.双击打开之前创建的空白项目.本文将演示闭包在定时任务.动画和线程中的使用.在左侧的项目导航区,打开视图控制器的代码文件:ViewC ...

  10. jscover使用说明-总体说明

    1.总体说明 这个文档现在是完善和准确的,不管怎样,尽量去参考JSCoverage documentation. 1.1.介绍 JSCove是一个用来显示JavaScript项目代码覆盖率的工具,它是 ...