[selectors4] Parameters of :local-link()

fantasai:

>  - Need a URL expert to review http://dev.w3.org/csswg/selectors4/#local-pseudo

I�m not one, but please let me add some thought anyway.

Most (absolute) Web addresses that are used within documents that have CSS stylesheets attached to them use a subset of the following pattern

  scheme �:� �//� [ creds �@� ]? server [ �/� path ]? [ �?� query ]? [ �#� fragment ]?

where

  scheme  > protocol
  creds  := user [ �:� password ]?
  server := ___domain [ �:� port ]?
  ___domain := name | number
  name   := [ level �.� ]+ level   # DNS hierarchic
  number := [ bytedigit �.� ]**4   # IPv4 numeric address
          | [ �[� [ hexdigit**4 �:� ]**7 hexdigit**4 �]� ]  # simplified IPv6
  path   := [ folder �/� ]* [ file [ �.� ext ]* ]?
  query  := key [ �=� value ]? [ [�;�/�&�] key [ �=� value ]? ]*

Using the current design of �:local-link� and �:local-link(<number>)� you can match for anything on the same �server� (0) and further specify this with the required level of matching folders in the path hierarchy, starting at the top (i.e. left). 

This doesn�t cover the following common patterns, sometimes considered �local�:
a) 1) en.example.tld
      de.example.tld
   2) www.example.tld
      blog.example.tld
b) example.com
   example.org
c) combinations of a) and b)
d) http://example.tld
   https://example.tld
   ftp://example.tld
e) example.tld:80
   example.tld   (which defaults to 80)
f) localhost
   127.0.0.1
   ::::127.0.0.1 etc.

I�m not sure �:local-link(0)� ignores �userinfo�, e.g. email addresses,
g) alice@example.tld
   bob@example.tld
   example.tld

Therefore I think Selectors4 should only add �:local-link� without parentheses and parameter. Selectors5 should add �:same-link()� or some such where you can specify which parts should match. 

The first parameter names address parts that must match, the second parameter � they are separated by a comma � lists parts that may mismatch (and don�t by default). The second parameter is optional. 

The �path� and �___domain� keywords may be followed by either a positive number (starting at their boundary at �/�) or negative number (starting at the most specific level), paths are divided by �/� (maybe allow �\� and �:� too), domains are divided by �.� or �:� (IPv6). (Maybe add �.� separated �ext�, too, for �index.html.en� / �index.html.de�.) The number is in an+b form, known from �:nth-*�.

a) :same-link(___domain-name 1 2)
b) :same-link(___domain-name 2)
c) :same-link(___domain-name 2)
d) :same-link(___domain-name, scheme)
e) :same-link(___domain-name, port)
f) :same-link(___domain)
g) :same-link(___domain-name, user)

�:local-link� equals �:same-link(___domain-name path)�.

This proposal does not make it possible to include certain TLDs and exclude others. It�s also not thought through to the fullest extent.

Received on Wednesday, 15 February 2012 20:23:29 UTC