123456789_123456789_123456789_123456789_123456789_

Roadmap for API Changes

overhaul serialize/pretty printing API

*#530 XHTML formatting can't be turned off

*#415 XML formatting should be no formatting

overhaul and optimize the SAX parsing

Node should not be Enumerable; and should have a better attributes API

*#679 Mixing in Enumerable has some unintended consequences; plus we want to improve the attributes API

improve CSS query parsing

*#528 support :not() with a nontrivial argument, like :not(div p.c)

*#451 chained :not pseudoselectors

*#394 nth-of-type is wrong, and possibly other selectors as well

*#309 incorrect query being executed

*#350 :has is wrong?

DocumentFragment

Better Syntax for custom XPath function handler

*PR#464

Better Syntax around Node#xpath and NodeSet#xpath

Encoding

We have a lot of issues open around encoding. How bad are things? Somebody who knows encoding well should head this up.

Reader

It's fundamentally broken, in that we can't stop people from crashing their application if they want to use object reference unsafely.

Class methods that require Document

There are a few methods, like Nokogiri::XML::Comment.new that require a Document object.

We should probably make Document instance methods to wrap this, since it's a non-obvious expectation and thus fails as a convention.

So, instead, let's make alternative methods like Nokogiri::XML::Document#new_comment, and recommend those as the proper convention.

collect_namespaces is just broken

collect_namespaces is returning a hash, which means it can't return namespaces with the same prefix. See this issue for background:

#885

Do we care? This seems like a useless method, but then again I hate XML, so what do I know?

Overhaul ParseOptions

Currently we mirror libxml2's parse options, and then retrofit those options on top of Xerces-J for JRuby.

By "easier to use" I mean: