Re: [XBL] Namespace prefixes in Selectors

On Fri, 6 Oct 2006, Bjoern Hoehrmann wrote:
>>
>> I've now explicitly mentioned that the "xml" prefix is always declared. 
>> xmlns is also now defined to be always declared. (Technically both of 
>> these facts -- that xml and xmlns are always declared -- are already 
>> stated in [XMLNS], but it makes no harm to say it again in the XBL 
>> spec.)
> 
> Then this text should be a non-normative note.

Well, as it stands the paragraph has no normative weight, but you're 
right. Changed.


> I think DOM Level 3 Core should change Node::lookupNamespaceURI(...) 
> such that 'xml' and 'xmlns' are defaulted, and then define that the set 
> of prefixes considered in scope of a Node is the set of strings x for 
> which y.lookupNamespaceURI(x) is not null. You could then refer to DOM 
> Level 3 Core for what is in scope and simply point out that as a result 
> of the definition in DOM Level 3 Core 'xml' and 'xmlns' are always in 
> scope. Does that sound reasonable?

Yeah that might work. Let me know when I can switch this over. (Doesn't 
matter if XBL is in CR or whatever when we do the change.)


>> Woops. This is actually a problem. Selectors are case-insensitive and 
>> XMLNS prefixes are case-sensitive, so I need to declare how you map 
>> from one to the other.
>>
>> I've tried writing some text for this.
> 
> As per http://lists.w3.org/Archives/Public/www-style/2006Oct/0025.html I 
> disagree with this resolution. As is evident here, this really belongs 
> to the Selectors specification to avoid having the problem in similar 
> specifications and to avoid different requirements in similar specs.

I agree, but until I have something better to point to, I have to define 
this. Again, I'll change this when the other specs have caught up.


> You fail to point out in the relevant section when implementations 
> determine the bindings and/or what happens if the bindings change. You 
> added this for xbl:inherits some time ago, but only for xbl:inherits.

I really need implementation experience on this before I can really 
specify it. I don't know what's easiest for UAs and the actual definition 
doesn't much matter (since it's really an edge case).


> And you say
> 
>   User agents must act as if all namespace prefixes in scope were
>   lexically sorted by Unicode codepoint, with the first namespace
>   prefix of each group of namespace prefixes differing only by case
>   being the one assumed to be in scope for the purposes of selector
>   matching.
> 
> This fails to account for the case where the two prefixes do not differ 
> in case.

Why is there a problem if they don't differ in case?


> I would also prefer if sorting applied only if the conflicting 
> declarations are on the same element, and that implementations take the 
> closest declaration that matches case-insensitively otherwise. So for
> 
>   <foo xmlns:X='a'>
>     <foo xmlns:x='b'>
>       <foo selector='X|*'>
> 
> you get 'b' not 'a' (assuming you have ascending order, the text does 
> not say). Finding all declarations that match case-insensitively is a 
> lot slower in unoptimized implementations.

Depends very much on the implementation.

Really I want implementations to implement this however they find best, 
and then we can adjust the spec to match the most common implementation.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

Received on Friday, 6 October 2006 22:50:36 UTC