素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

XPathをすごく長ったらしく書く

たとえば、Item - データベース: AutoPagerize - wedataのページのurlの欄をリンクにしたいとき。
短く書くと

var links=document.evaluate('//div[@class="entry-content"]//th[text()="url"]/following-sibling::td',document,null,7,null);
for(var i=-1;link=links.snapshotItem(++i),i<links.snapshotLength;){
link.innerHTML='<a href="'+link.textContent+'">'+link.textContent+'</a>';
}

みたいな感じでできる。(本当はDOM:rangeとかつかったほうがいい。)

XPathの部分を長ったらしく書くと、

var links=document.evaluate('/descendant-or-self::div[string(attribute::class)="entry-content"]/table/tbody/tr/th[string(text())="url"]/following-sibling::td',document,null,7,null);

でいい感じ。何故長くしようと思ったのかは忘れた。

追記:urlの部分は正規表現だからurlをリンクにしたとしてもあまりうまくいかないことに気づいた。