我有一个xml文档,它被转换为xhtml。 现在我需要添加打印按钮,它将使用xsl-fo转换输出(基于天线室xhtml2fo.xsl http://www.antennahouse.com/XSLsample/XSLsample.htm)。
这就是我提出的,但它似乎没有按预期工作
<script language="JavaScript">
function convert()
{
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("xhtml2fo.xsl")
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
// This won't work
xml.load(document.getElementsByTagName('html')[0].outerHTML)
// this prints out html element as expected
//my_window.document.write(document.getElementsByTagName('html')[0].outerHTML)
my_window = window.open("", "mywindow1");
my_window.document.write(xml.transformNode(xsl))
}
</script>
如何在客户端进行此操作?我如何能够按需转换工作
答案 0 :(得分:0)
这里的问题是你需要从浏览器中获取XSL-FO并进入Antenna house XSL-FO处理器可执行文件。这违反了JavaScript安全原则,不能仅使用JavaScript。
您必须使用特定于浏览器的解决方案:可以使用Firefox扩展程序,在IE中使用Active-X或Silverlight插件或使用Chrome Native Client应用程序。
更好的解决方案是在服务器端进行转换,下载转换后的XSL-FO文件并在Antennna House可执行文件中打开它(甚至可以通过将.fo
扩展名指定为始终在Antenna中打开来自动执行屋)。