[英]Call external javaScript function into XSLT file
我正在嘗試在XSLT文件中調用外部javaScript函數,當我單擊圖像元素時將調用該函數。
XSLT文件如下所示:
<xsl:template match="link|para//link">
<xsl:element name="a">
<xsl:attribute name="href">
<!--OpenPopupDetailsTexte('<xsl:value-of select="@href"/>', 1);-->
<!--alert();-->
</xsl:attribute>
<xsl:attribute name="title">
<xsl:choose>
<xsl:when test="text() = 'n'">Note circulaire</xsl:when>
<xsl:when test="text() = 'm'">Modification</xsl:when>
<xsl:when test="text() = 'd'">Décret d application</xsl:when>
<xsl:when test="text() = 'ma'">Abrogation</xsl:when>
<xsl:when test="text() = 't'">Renvoi au texte</xsl:when>
<xsl:when test="text() = 'a'">Arrêté ministériel</xsl:when>
<xsl:when test="text() = 'mc'">Texte complétant cette disposition</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src">/assets/projets/images/<xsl:value-of select=". "/>.gif</xsl:attribute>
<xsl:attribute name="border">0</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:template>
我的外部函數的名稱是OpenPopupDetailsTexte 。
HTML中的結果是:
<a href="unsafe: javascript:OpenPopupDetailsTexte('cgitva_T19_N1', 1) " title="Note circulaire"><img src="/assets/projets/images/n.gif" border="0"></a>
請注意,您沒有在XSLT中調用外部javascript函數。 您只是在輸出文本,當在瀏覽器中處理結果輸出時,這些文本恰好會被解析為Javascript。
無論如何,您需要將相關的javascript文本包裝在xsl:text
以防止包含換行符。 (如果同一節點中存在非空格字符,則不會在XSLT中剝離空格)
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:text>javascript:OpenPopupDetailsTexte('<xsl:text>
<xsl:value-of select="@href"/>
<xsl:text>', 1);</xsl:text>
</xsl:attribute>
或者,更好的是,使用屬性值模板 ...
<a href="javascript:OpenPopupDetailsTexte('{@href}', 1);">
因此,花括號中的表達式表示要求值的表達式,而不是按字面意思輸出。 (還請注意,當名稱變為靜態時,無需使用xsl:element
創建元素)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.