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

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

From: Simon Sapin <simon.sapin@exyr.org>
Date: Tue, 18 Feb 2014 10:36:00 +0000
Message-ID: <53033790.1090506@exyr.org>
To: Jirka Kosek <jirka@kosek.cz>, www-style <www-style@w3.org>

This email is about three separate, but related issues.

The current ED defines:

> ::attr() = ::attr( <qualified-name> )
> Where <qualified-name> is a CSS qualified name.

With "CSS qualified name" a link to the css-namespaces spec.

css-namespaces defines <qname> and <wqname> grammar terms. Only the 
latter allows a wildcard for the namespace prefix: `*|localname`. 
selectors-nonelement should clarify which one is intended.

The best way to do this IMO is to not define a new <qualified-name> 
grammar term, but use one of <qname> or <wqname> directly, specifying 
that it is defined in css-namespaces.


In http://lists.w3.org/Archives/Public/www-style/2014Feb/0546.html, 
Jirka Kosek said:
> You can select all attributes by ::attr(*)

According to the current ED you can not. `*` matches none of <qname>, 
<wqname>, or "CSS qualified name".

If the intent is to allow this, selectors-nonelement needs additional 
spec text, similar to how type selectors and universal selectors are 
defined separately.


Also, itís not clear that ::attr(*) selects all attributes rather than 
just attributes that are in no namespace.

css-namespaces defines:
> The prefix of a qualified name may be omitted to indicate that the
> name belongs to no namespace, i.e. that the namespace name part of
> the expanded name has no value.

So the "default" behavior of ::attr(foo) and ::attr(*), with the prefix 
omitted, is to select attributes in no namespace.

If this is not the intended behavior, selectors-nonelement needs spec 
text to override it, like Selectors does for type and universal 
selectors (where an omitted prefix means the default namespace if there 
is one declared, or *any* namespace otherwise.)

Note that attribute selectors like [foo] do *not* override this default 
behavior. (Eg. [href] does not match <svg:a xlink:href="Ö">)

Simon Sapin
Received on Tuesday, 18 February 2014 10:36:25 UTC

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