- From: L. David Baron <dbaron@dbaron.org>
- Date: Wed, 17 Mar 2010 16:36:40 -0700
- To: "www-style@w3.org" <www-style@w3.org>, Sylvain Galineau <sylvaing@microsoft.com>
On Wednesday 2010-03-17 23:09 +0000, Sylvain Galineau wrote:
> CSS2.1 4.3.4 [1] states:
>
> "The format of a URI value is 'url(' followed by optional white
> space followed by an optional single quote (') or double quote (")
> character followed by the URI itself, followed by an optional
> single quote (') or double quote (") character followed by
> optional white space followed by ')'. The two quote characters
> must be the same.
>
> [snip]
>
> Some characters appearing in an unquoted URI, such as parentheses,
> commas, white space characters, single quotes (') and double
> quotes ("), must be escaped with a backslash so that the resulting
> URI value is a URI token: '\(', '\)', '\,'."
>
> The grammar [2] agrees:
> url ([!#$%&*-~]|{nonascii}|{escape})*
>
> (The "*-~" expression is a range that includes ",")
I'd describe that as the grammar *disagreeing*, since the grammar
says that commas are allowed in the production for unquoted URIs
(they're part of the range *-~).
Likewise, the tokenization in section 4.1, which is significantly
more important than the appendix G grammar, also (like the grammar
in appendix G) says that commas are allowed.
> However, all browsers I have checked - latest Firefox, Safari,
> Opera and IE8 - accept unescaped comma delimiters within unquoted
> data URIs.
This agrees with the grammar and the tokenization rules.
> We suggest the specification be updated to remove the comma
> character from both the prose and the grammar i.e. in 4.3.4 :
>
> Some characters appearing in an unquoted URI, such as parentheses,
> white space characters, single quotes (') and double quotes ("),
> must be escaped with a backslash so that the resulting URI value
> is a URI token: '\(', '\)'."
I agree with this proposal to change 4.3.4, since that would make it
match both grammars (4.1 and G) and implementations.
> And in Appendix G:
>
> url ([!#$%&*\~,]|{nonascii}|{escape})
And I disagree with the proposal to change the grammar to make it
not match implementations. (I'm also not quite sure what you meant
to type in that proposal.)
-David
--
L. David Baron http://dbaron.org/
Mozilla Corporation http://www.mozilla.com/
Received on Wednesday, 17 March 2010 23:37:11 UTC