2009-08-23 8 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> 

¿Qué XPath devolvería el <tr> inmediatamente después del <tr> que contiene X?¿Qué XPath selecciona el siguiente <tr> después de un <tr> que contiene X?

Respuesta

36

de Martin v ChaosPandion y. Respuestas tanto trabajo para la muestra que da del Löwis, pero si usted está solicitando a la siguiente tr, es de suponer que en algunos casos hay más elementos TR en una misma mesa. En ese caso, las respuestas darán todos los siguientes o siguientes elementos hermanos tr.

También por la pregunta principal en lugar de la muestra, el xpath probablemente debería permitir que la X esté en una celda th en lugar de td. Y supongo que solo querrás el siguiente tr si está en el mismo padre (thead, tbody, tfoot).

Así que yo iría a

//tr[* = 'X']/following-sibling::tr[1] 
8
//td[.='X']/following::tr 
10

Esto debería funcionar.

tr[td/text() = 'X']/following-sibling::node() 
Cuestiones relacionadas