【问题标题】:Combine the value of XML tags on an XSLT table with a link via JQuery?将 XSLT 表上 XML 标记的值与通过 JQuery 的链接结合起来?
【发布时间】:2018-06-03 00:06:55
【问题描述】:

我在 .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 搜索查询打开选项卡/窗口,并通过 JQuery 将“example_name”的值添加到链接中;像这样的东西,但它实际上在哪里工作:

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

提前致谢。

【问题讨论】:

    标签: javascript jquery xml xslt


    【解决方案1】:

    您不能从 JavaScript 调用 XSLT 或从 XSLT 调用 JavaScript,就像在您的示例单击处理程序 (*) 中一样。如果您在服务器端使用 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>
    

    请参阅Removing double quotes and slashes in XSLT 以获取此处提供帮助的技术。

    *) 多年前曾经有 EXSLT,它允许通过 JavaScript 自定义函数扩展 XSLT,尽管它从未在浏览器中运行。除了 &lt;?xml-stylesheet&gt; 和特定于浏览器的调用 XSLT 处理的方法之外,还有一个 Sarissa 项目(如 2006 年左右)将 XSLT 引入浏览器。而且我相信 Saxonica 最新的 XSLT 引擎已被证明可以在浏览器端运行,并且还具有集成设施,例如 JSON 解析,可在此类环境中使用。

    【讨论】:

    • 感谢您的帮助!
    【解决方案2】:

    使用

    <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'));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2010-12-26
      • 1970-01-01
      • 2017-04-06
      • 2021-06-13
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      相关资源
      最近更新 更多