javascript:在XML数据中动态添加xsl样式表的问题
javascript: Problem with dynamically adding xsl-stylesheet to XML Data
我正在尝试编写我的第一个Firefox扩展。该扩展应该使用XSLT以一种很好的方式显示FOAF文件。现在我只想在按下按钮时将XSL样式表添加到rdf文件中。函数被调用,但rdf文件的表示方式不变。
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
function displayMyResult()
{
alert("test")
xml=loadXMLDoc("http://www.example.com/me.rdf");
xsl=loadXMLDoc("http://www.example.com/test.xsl");
if (window.ActiveXObject)
{
ex=xml.transformNode(xsl);
content.document.location.replace(ex)
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
content.document.location.replace(ex)
}
}
第一个函数loadXMLDoc是从这里的另一篇文章中复制的,应该可以工作。Probem在displayMyResult方法中。测试警报确认调用了函数,但me.rdf文件没有显示任何不同。
我认为content.deocument.location.replace(ex)行是错误的,但在网上没有找到任何可以向我解释使用什么的内容。
有人能告诉我如何加载XLST样式表来呈现RDF文件吗?
为什么您的Mozilla扩展代码要检查像"ActiveXObject"这样的IE对象?无论如何,您的代码没有多大意义,您的Mozilla分支从未分配给名为ex
的变量,但您随后调用replace(ex)
。一些更有意义的代码将是
var resultFragment = xsltProcessor.transformToFragment(xml, content.document);
content.document.replaceChild(resultFragment, content.document.documentElement);
但我不确定这在一般情况下是否有效,特别是如果content.document的类型与XSLT的结果文档不同(即一个是HTML文档,另一个是SVG文档)。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 将样式表插入iframe
- 跟踪在页面加载时应用内联样式的JavaScript
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 定义完全独立的样式信息
- W3C循环样式的JavaScript
- jQuery/JavaScript在线公文包表单-打印样式表
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- FF和Chromium中CSS样式按钮的外观差异
- 如何首先设置样式<td>表中包含在窗体中的元素
- javascript问题正文样式
- 使用具有内联样式的tidy-html5
- DataTables-创建自定义分页样式(加载更多样式)
- 具有所有样式的文本正在复制到可编辑文本区域
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- 如何使用javascript将xsl样式应用于html中的嵌入式xml
- 将用户输入传递给 XSL 样式表
- XSL样式表将无法解析——为什么?
- javascript:在XML数据中动态添加xsl样式表的问题
- XSL 样式表活动内容被浏览器阻止