I would like to make some changes in cssselect (and provide patches):
1. Change :link, :visited, :target, :hover, :active and :focus to never
match (silently, or maybe with a warning?) instead of raising. They
could translate to XPath [false]
2. Make :checked HTML-specific. (The implementation already is.) This
would involve having a document_language parameter which would default
to HTML in HTMLElement.cssselect and plain XML otherwise. :checked would
raise on non-HTML documents. Having this parameter could eventually
allow a language-specific (as in HTML vs. XML) implementation of :lang().
3. Implement :enabled and :disabled similarly to :checked. Assuming 2,
they would also be HTML-specific.
(The docs mention :unchecked and :indeterminate but there is no such
thing in the code or the selectors3 spec.)
What do you think?