neatNodePath
predicatesの組み合わせのうち、もっともマッチする要素数が少ないものを足していく、というルールで下から上にnodePath作ったらへんなのができる。
<div id="main"> <div class="category"> <ul> <li><a href="/cat/js">js</a></li> <li><a href="/cat/c">C</a></li> </ul> </div> <div class="nav"> <ul> <li><a href="/page/1">prev</a></li> <li><a href="/page/2">2</a></li><li><a href="/page/3">3</a></li> <li><a href="/page/4">4</a></li><li><a href="/page/5">5</a></li> <li><a href="/page/6">6</a></li> <li><a href="/page/3">next</a></li> </ul> <ul> <li><a href="/page/1">prev</a></li> <li><a href="/page/2">2</a></li><li><a href="/page/3">3</a></li> <li><a href="/page/4">4</a></li><li><a href="/page/5">5</a></li> <li><a href="/page/6">6</a></li> <li><a href="/page/3">next</a></li> </ul> </div> </div>
これで作ると
//div[contains(concat(" ",@class," ")," nav ")]/ul[last()]/li[last()]/a
こんなかんじになっちゃう。
いや、でも人間にとってなんかわかりにくいだけで間違ってはないかなー...