- 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