簡體   English   中英

將外部javaScript函數調用到XSLT文件中

[英]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&#233;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&#234;t&#233; minist&#233;riel</xsl:when>
          <xsl:when test="text() = 'mc'">Texte compl&#233;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:&#10;        javascript:OpenPopupDetailsTexte('cgitva_T19_N1', 1)&#10;      " 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM