- From: Mark Nottingham <mnot@mnot.net>
- Date: Fri, 6 Oct 2006 19:25:27 -0700
- To: James M Snell <jasnell@gmail.com>
- Cc: uri@w3.org
+1 to dropping component spanning and doing percent-encoding during
substitution, as well as UTF-8.
However, this will require that the data model for the input to
substitution be formalized more, as others have pointed out -- which
I think is a good thing.
Consider:
a = "foo/bar"
http://www.example.com/{a}
http://www.example.com/foo?path={a}
The first will need the '/' escaped; the second will not.
So, the input data model needs to be something like:
{'a': ('foo/bar', PATH_SEGMENT)}
In practice, this might mean that particular uses of templates will
need to specify the types of their variables.
This allows other interesting things -- like datatyping, as requested
-- to be slotted in. E.g.,
{'a=(int)': ('1', TYPED_QUERY_ARG)}
http://www.example.com/foo?{a=(int)} -> http://www.example.com/foo?a=1
I'm still not sure if this latter convention is a good idea, but I do
like having the extensibility necessary to enable it, if necessary.
On 2006/10/05, at 4:13 PM, James M Snell wrote:
> Joe Gregorio wrote:
>> On 10/5/06, Sam Ruby <rubys@intertwingly.net> wrote:
>>> My vote: specify unicode and utf-8 throughout. And ditch the
>>> perceived
>>> requirement to allow template variables to optionally span multiple
>>> segments, depending on the data values allowed.
>>
>> +1
>
> One challenge I've had with the spec as it stands now is that template
> replacement values are not defined. If we don't want to allow a
> replacement to span multiple segments, then I think we're going to
> have
> to nail this down.
>
> A template-var would be replaced by a template-value, which MUST match
> the production:
>
> template-value = scheme / userinfo / host / port / reg-name /
> segment / segment-nz / segment-nz-nc / query /
> fragment
>
> Any characters in the replacement that do not fit the production
> MUST be
> percent-encoded. Obviously the validity of the replacement is still
> ultimately dependent on whether a valid URI is produced or not.
>
> Also, given the feedback provided so far, I'm definitely comfortable
> with requiring that the template processor perform the percent-
> encoding.
>
> Examples:
>
> template-variable replacement template-value
> ========================================================
> a = "foo" = "foo"
> b = "foo bar" = "foo%20bar"
> c = "foo/bar" = "foo%2Fbar"
> d = "foo@bar" = "foo@bar"
> e = "fóó" = "f%C3%B3%C3%B3"
> f = "foo?bar" = "foo%3Fbar"
> g = "foo#bar" = "foo%23bar"
> h = "foo:bar" = "foo:bar"
> i = "foo%20bar" = "foo%2520bar"
>
> - James
>
--
Mark Nottingham http://www.mnot.net/
Received on Saturday, 7 October 2006 02:25:33 UTC