cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Other ID naming proposals (was Re: CForms widget ID naming)
Date Fri, 04 Nov 2005 23:26:49 GMT
Antonio Gallardo wrote:
> Sylvain Wallez wrote:
>> The ":" has been a valid character for ID in HTML and XML for years:
>> - http://www.w3.org/TR/REC-html40/types.html#type-id
>> - http://www.w3.org/TR/REC-xml/#id
>>
>> The CSS specification says how to use '\' to escape special characters:
>> - http://www.w3.org/TR/REC-CSS2/syndata.html#q4
>>
>> So writing a CSS rule for the input of widget "foo" should be 
>> "#foo\:input { .... }"
>>
>> However, f*cking IE goes in the way, and although it properly escapes 
>> '.' (used for container widgets), it is the only one among the 4 
>> browsers I tested that doesn't understand '\:'. That means that the 
>> '\3A' unicode escape sequence must be used.
>
>
> Happens to be that the 1 of the 4 tested, the IE is btw, the one with 
> more than 90% of the market share! :-)
>
> Reading the above, I realized it directly affect the cocoon learning 
> curve. If we imlement this way a cocoon newbie will need to know that 
> when they want to code '\:' as '\3A'. I can see a lot of wasted hours 
> dedicated to debug this. And this directly impact the overall user 
> perception of cocoon.
>
> Seems to be like "another brick" in the "cocoon learning" wall. ;-)

Ok. Even if I don't think these CSS rules will be used often, you're 
right that the IE quirk will go in the way of people.

Let's recap the various aspects of the problem:
- generated IDs should not be valid widget full names, to avoid any 
potential conflict,
- this isn't just about the <input>, but about a common rule for all 
generated IDs 
- an HTML ID can contain letters, digits, underscores '_', colons ':' 
and periods '.'.
- because of lookup paths, a widget ID cannot contain '/' nor '.'. 
Libraries also add ':' to the forbidden characters.

Since '.' is used as the combination character to build full names, I 
thought ':' was a good choice. Now it leads to some (unjustified) fears 
about namespace prefixes, and requires a weird CSS syntax.

A thing that wasn't formally said up to now is that a widget name *must* 
be a valid HTML/XML identifier. XML is more permissive as it allows 
(letter | '_' | ':') as the first character, whereas HTML requires the 
first character to be a letter. So a widget name *must* start with a 
letter (top-level ones, actually).

So let's make other proposals. Let's consider wiget "foo.bar" (e.g. a 
fd:field in a fd:group) and the ID of its <input>.
- "foo.bar..input": the '.' is doubled, which can never conflict with a 
widget's full name
- "foo.bar._input": generated element's name starts with a character 
that we can forbid as the first character of widget names

I prefer the first one (double '.') which is IMO more readable than the 
second.

Other ideas?

Let's make a choice and have 2.1.8 out!

> Is there another solution? I like AJAX. I want to have AJAX. I know 
> your are a brilliant programmer. For this reason I am pretty sure you 
> can come with a more elegant solution! :-)

Well, as I said in my answer to Jörg, my guess is that Ajax will lead 
people to use CSS rules with classes rather than IDs. But I made other 
proposals above, so let's choose one.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


Mime
View raw message