为什么XSL中的内联java脚本不';服务器端XSLT转换中是否包含?

为什么XSL中的内联java脚本不';服务器端XSLT转换中是否包含?,java,xml,xslt,Java,Xml,Xslt,我在我的项目中的一个xsl文件中有下面的一段代码 <xsl:template name="javascript"> <script type="text/javascript"> function toggleDisplay(item) { //dummy function, actual code removed } </script> </xsl:template>

我在我的项目中的一个xsl文件中有下面的一段代码

<xsl:template name="javascript">
    <script type="text/javascript">
     function toggleDisplay(item)
    {
         //dummy function, actual code removed            
    }

</script>
</xsl:template>

功能切换显示(项目)
{
//虚拟函数,实际代码已删除
}

当xslt转换在java服务器端完成时,这个java脚本函数将不会包含在生成的html输出中。在服务器端XSLT转换的情况下,将包含单独的js文件。由于我是XSLT新手,我无法通过代码理解它在服务器端应用转换时如何跳过XSL文件中的java脚本函数。如果您在这方面有任何指导/帮助,我们将不胜感激。

您的模板是一个名称模板,除非您调用它,否则它不会被输出。 如果要将模板与调用模板指令一起使用,则应调用模板:

...
<xsl:call-template name="javascript" />
...
<xsl:template name="javascript">
   <script type="text/javascript">
      function toggleDisplay(item)
      {
      //dummy function, actual code removed            
      }
   </script>
</xsl:template>
。。。
...
功能切换显示(项目)
{
//虚拟函数,实际代码已删除
}
否则,如果要在xml源文档中遇到“javascript”元素时输出脚本元素,则应使用match属性:

...
<xsl:apply-templates select="javascript" />
...
<xsl:template match="javascript">
   <script type="text/javascript">
      function toggleDisplay(item)
      {
      //dummy function, actual code removed            
      }
   </script>
</xsl:template>
。。。
...
功能切换显示(项目)
{
//虚拟函数,实际代码已删除
}

您所做的只是显示一个命名模板,除非在其他地方调用它,否则它不会起任何作用。因此,请发布一个最小但完整的XSLT和输入XML示例,“您获得的输出和您希望让我们理解和再现问题的输出。@MartinHonnen此模板在xsl中没有显式调用,但在浏览器端完成xsl转换时,浏览器会在HTML输出中包含JavaScript,而如果在服务器端完成转换,则会跳过JavaScript。”。由于我的xsl和XML文件非常庞大和复杂,我无法将代码粘贴到这里,对此表示抱歉。@MartinHonnen我发现了这个问题,实际上在客户端发送了一个额外的包装器xsl,其中包含调用JavaScript模板的代码