用XSLT编写DHTML

问题描述 投票:0回答:1

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工作,所以漂亮的请......谢谢你。

javascript xslt dhtml
1个回答
0
投票

如果你的XSLT创建的HTML应该包含一个HTML script 元素,那么你就会以与使用 headtitle 元素。在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,跨浏览器也是一个挑战。

© www.soinside.com 2019 - 2024. All rights reserved.