6
//br/preceding-sibling::normalize-space(text())

nokogiriで無効なxpath式を取得しています

4

1 に答える 1

10

normalize-spaceは関数です。そこでは使えません。
ノードセットが必要です。

多分あなたは意味します

//br/preceding-sibling::*

または、角かっこ内の述語でnormalize-spaceを使用できます。述語は、ノードセットのフィルターまたはセレクターと考えてください。だからあなたはこれを行うことができます:

//br/preceding-sibling::*[normalize-space()='Fred']

英語では、「<br>ドキュメントの前にあるすべての要素で、(正規化された)テキストが「フレッド」である」という意味になります。このドキュメントの内容:

<html>
  <p>
    <h2>Fred</h2>
    <br/>
  </p>
  <table>
    <tr>
      <td>
        <br/>
      </td>
    </tr>
  </table>
</html>

...xpath式は<h2>ノードを選択します。

私はこれをcodeplexで利用可能な無料のXpathVisualizerツールで理解しました。

ここに画像の説明を入力してください

于 2009-10-11T17:28:51.323 に答える