- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Thu, 27 Feb 2014 09:26:23 -0800
- To: Jirka Kosek <jirka@kosek.cz>
- Cc: Simon Pieters <simonp@opera.com>, Simon Sapin <simon.sapin@exyr.org>, www-style <www-style@w3.org>
On Thu, Feb 27, 2014 at 9:08 AM, Jirka Kosek <jirka@kosek.cz> wrote:
> On 27.2.2014 17:53, Tab Atkins Jr. wrote:
>> Again, the inconsistency is internal. "*", when used in type
>> selectors, is just a wildcard tagname. It acts identically wrt
>> namespaces as a real tagname does. "*", when used in ::attr(), should
>> work the same, and be identical to a real attribute name wrt
>> namespaces.
>>
>> Your suggestion is that "*" act *differently* than a normal attribute
>> name, so that it assumes "all namespaces" while a normal attribute
>> names assumes "the null namespace".
>
> But as there is already inconsistency between type selectors ("E"
> selects E elements in any namespace) and attribute selectors ("[A]"
> matches elements that have A attribute in no namespace)
That's due to default namespaces, not anything fundamental. It's also
not an *internal* inconcistency - "E" and "*" both select using the
default namespace in type selectors, while attribute selectors don't
have a "*" at all, and so can't be inconsistent internally.
> I don't think
> that special treatment of "*" as wildcard in ::attr(*) will do any harm.
> After all this behaviour can be brought back to attribute selectors --
> "[*]" will match element that has at least one attribute.
If attribute selectors allowed "[*]", it would match an element with
at least one attribute *in the null namespace* (to be consistent with
the behavior of plain attribute names). You'd have to write [*|*] to
select an element with any attribute whatsoever.
~TJ
Received on Thursday, 27 February 2014 17:27:10 UTC