W3C home > Mailing lists > Public > www-style@w3.org > January 2006

Re: [css3-selectors][css-selectors] Comments on Section 6.1.1

From: Ian Hickson <ian@hixie.ch>
Date: Tue, 24 Jan 2006 20:19:20 +0000 (UTC)
To: Boris Zbarsky <bzbarsky@mit.edu>
Cc: www-style Mailing List <www-style@w3.org>
Message-ID: <Pine.LNX.4.62.0601242008340.9516@dhalsim.dreamhost.com>

On Sat, 21 Jan 2006, Boris Zbarsky wrote:
> 
> 1)  Paragraph 2 says:
> 
>   The namespace component may be left empty to indicate that the selector is
>   only to represent elements with no declared namespace.
> 
> while paragraph 4 says:
> 
>   Element type selectors that have no namespace component (no namespace
>   separator), represent elements without regard to the element's namespace
>   (equivalent to "*|") unless a default namespace has been declared. If a
>   default namespace has been declared, the selector will represent only
>   elements in the default namespace.
> 
> I assume that paragraph 2 is talking about type selectors that _do_ have 
> a namespace separator but _do_not_ have a "namespace component" (the 
> term "namespace component" is not defined; I assume it means the same 
> thing as "namespace prefix" in paragraph 1).  This should probably be 
> made clear; as things stand it seems like paragraph 2 and paragraph 4 
> are saying different things about the same selectors.  Perhaps the 
> distinction between having an empty "namespace component" and having no 
> "namespace component" at all should be made clear somewhere in paragraph 
> 1, maybe as part of a definition of "namespace component"?

It now reads:

: Type selectors allow an optional namespace component: a namespace prefix 
: that has been previously declared may be prepended to the element name 
: separated by the namespace separator "vertical bar" (U+007C, |). (See, 
: e.g., [XMLNAMES] for the use of namespaces in XML.)
:
: The namespace component may be left empty (no prefix before the 
: namespace separator) to indicate that the selector is only to represent 
: elements with no declared namespace.


> 2)  I think it should be made clear that the default namespace talked about in
> paragraph 4 is in the stylesheet, not the document.  Paragraph 2 means
> "declared in the document" when it uses "declared", and the difference in
> meaning for the same term is rather confusing.  Similarly, paragraph 5 means
> "declared in the stylesheet" when it uses "declared"...

It now reads:

: Element type selectors that have no namespace component (no namespace 
: separator), represent elements without regard to the element's namespace 
: (equivalent to "*|") unless a default namespace has been declared for 
: namespaced selectors (e.g. in CSS, in the style sheet). If a default 
: namespace has been declared, such selectors will represent only elements 
: in the default namespace.
:
: A type selector containing a namespace prefix that has not been 
: previously declared for namespaced selectors is an invalid selector. The 
: mechanism for declaring a namespace prefix is left up to the language 
: implementing Selectors. In CSS, such a mechanism is defined in the 
: General Syntax module.


> 3)  Paragraph 6 makes it sound like the whole type selector should only match
> against the local name, whereas it's just the part after the namespace
> separator that this is true for.  This is worth clarifying.

Now reads:

: In a namespace-aware client, the name part of element type selectors 
: (the part after the namespace separator, if it is present) will only 
: match against the local part of the element's qualified name. See below 
: for notes about matching behaviors in down-level clients.


> 4)  In paragraph 6, I would make "notes about matching behaviors in down-level
> clients" the link, not "below" (since depending on styles applied to the
> document it may not in fact be "below" .... ;) )

Done ("matching behaviors in down-level clients" is the link).


> 5)  The summary again uses the term "declared" to mean "declared in the 
> document" when talking about "*|E" and "|E".  Then it uses "specified" 
> to mean "specified in the stylesheet"; compare this to the terminology 
> used in the paragraphs I reference in my comment #2.  Please standardize 
> the terminology here to make it unambiguous.

Now reads:

: ns|E
:     elements with name E in namespace ns
: *|E
:     elements with name E in any namespace, including those without a 
:     namespace
: |E
:     elements with name E without a namespace
: E
:     if no default namespace has been declared for selectors, this is 
:     equivalent to *|E. Otherwise it is equivalent to ns|E where ns is 
:     the default namespace. 


> 6)  In the CSS examples, the rule numbering (first, second, etc) assumes 
> that the @namespace rule is the "zeroth" rule.  This seems a little odd 
> to me....

I've added "(not counting the <code>@namespace</code> at-rule)" after the 
"first rule", and added "/* first rule */" in the example.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 24 January 2006 20:19:28 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:42 GMT