... regarding [attribute=value] and other matching.
Also explained (in comments) the different matching patterns.
And fixed a bug where /> would be listed as an attribute.
And added a few more tests.
fixed :not() in that it filters after all matches, preventing later
selection of elements that shouldn't have been there
Also, ditched the idea of returning a container node, since it was
complex and didn't add much. The functionality could be reintroduced by
having Set implement the __call or maybe even __index to return the
combined results of all its elements.
Extracting microdata is fairly tedious compared to microformats, due to
its generality. Should probably be included as a standard function of
the parser, or even better, as a separate module, which then can
concern itself with being fully standards compliant.