I agree with Ian that :subject isn't the best way to solve this problem.
It may seem like a 'selector' but the difference is that it lets the author
select an element in a real selector, where a selector makes the UA select
an element from the document tree.
It also makes SPAN:subject B more specific than I SPAN, which shoulnd't be
the case.
I don't know if it is allowed but
[SPAN] B
instead of
SPAN:subject B
seems like a nice one to me.
It's based on old ASCI menu's, where you had
[ OK ] ( Cancel )
etc.
The 'impossible' selections from Ian can be done by :subject (or an equal
solution) if it does also apply to partial selectors inside ()
> Proposed syntax: x:matches(y) z
> WD syntax: /* not possible ? */
Would be: ([x] y) z
explanation: [x] y matches some x, so this rule matches some z that is a
descendant of such an x
> Proposed syntax: a:matches(~ b) > c:matches(~ d)
> WD syntax: /* not possible ? */
This would then be: ([a] ~ b) > ([c] ~ d)
Note that it's a bit confusing which element is now the subject
> bowl:contains(apple):contains(pear)
[([bowl] apple)] pear
or shorter: [[bowl] apple] pear
> bowl:contains(fish) + cat
([bowl] fish) + cat
and [[bowl] fish] + cat
would be the same as bowl:contains(fish):contains( + cat)
> A B:matches(C D) E
A ([B] C D) E
Sjoerd Visscher