在浏览器中将XML转换为XHTML
这是在客户端上将XML文件转换为XHTML所需的源代码:
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("example").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
查看结果
示例说明:
loadXMLDoc() 函数执行以下操作:
- 创建一个XMLHttpRequest对象
- 使用 XMLHttpRequest 对象的 open() 和 send() 方法将请求发送到服务器
- 获取响应数据作为XML数据
displayResult() 函数用于显示由XSL文件设置样式的XML文件:
- 加载XML和XSL文件
- 测试用户使用哪种浏览器
- 如果是Internet Explorer:
- 使用 transformNode() 方法将 XSL 样式表应用于 xml 文档
- 设置当前文档的主体(id="example")以包含样式化的 xml 文档
- 如果是其他浏览器:
- 创建一个新的 XSLTProcessor 对象并将 XSL 文件导入到其中
- 使用 transformToFragment() 方法将 XSL 样式表应用于 xml 文档
- 设置当前文档的主体(id="example")以包含样式化的 xml 文档