Selectors 3 and CSS Namespaces Module are RECs
By glazou on Friday 30 September 2011, 09:44 - CSS and style - Permalink
At the end of 1998, a while after the release of CSS 2, I took an action item in the CSS Working Group to become the author/editor of a new beast in our Group, a module... CSS 2 was already a big big change from CSS 1. And when I say 'big', it means the spec switched from the 15 printed pages of CSS 1 to the hundreds of CSS2. So we decided to 'modularize' CSS 3. Since I already worked a lot on Selectors and even implemented them before, this was a natural choice for me.
At the beginning of january 1999, my first draft was ready. It's unfortunately not public and the original document was lost when I left my employer a year later (Electricité de France, fwiw). The second draft though is still available, although in a web space restricted to CSS WG Members, sorry for that... The first public draft, dated 03-aug-1999 is available here. You can see that in that document, the :subject
pseudo-class, corresponding to the $
descriptor present in the current Selectors 4 draft, was present... Alas, it was later removed because of browser vendors expressing implementation concerns. That pseudo, a top request from the Web Authors' community, originally came from something I specified and implemented myself in my transformation language based on the CSS syntax/grammar: STTS3.
Despite of what I could call a poor support from implementors at that time, I also decided to add major new stuff to Selectors:
- the
:nth-child()
and friends pseudos, captured from an early draft of XSL/XPath I found impressive. I really wanted them to be able to style table rows, columns and cells. For the record, thean+b
syntax of the argument was proposed by Tantek Çelik's father. - the
:target
pseudo, proposed by Håkon Lie. Håkon did not suspect the power of that pseudo at that time, until I found a super-interesting use case for that pseudo... See the demo (in a browser implementing :target, of course...). - the indirect adjacent combinator
~
, that was really missing.
Then namespaces and the negation pseudo :not()
arrived, and the spec changed only a little bit between 2000 and now, waiting for browser implementations, a completed Test Suite and interoperability.
Today, after more than 12 years, I am happy. Really happy and a bit proud too I must say. Older, but happy My baby just became a W3C Recommendation, after the hard work of many people who caught the flag and became editors of the document and/or the Test Suite... Yay!
Similarly, the original CSS Namespaces proposal, authored by my co-chair Peter Linss during the Netscape era (gosh, time flies...) became a REC yesterday after too many years of wait. Yay again !
All in all, the CSS Working Group released 5 new W3C Recommendations between the beginning of june 2011 and now ! Wooohooo !
So where are we now? Selectors 4 start emerging, and I would like to issue here a clear and loud warning with my CSS WG Co-chair hat on: this is an early stage draft and the presence of a feature in that document does not imply IN ANY WAY that the final specification will contain it and that browser vendors will offer support for it. In particular, I already noticed the major response of the community to the presence of the subject selector and the matches-any functional pseudo-class. Guys, please cool down... These two features still represent a real implementation challenge for browsers and I just cannot tell if they will remain in the spec or disappear from it. Please note, this is not the first time - as I wrote above - such features are included into a Selectors draft... Been there, done that.
Don't misunderstand me ! I am not saying these features will never ever reach a browser near you ! I am only saying standardization is a complex process also based on implementability of the features we design AND browser vendors' strategies. Be optimistic, but also be realistic. Thanks.
Comments
The only solution to namespaces in general in IT would be somekind of a GS1 bar codes space highly opened, but still managed administratively, and used as inodes are used in a file system, or address locations in a lisp environment, this with integrating existing ones of course, such as unicode code points for instance, but considering everything at the same "level".
Congrats! Sounds like it's been a long road!
Yep Congrats for this!
off-topic: Daniel have you receive my mail about Descendant combinator selector issue in JSCSSP (an F element descendant of an E element return INVALID error ex:"#myId a")... Me and my boss are trying to find where is the bug, but JSCSSP is hard to read, have you any clue where we can start ?
Ola j'ai trouvé une solution en ajoutant ce bloc de code après la ligne 3789
else if (token.isIdent()) {
s += token.value;
specificity.d++;
}
Encore désolé pour le hors sujet, ++
You mean "Selectors 3" is a rec, right?
@Boris: it's the story of a few neutrinos that go faster than...
Yeah, and changing the URL without adding a redirector gave me a 404 when trying to read the article in my feed reader (SeaMonkey Mail). At least removing everything after weblog/ and pasting the modified URL in the browser's Location Bar allowed me to find the article.