web-dev-qa-db-ja.com

最初の出現のみを検出するXPath式とは何ですか?

このXpath式"//span[@class='Big']"を使用し、<span>タグとclass='Big'の下にあるそのページのすべての要素を取得しました。

私の質問は、ページの最初の出現だけでなく、すべての出現が必要な場合、正しいXpath式は何でしょうか?

ありがとう、ナリン

43
Narin

正解(括弧に注意)

(//span[@class='Big'])[1]

一般的な場合、次の式は間違っています:

//span[@class='Big'][1]

ドキュメント内のすべてのspan要素を選択し、最初の述語の条件を満たし、その親の最初のそのような子であるため XMLドキュメント内にこのような要素が多数あり、それらすべてが選択されます。

詳細な説明については、以下を参照してください: https://stackoverflow.com/a/5818966/36305

115

class 属性がequal toBig(要素にアタッチされた他のクラスなし):

(//span[@class="Big"])[1]

...次のJavaScript式に似ています:

document.querySelectorAll('span[class="Big"]')[0]

一方、Big任意の数の1つのクラスの class 属性(唯一のクラスではなく)、次の式を使用できます。

(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]

...次のJavaScript式に似ています:

document.querySelectorAll('span.Big')[0]
5
Grant Miller