On Monday I published an update to XML Selector. This release (0.3.0) involved some significant refactoring and makes three important changes:
The dependency on libxmljs has been removed
As I had explained previously, interdependencies between C++ addons in Node.js turns out to be a really bad idea. Removing this dependency was necessary to provide a module that could be reliably built and run on a variety of platforms.
Support for newer versions of the Node.js engine has been added
The previous releases of XML Selector supported only the 0.10 version of Node. Significant V8 changes starting in 0.11 meant the module wouldn't even compile on newer versions. The use of nan now allows the module to build correctly for Node versions 0.10 through 0.12.
The document representation is now based on the DOM
As the README states, it is currently a subset of DOM Level 1, but the move away from libxmljs allows for document nodes to start implementing the DOM interface. The original hope was to offer interoperability with an existing, widely-used package. I think the experience of trying to do that has shown it's probably a better idea to offer something based on a standard.
Any general feedback on the updates is welcome in the comments below. Please report any problems as a GitHub issue.