def css *paths
handler = ![
Hash, String, Symbol
].include?(paths.last.class) ? paths.pop : nil
ns = paths.last.is_a?(Hash) ? paths.pop : nil
sub_set = NodeSet.new(document)
each do |node|
doc = node.document
search_ns = ns || (doc.root ? doc.root.namespaces : {})
xpaths = paths.map { |rule|
[
CSS.xpath_for(rule.to_s, :prefix => ".//", :ns => search_ns),
CSS.xpath_for(rule.to_s, :prefix => "self::", :ns => search_ns)
].join(' | ')
}
sub_set += node.xpath(*(xpaths + [search_ns, handler].compact))
end
document.decorate(sub_set)
sub_set
end