Hi there.
(this message contains personal comments and does not represent an
official response from the CSS WG)
I have read the recent Selectors API Level 2 draft [1] and have a few
important comments to make:
1. I don't like the idea of refNodes. I think having the APIs specified
at Element level makes it confusing. I would recommend applying the
NodeSelector interface to NodeList instead. If queryScopedSelector()
and queryScopedSelectorAll() are applied to an Element or a NodeList,
the corresponding element(s) are the refNodes of the query.
Same comment for matchesSelector().
2. I am extremely puzzled by the parsing model of scoped selectors. In
particular, I think that the :scope pseudo-class introduces things
that go far beyond scoping. Let's consider the selector ":scope+p".
Clearly, it's _not_ scoped since it queries element that are outside
of the subtree the context element is the root of. Furthermore, these
elements can be queried without scopes, and I don't see why this is
needed at all!!!
I would recommend dropping the pseudo-class :scope and make a simpler
model where a fictional :scope pseudo-class and a descendant
combinator are prepended to all selectors passed as the argument of
the corresponding APIs.
I don't like the idea that implementors will have to check if the
first sequence of simple selectors in a selector contains or does
not contain a given pseudo-class to prepend something to the context.
This is clearly the kind of things I think we should avoid in
Selectors in general.
3. the section about :scope does not include error handling. What
happens if multiple :scope are present?
4. what's the specificity of that pseudo? Since it's proposed as a
regular and non-fictional pseudo, web authors _can_ use it in
regular stylesheets, even if it's meaningless outside of a scoped
stylesheet. What's the behaviour in that case? What's the
specificity?
[1] http://www.w3.org/TR/selectors-api2/
</Daniel>
--
W3C CSS WG, Co-chair