Thanks J, your explanation is excellent. I have used some of your words to add to Cocoon's xdocs. --David
J.Pietschmann wrote: > David Crossley wrote: > > This raises another issue. There seems to be confusion for the > > syntax. I see various syntaxes in the xdocs ... > > That's bad. There is RFC 2396 and some predecessors about URI > syntax. Everything starting with a URI scheme identifer like > "file:" or "http:" is an absolute URI. An absolute file URL is > file://some.host/some/path/to/file.ext > The host can be omitted, defaulting to localhost (usually the > only one you have access to anyway), so you can write > file:///some/path/to/file.ext > Everything not starting with a protocol is a relative URI. > If it's starting with two slashes, it's a net path (no further > discussed). If starting with one slash the scheme and if > necessary the host is taken from some context and prepended. > If starting with something neither a slash or sharp "#" the > context URI is used for resolution (usually prepended after > stripping of the last path component). > Because people usually are sloppy and confuse URL and local > pathnames, many software products try to be helpful and guess > what the user actually meant. Furthermore, the concept of the > context URL is often ill defined and rarely explicitely spelled > out. The fact that Windows accept both forward and backward > slashes in pathnames from programs doesn't make it much easier. > > Conclusions > If there it is plausible that the URL should be taken in the > context of the running process, which has a current working > directory (CWD), the following examples should work. > Lets say the CWD is /FOO on a Unix machine and D:\FOO on > a Windows box. (h) denotes the usual helpful guess for > stuff that's formally invalid. The colon *is* legal in Unix > pathnames. > > URL class resolves Unix resolves Windows > bar.ext relative /FOO/bar.ext D:\FOO\bar.ext > /bar.ext relative /bar.ext D:\bar.ext > C:/bar.ext relative /FOO/C:/bar.ext C:\bar.ext > /C:/bar.ext relative /C:/bar.ext C:\bar.ext (h) > file:/bar.ext invalid /bar.ext (h) D:\bar.ext (h) > file://bar.ext invalid /FOO/bar.ext (h) D:\FOO\bar.ext (h) > file:///bar.ext absolute /bar.ext D:\bar.ext > file:///C:/bar.ext absolute /C:/bar.ext C:\bar.ext > > Note that both /bar.ext and C:/bar.ext are relative URLs, > despite being absolute pathnames on their respective home > systems. Note further that the Netscape syntax which replaces > the colon after the drive letter by a pipe symbol (/C|/stuff) > is illegal, because the pipe symbol is an illegal character > at this place. > > I do not claim that the above is authoritative, apply usual > disclaimer. > > HTH > J.Pietschmann --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]