【问题标题】:XPath query to get javascript argumentsXPath 查询以获取 javascript 参数
【发布时间】:2012-04-24 17:04:16
【问题描述】:

我刚刚开始在 php 中使用 XPath 查询,虽然很多内容是不言自明的,但如果可以获取 onclick() 函数的值,我正在措辞。

一个例子

<a id="moreButton" onclick="showMore('#content','/page/2');">Show More</a>

我想出的最好的是//a[@id='moreButton']/@onclick,它返回showMore('#content','/page/2');

我可以进一步改进它以只返回/page/2 还是只需要使用 php 来解析我所拥有的?

【问题讨论】:

  • 实际上,这两个想要的参数可以通过评估 XPath 表达式来产生。 :)

标签: php xpath onclick arguments


【解决方案1】:

你必须用别的东西来解析它,XPath 不理解 JavaScript

【讨论】:

    【解决方案2】:

    实际上,可以通过评估以下 XPath 表达式来生成

    对于onclick属性中指定的函数的第一个参数:

    substring-before(substring-after(/*/@onclick, '('), ',')
    

    对于onclick属性中指定的函数的第二个参数:

    substring-before(
         substring-after(substring-after(/*/@onclick, '('), ','),
         ')'
                    )
    

    基于 XSLT 的验证

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select=
       "substring-before(substring-after(/*/@onclick, '('), ',')
       "/>
      ===========
    
       <xsl:copy-of select=
       "substring-before(
             substring-after(substring-after(/*/@onclick, '('), ','),
             ')'
                        )
       "/>
    
     </xsl:template>
    </xsl:stylesheet>
    

    当此转换应用于提供的 XML 文档时:

    <a id="moreButton"
      onclick="showMore('#content','/page/2');">Show More</a>
    

    计算两个 XPath 表达式,并将计算结果复制到输出:

    '#content'
    ===========
    
    '/page/2'
    

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2012-12-11
      相关资源
      最近更新 更多