我现在使用XSLT几个月了,我以前用过包含js文件或直接在XSL中使用<script></script>
标签。
但今天我不明白的事情正在发生,这是我的主要模板:
<xsl:template name="content">
<div class="panel">
<div class="panel-heading" style="padding-top: 15px;">
<div class="jumbotron" style="margin-bottom: 0px;">
<h1 class="text-center">Fiche auteur</h1>
</div>
</div>
<div class="panel-body">
...
...
</div>
</div>
</xsl:template>
一切运作良好但是当我添加一些javascript时,不生成html,就像javascript打破了xsl转换一样
<xsl:template name="content">
<script type=text/javascript>
$(document).ready(function() {
console.log("ko"); <-- output ko in a blanc page -->
});
</script>
<div class="panel">
<div class="panel-heading" style="padding-top: 15px;">
<div class="jumbotron" style="margin-bottom: 0px;">
<h1 class="text-center">Fiche auteur</h1>
</div>
</div>
<div class="panel-body">
...
...
</div>
</div>
</xsl:template>
所以我的问题很简单,javascript是否有可能打破XSL转换,如果可以的话,我该怎样阻止它呢?
我尝试使用<script src="my-path/myFile.js"></script>
将其导出到文件中,但问题相同。
更新 根据评论和回复的建议,脚本更新为:
<script type="text/javascript">
<![CDATA[
$(document).ready(function() {
console.log("ko");
});
]]>
</script>
没有变化,它仍然在空白页面中显示ko,并在删除时显示良好的html。
答案 0 :(得分:0)
如果必须使用内联脚本,请使用CDATA部分。我强烈建议您使用外部文件(<script src="..."></script>
)。
另外,不要在脚本体内使用XML注释语法,而是使用JS注释语法。
<xsl:template name="content">
<script type="text/javascript"><![CDATA[
$(document).ready(function() {
console.log("ko"); // output ko in a blanc page
});
]]></script>
<!-- ... -->
</xsl:template>