<table>
<tr>
<td></td>
<td rowspan=2></td>
<td></td> <-- select
</tr>
<tr>
<td></td>
<td></td> <-- select
</tr>
<tr>
<td></td>
<td></td>
<td></td> <-- select
</tr>
<tr>
<td></td>
<td></td>
<td></td> <-- select
</tr>
</table>
我正在尝试使用xpath 1.0构造一个表达式,它将在前面的/ tr / td节点集中包含rowspan的情况下选择第二个/ tr / td节点,在所有其他情况下使用第三个td。这可能吗?
EDIT ::: 澄清一下,这不是last()就足够的实际数据。 td节点的实际数量是不确定的。
答案 0 :(得分:1)
丑陋但有效:
/table/tr/td[2][../preceding-sibling::*[1]/td/@rowspan] | /table/tr/td[3][not(../preceding-sibling::*[1]/td/@rowspan)]
答案 1 :(得分:0)
你可以试试这个:
httpPromise = $http.get('/materials/:name');
使用以下xml:
//td[count(@rowspan)>0]/following-sibling::*[name()='td'][1] | //td[position()=3 and not ( preceding-sibling::*[name()='td' and count(@rowspan)>0] )]
它会产生:
<table>
<tr>
<td rowspan="2"></td>
<td>following rowspan 1</td>
<td>following rowspan 2</td>
</tr>
<tr>
<td></td>
<td></td>
<td>third1</td>
</tr>
<tr>
<td></td>
<td></td>
<td>third2</td>
</tr>
<tr>
<td></td>
<td></td>
<td>third3</td>
</tr>
</table>