def xpath *paths
return NodeSet.new(document) unless document
paths, handler, ns, binds = extract_params(paths)
sets = paths.map { |path|
ctx = XPathContext.new(self)
ctx.register_namespaces(ns)
path = path.gsub(/\/xmlns:/,'/:') unless Nokogiri.uses_libxml?
binds.each do |key,value|
ctx.register_variable key.to_s, value
end if binds
ctx.evaluate(path, handler)
}
return sets.first if sets.length == 1
NodeSet.new(document) do |combined|
sets.each do |set|
set.each do |node|
combined << node
end
end
end
end