通过传递值在XSL上运行JS代码

时间:2015-09-18 12:10:20

标签: javascript html xml xslt

我有一段用XSL填充表的代码。我必须修改它以集成本地化。我只是在JS端进行函数调用来进行本地化。但是我无法在我的XSL中运行该JS代码。这是我尝试过的:

<xsl:when test="@name != ''">
  <tr>
    <td>
     <script>
      localizationResources.get('
     </script>
     <xsl:value-of select="@name"/>
     <script>
      ')        
     </script>                          
    </td>
    <td>
    <xsl:value-of select="@value"/>
    </td>
   </tr>
</xsl:when>

我的目标是将表格行作为名称和值,通过我的javascript调用()翻译 name localizationResources.get(KEY_FOR_TRANSLATION)

编辑:这有效:

<td>
    <script> alert(decodeURI('<xsl:value-of select="@value"/>')) </script>
</td>

然而,这不是:

<td>
    <script> decodeURI('<xsl:value-of select="@value"/>') </script>
</td>

1 个答案:

答案 0 :(得分:0)

您无法在XSLT运行时(例如,这是您尝试过的)运行JavaScript代码,也就是说,XSLT转换过程的一部分。但是,您当然可以将JavaScript包含在由XSLT生成的HTML文件中。然后,HTML文件中的JavaScript通常会在浏览器中执行。

我建议从一些非常简单的测试开始,如果你的JavaScript代码是在你希望拥有它的位置执行的,并且是否通过XSLT传递的参数得到了纠正。类似的东西:

<td>
     <script>
      alert('<xsl:value-of select="@name"/>');
     </script>                          
</td>

直接用这种方式编写JavaScript代码的唯一缺点就是处理JavaScript中的大于和小于运算符。你必须在XSLT中逃避它们。