Похоже, что Hpricot не обрабатывает пространства имен, которые полностью.
Вы можете выбрать, если знаете элемент независимо от префикса:
doc.search("title")
=> #<Hpricot::Elements[{elem <title> {emptyelem <io:content part="title">} </title>}]>
... но это не то, что вы спросили.
Вот мой обходной путь: сначала найдите все элементы пространства имен с помощью регулярных выражений, а затем найдите те, которые используют Hpricot:
elems = doc.to_s.scan(/<\s*(n1:\w+)/).uniq.join("|")
=> "n1:content|n1:term"
doc.search(elems)
=> #<Hpricot::Elements[{emptyelem <n1:content description="Standard CSS" uuid="d069071c-3534-4945-9fb6-2d7be35a165e">}, {elem <n1:term> "Content Development" </n1:term>}]>