XPath descendant-or-self::*だとselfは選択されない?

http://gadgets.boingboing.net/ での出来事。
ページ一番下の Continue Reading Older Posts にマッチさせたい。

$x('id("continue-reading")//a[contains(self::*/text(),"Old")]');  // ok
$x('id("continue-reading")//a[contains(self::a/text(),"Old")]');  // ok
$x('id("continue-reading")//a[contains(descendant-or-self::a/text(),"Old")]');  // ok
$x('id("continue-reading")//a[contains(descendant-or-self::*/text(),"Old")]');  // ng

わかってないだけっぽい。
わかった。text()はテキストノードの集合をかえすんだと思ってたけどそうじゃなくて、コンテキストノードがテキストノードかどうかを返す。
だから

$x('id("continue-reading")//a/descendant-or-self::text()[contains(. ,"Old")];

ってかけばいい。




# # descendant-or-self::para はコンテキストノードの、 para という名前の子孫エレメントを選択する。コンテキストノード自身が para という名前のエレメントの場合は、そのコンテキストノードも選択する。
って書いてあるけどそういうものなの?

原文も変わんない。


descendant-or-self::para selects the para element descendants of the context node and, if the context node is a para element, the context node as well


text()のときだけのバグかなあ。