[Selectors4] :scope

   I was just informed that :scope has now been added to the draft of 
Selectors 4 [1].  I have some concerns regarding the new definition and 
how it differs from that which I originally wrote in the Selectors API 2 
draft [2].  Some important aspects of the original definition are no 
longer present in the Selectors 4 definition.

The original definition included the concept of a "contextual reference 
element" set with the intended purpose of allowing other specifications 
to define the specific elements that belong to that set in a given 
context.  This is the way in which Selectors API itself defined the 
elements that match, and it is the way in which HTML5 will (though it 
currently doesn't) define it for scope="".

The new definition in Selectors 4 omits this feature and instead just 
refers to the contextual reference element concept (actually incorrectly 
referred to as "contextual reference node") as an example of how 
Selectors API does it.  This means that any specification that wants to 
utilise :scope has to come up with their own way of defining it, rather 
than simply defining which elements belong to the "contextual reference 
element" set and referencing Selectors 4.

The new defintition also states:

   "The :scope pseudo-class represents an element that defines scope for
    the selector."

However, it's not clear what an "element that defines scope for the 
selector" actually means, since the concept of defining scope is not 
defined anywhere.  Note that it doesn't necessarily mean the root of the 
subtree within which the selectors are evaluated, since the elements 
that match :scope can occur anywhere within the document, depending on 
how and where the :scope selector is used.

Finally, there is also an open issue regarding "If the scope is not 
defined by an element, then ???".  The original definition already 
clearly defined this by stating that :scope matched, in order of preference:

1. Defined contextual reference elements.
2. The documentElement of the ownerDocument, if there is one. 
(effectively :root)
3. Otherwise, nothing.

So I would really prefer if Selectors 4 adopted the text of the original 
definition I wrote in Selectors API, rather than starting from scratch, 
since it has already received lots of review and refinements and deals 
with issues not handled by the new definition.

[1] http://dev.w3.org/csswg/selectors4/#scope-pseudo
[2] http://dev.w3.org/2006/webapi/selectors-api2/#the-scope-pseudo-class
[3] http://dev.w3.org/2006/webapi/selectors-api2/#evaluate-a-selector
Lachlan Hunt - Opera Software

Received on Wednesday, 13 July 2011 11:25:55 UTC