class Nokogiri::XML::Node

def ancestors(selector = nil)

the ancestors must match +selector+
Get a list of ancestor Node for this Node. If +selector+ is given,
##
def ancestors(selector = nil)
  return NodeSet.new(document) unless respond_to?(:parent)
  return NodeSet.new(document) unless parent
  parents = [parent]
  while parents.last.respond_to?(:parent)
    break unless (ctx_parent = parents.last.parent)
    parents << ctx_parent
  end
  return NodeSet.new(document, parents) unless selector
  root = parents.last
  search_results = root.search(selector)
  NodeSet.new(document, parents.find_all do |parent|
    search_results.include?(parent)
  end)
end