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はJavaScriptを理解しません

于 2012-04-24T17:14:52.573 に答える
0

実際、これは次のXPath式を評価することで生成できます。

属性で指定された関数の最初の引数の場合onclick

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

属性で指定された関数の2番目の引数の場合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>

2つのXPath式が評価され、この評価の結果が出力にコピーされます。

'#content'
===========

'/page/2'
于 2012-04-25T02:10:38.450 に答える