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

Re: [selectors] Anonymous Attribute Selector

From: Christoph Päper <christoph.paeper@crissov.de>
Date: Mon, 2 Jun 2014 11:11:20 +0200
To: www-style list <www-style@w3.org>
Message-Id: <5AF1B2DD-E90A-4472-91BA-65A0E3215D58@crissov.de>
Tab Atkins Jr. <jackalmage@gmail.com>:
> On Fri, May 30, 2014 at 2:33 AM, Christoph Päper
>> There currently is no way in Selectors to match such anonymous attributes, but there’s kind of a way to match anonymous elements with the universal selector which is optional in ID, class, pseudo-class, pseudo-element and attribute selectors.
> 
> Selectors defines a data model in terms of the DOM, but that doesn't
> mean that your markup has to map into the DOM in exactly the way that
> HTML would.
> 
> In particular, you should feel free to define that your language maps
> the unnamed attribute into a DOM attribute named "attr" or something
> for the purposes of Selectors.

Sure, that could work today, but why shouldn’t there be a generic solution for attributes when there is one for elements? 

The universal element selector is actually used a lot, 
although usually in its implicit form wherein the optional asterisk ‘*’ isn’t used:

  .class
  #id
  :pseudo
  [attribute]

It’s used explicitly the most in descendant selectors 
(and when targeting browser parsing bugs).

  foo>*>bar
  foo * bar

A universal attribute selector would encompass my anonymous attribute selector, 
because if it selects any attribute it doesn’t matter whether that’s named, implicit or anonymous. 
So I would like to upgrade my proposal accordingly.

  [@]

selects a node that has any attribute specified, but

  attr(@)

still only uses the [first?] anonymous attribute.

  []

remains a syntax error and selects nothing and

  attr()

also fails to do anything useful.

In HTML4/RFC1942, for instance,

  table[@="border"]

unlike

  table[border]

would be a correct way to match

  <table border>

since that’s shorthand for

  <table frame="border">

but

  table[frame]
  table[frame="border"]

should both match then, too, of course.
In BBCode,

  [URL=http://example.com]foo[/URL]

would be matched by

  URL[@*="example.com"]
Received on Monday, 2 June 2014 09:11:52 UTC

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