>>359 ルート要素でデフォルト名前空間を設定しているからというより
bが名前空間URIを持っているからマッチしないんだという気がする。
XPathの中では実際の文書の接頭辞は意味ないからな。
doc.elements['//b']の返り値はバグのような気がする。
libxml-rubyで同様の処理をするとdoc.find("//b")は空のノードセットを返す。
#!/usr/bin/ruby -Ku
require 'xml/libxml'
require 'pp'
parser = XML::Parser.new
parser.string = <<EOS
<root xmlns='
http://example.com/'>
<a id="AAAAAe77057dcc82dbf40b81595e09291a" name="A1">
<b id="BBBBBe77057dcc82dbf40b81595e09291a" name="B1"/>
</a>
<a id="CCCCCe77057dcc82dbf40b81595e09291a" name="A2">
<b id="DDDDDe77057dcc82dbf40b81595e09291a" name="B2"/>
<b id="EEEEEe77057dcc82dbf40b81595e09291a" name="B3"/>
</a>
</root>
EOS
doc = parser.parse
p doc.find("//b").class
p doc.find("//x:b",'x:
http://example.com/')
p doc.find("//x:b[@name='B3']",'x:
http://example.com/')