1

我刚刚开始在 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 来解析我所拥有的?

4

2 回答 2

0

实际上,这可以通过评估以下 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'
于 2012-04-25T02:10:38.450 回答
0

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

于 2012-04-24T17:14:52.573 回答