HTML是由XSLT编写的。
作为一个业余的XSLT开发者
我想在HTML(头部或正文)中写一个javascript块。
以便在HTML渲染时,脚本可以被执行(呵呵,DHTML)。
我知道如何在XSLT本身中使用脚本,但不知道XSLT如何将脚本块写成DHTML.我知道如何用手写HTML,但我当然希望XSLT来完成重任。
下面的代码是我期望的,但没有工作。它只是将代码显示在页面的头部。
<head>
<title>My HTML</title>
<msxsl:script type="text/javascript" version="1.3">
<![CDATA[
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
]]>
</msxsl:script>
</head>
这是为NHS工作,所以漂亮的请......谢谢你。
如果你的XSLT创建的HTML应该包含一个HTML script
元素,那么你就会以与使用 head
或 title
元素。在XSLT中,XSLT是XML,你需要确保你的内联Javascript代码不会破坏XML规则,就像你在CDATA部分所做的那样,但在 script
元素将是一个普通的 script
元素而非 msxsl:script
元素。
除此之外,还可以使用 xsl:output method="html"
,没有什么特别之处。
这是有问题的,你的特定代码中的 head
节使用 var coll = document.getElementsByClassName("collapsible");
并试图在任何元素被解析之前处理该集合,但这是一个适当使用Javascript的问题,也许是一个事件处理程序或函数调用,而不是内联代码。
取决于你的XSLT在哪里执行(客户端或服务器),XSLT和Javascript的整个交互可能是脆的,动态添加脚本,即使没有XSLT,跨浏览器也是一个挑战。