2009-08-23 9 views
28
<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>の直後に、どのXPathが<tr>を返しますか?<tr>にXが含まれた後、XPathは次の<tr>を選択しますか?

答えて

36

ChaosPandionのとマーティンV。LOWISの答えの両方あなたが与えるサンプルのための仕事が、あなたは TRを求めている場合は、おそらくいくつかのケースでは、同じテーブルでさらにTR要素があります。その場合、答えはすべての次のまたは兄弟tr要素を与えるでしょう。

また、サンプルではなく見出しの質問によって、xpathはおそらくtdの代わりにthセルにあるXを許可する必要があります。そして、私はあなたが同じ親(thead、tbody、tfoot)にいる場合、次のtrだけが必要であると推測しています。

だから私は

//tr[* = 'X']/following-sibling::tr[1] 
のために行くだろう
8
//td[.='X']/following::tr 
10

これは動作するはずです。

tr[td/text() = 'X']/following-sibling::node() 
関連する問題