Объединить значение тегов XML в таблице XSLT со ссылкой через JQuery? - PullRequest
0 голосов
/ 03 июня 2018

У меня есть таблица в файле .xsl со следующим:

<table>
<xsl:for-each select="xmlfile/example">
<tr class="clickable">
  <td><xsl:value-of select="example_name"/></td>
</tr>
</xsl:for-each>
</table>

Я хочу, чтобы строки таблицы открывали вкладку / окно с поисковым запросом Google с добавленным значением "example_name"на ссылку через JQuery;как то так, но где это на самом деле работает:

$(".clickable").click(function(){
  window.open("https://www.google.com/search?q=" + "<xsl:value-of select="example_name"/>");
});

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Используйте

<table>
<xsl:for-each select="xmlfile/example">
<tr class="clickable" data-query="{example_name}">
  <td><xsl:value-of select="example_name"/></td>
</tr>
</xsl:for-each>
</table>

, а затем

$(".clickable").click(function(){
  window.open("https://www.google.com/search?q=" + $(this).data('query'));
});
0 голосов
/ 03 июня 2018

Вы не можете вызывать XSLT из JavaScript или вызывать JavaScript из XSLT, как в вашем примере обработчика кликов (*).Если вы используете XSLT на стороне сервера, что не так с использованием

<td><a>
  <xsl:attribute name="href">
    <xsl:value-of select="concat('https://www.google.com/search?q=', example_name)"/>
  </xsl:attribute>
  <xsl:attribute name="target">_blank</xsl:attribute>
  <xsl:value-of select="example_name"/>
</a></td>

Если вам абсолютно необходимо использовать JavaScript для открытия нового окна, у вас будут проблемы из-за слишком большого количества уровнейвложенного цитирования.Например,

<td><a>
  <xsl:attribute name="href">
    <!-- INVALID XML ATTRIBUTE SPECIFICATION
         just for demonstrating the problem with nesting single quotes
         into single quoted literals into double quoted attributes -->
    <xsl:value-of select="concat('javascript:window.open("https://www.google.com/search?q=", example_name)"/>
  </xsl:attribute>
  <xsl:value-of select="example_name"/>
</a></td>

См. Удаление двойных кавычек и косых черт в XSLT для техники, чтобы помочь здесь.

*) Раньше был EXSLT много лет назад, который позволялXSLT должен быть расширен за счет пользовательских функций JavaScript, хотя он никогда не запускался в браузере.Был также проект Sarissa (как в 2006 году или около того), чтобы принести XSLT в браузеры, в дополнение к тому, что было возможно с <?xml-stylesheet> и специфичными для браузера способами вызывать обработку XSLT.И я считаю, что новейший XSLT-движок Saxonica, как было продемонстрировано, также работает на стороне браузера, а также имеет средства интеграции, такие как анализ JSON, для использования в такой среде.

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