Javascript可以破解XSL转换吗? XSL 1.0

时间:2015-12-04 15:00:32

标签: javascript xslt

我现在使用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。

1 个答案:

答案 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>