2015-09-18 24 views
0

我有一段用XSL填充表的代碼。我必須修改它以集成本地化。我只在JS端使用函數調用進行本地化。但是我無法在我的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調用(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> 

回答

0

不能運行JavaScript代碼的,可以這麼說,在XSLT運行時XSLT transformng過程的一部分(如果這是你嘗試過什麼)。但是,您當然可以將JavaScript包含到由XSLT生成的HTML文件中。 HTML文件中的JavaScript將通常在瀏覽器中執行。

如果您的JavaScript代碼在您想要的位置執行,並且通過XSLT傳遞的參數得到糾正,那麼我建議您從一些非常簡單的測試開始。喜歡的東西:

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

只有直接寫入JavaScript代碼這種方式的缺點,是大於,比運營商在JavaScript較少的處理。你必須在XSLT中轉義它們。

+0

我不想在XSL中運行該JavaScript代碼。它將在包含該XSL的HTML文件中運行。所以,你做的事情完全一樣。但它不會產生任何東西。 (也沒有錯誤),即這不起作用:'decodeURI('')' – kamaci