次の HTML の Xpath の作成に問題があります。
<html>
<body>
<table class="tablesorter">
<tbody>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>
<span class="span1">
<span class="span2">Out</span>
<span class="span3">SMTH</span>
<span class="span4">Out</span>
</span>
</td>
</tr>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>In</td>
</tr>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>In</td>
</tr>
</tbody>
</table>
</body>
</html>
私が望むのは、3 番目の各 td ノードのコンテンツ (子がない場合) または class="span2" を持つスパンのコンテンツを返す Xpath を作成することです。たとえば、この html の場合、次のように返されます。
Out,In,In
必要なスパン ノードを返す Xpath があります。次のようになります。
//table[@class = 'tablesorter']//td[3]/descendant::*[@class='span2']/text()
そして、各 3d td ノードの単純なコンテンツを返す Xpath があります。
//table[@class = 'tablesorter']//td[3][count(descendant::*)=0]/text()
しかし、必要な Xpath は 1 つだけです。なぜなら、'In' または 'Out' 値の正しい順序付け (テーブルでの順序付け) が必要だからです。