- From: Graham Klyne <GK@ninebynine.org>
- Date: Tue, 06 Apr 2004 18:53:11 +0100
- To: "Roy T. Fielding" <fielding@gbiv.com>
- Cc: uri@w3.org
At 18:51 25/03/04 -0800, Roy T. Fielding wrote:
>On Tuesday, February 17, 2004, at 04:01 AM, Ray Merkert wrote:
>>I was just in the middle of looking at IRIs, when I noticed something
>>strange. It seems the
>>URI 'http://w3c.org:80path1/path2' has become a valid URI, at least
>>according to the
>>collected BNF grammar in draft-fielding-uri-rfc2396bis-04.txt.
>
>I have tried various ways of explaining it in the text and finally
>went back to multiple definitions of path, though I hope I've done
>a better job of disambiguating the different cases than I did for
>2396. I would appreciate it if the grammar-driven parsing experts
>could have a look at
>
> http://gbiv.com/protocols/uri/rev-2002/rfc2396bis.html (or .xml)
>
>and see if the new ABNF rules work (I've already tested them with
>the abnf.c tool).
While coding, I notice:
path = path-abempty ; begins with "/" or is empty
/ path-abs ; begins with "/" but not "//"
/ path-noscheme ; begins with a non-colon segment
/ path-rootless ; begins with a segment
/ path-empty ; zero characters
is ambiguous, in that there are two productions yielding an empty path:
path-abempty
and
path-empty
Suggest: drop path-empty.
Similarly, I think that path-abs is redundant in this production, since
anything that matches path-abs will also match path-abempty.
And similarly, path-noscheme is subsumed by path-rootless.
So the resulting production would be:
path = path-abempty ; begins with "/" or is empty
/ path-rootless ; begins with a segment
...
In appendix A, collected syntax, the production for absolute-URI differs
from that given in the body text.
Assuming that the body text production (using hier-part) is correct (which
I think it is) then the 'path' production is itself not used anywhere,
hence redundant.
...
With the new syntax, modified as above, I get the following 5 test cases
differing from my previous version:
[[
URITest> main
### Failure in: 0:Test URIrefs:75:0
test_isURIReference:http://foo.org:80Path/More
expected: True
but got: False
### Failure in: 0:Test URIrefs:75:2
test_isAbsoluteURI:http://foo.org:80Path/More
expected: True
but got: False
### Failure in: 0:Test URIrefs:76:0
test_isURIReference:::
expected: True
but got: False
### Failure in: 0:Test URIrefs:76:1
test_isRelativeURI:::
expected: True
but got: False
### Failure in: 1:Test URIrefs:1
testURIRefComponents:http://user:pass@example.org:99aaa/bbb
expected: Just http://user:********@example.org:99aaa/bbb
but got: Nothing
Cases: 529 Tried: 529 Errors: 0 Failures: 5
URITest>
]]
All of which I think are the intended effect of these changes.
#g
------------
Graham Klyne
For email:
http://www.ninebynine.org/#Contact
Received on Tuesday, 6 April 2004 15:58:47 UTC