W3C home > Mailing lists > Public > www-style@w3.org > February 2014

Re: [selectors-nonelement] ::attr(*|localname), ::attr(ns|*), and ::attr(*)

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Mon, 24 Feb 2014 16:32:16 -0800
Message-ID: <CAAWBYDArkDh6BB3wKa96fjww1+rE28z6at5bhJY513cmZpdBPg@mail.gmail.com>
To: Simon Sapin <simon.sapin@exyr.org>
Cc: Simon Pieters <simonp@opera.com>, Jirka Kosek <jirka@kosek.cz>, www-style <www-style@w3.org>
On Mon, Feb 24, 2014 at 1:29 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
> On Mon, Feb 24, 2014 at 1:26 PM, Simon Sapin <simon.sapin@exyr.org> wrote:
>> On 24/02/2014 21:16, Tab Atkins Jr. wrote:
>>> In type selectors, "foo" and "*" are treated differently wrt
>>> namespaces when there's no default namespace.  "foo" is equivalent to
>>> "|foo", but "*" is equivalent to "*|*".
>>
>> That is not the case.
>>
>> http://dev.w3.org/csswg/selectors4/#typenmsp says:
>>
>> E
>>     if no default namespace has been declared for selectors, this is
>> equivalent to *|E. Otherwise it is equivalent to ns|E where ns is the
>> default namespace.
>
> Argh, why am I incapable of *reading*?


Okay, so synthesizing all this:

Default namespaces apply to type selectors, and the default default
namespace is "*".  That is, by default, "tag" is equivalent to
"*|tag".

Default namespaces do not apply to attribute selectors.  That is,
"[attr]" is equivalent to "[|attr]".  To get an attribute selector
that grabs attributes of a given name in *all* namespaces, you have to
be explicit: "[*|attr]".

It's probably worthwhile, for understandability, to have the attribute
pseudo-element work the same way as attribute selectors, so that
"::attr(title)" only selects title attributes in the null namespace.

However, there are probably use-cases for just grabbing all the
attributes on an element for processing, and it would be nice if this
was doable via something less verbose than "::attr(*|*)".  (Also, I
feel like that might look like something weird in ASCII-art, but I
can't quite tell what.)

I propose that if the argument is omitted, like "::attr()", we select
all attributes on the element.

~TJ
Received on Tuesday, 25 February 2014 00:33:03 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:39:19 UTC