Вызов внешней функции javaScript в файл XSLT. - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь вызвать внешнюю функцию javaScript в файле XSLT, функция будет вызвана, когда я нажму на элемент изображения.

Файл 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>

1 Ответ

0 голосов
/ 15 января 2019

Обратите внимание, что вы не вызываете внешнюю функцию javascript в вашем XSLT. Вы просто выводите текст, который будет обработан как 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 для создания элемента, когда имя будет статичным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...