web-dev-qa-db-ja.com

Xを含む<tr>の次の<tr>を選択するXPathはどれですか。

<tr>
 <td>Blah!</td>
 <td>X</td> <!-- TR containing X -->
 <td>Woot!</td>
</tr>
<tr>
 <td>Useful Data, contents unknown</td> <!-- Select this TR -->
</tr>
<tr>
 <td>Useless data</td> <!-- Don't select this or any subsequent TR -->
</tr>
<tr>
 <td>More crap I don't want</td>
</tr>
<tr>
 <td>X</td> <!-- Another X -->
</tr>
<tr>
 <td>Useful</td> <!-- Do select this one, since previous has X -->
</tr>

Xを含む<tr>の直後に<tr>を返すXPathはどれですか。

41
Gordon

ChaosPandionとMartin v。Löwisの回答はどちらも、指定したサンプルで機能しますが、next trを要求している場合は、おそらく同じテーブルにさらにtr要素がある可能性があります。その場合、答えは以下または兄弟のすべてのtr要素を与えます。

また、サンプルではなく見出しの質問をすると、xpathはおそらくXがtdではなくthセルにあることを許可するはずです。そして、同じ親(thead、tbody、tfoot)内にある場合にのみ、次のtrが必要になると思います。

だから私は行きます

//tr[* = 'X']/following-sibling::tr[1]
45
Alohci

これはうまくいくはずです。

tr[td/text() = 'X']/following-sibling::node()
18
ChaosPandion
//td[.='X']/following::tr
11