<HTML><HEAD>
<TITLE>Examples of Resolving Relative URLs, Part 4</TITLE>
<BASE href="fred:///s//a/b/c">
</HEAD><BODY>
<H1>Examples of Resolving Relative URLs, Part 4</H1>
This document has an embedded base URL of
<PRE>
Content-Base: fred:///s//a/b/c
</PRE>
in order to test a notion that Tim Berners-Lee mentioned regarding
the ability of URIs to have a triple-slash (or even more slashes)
to indicate higher levels of hierarchy than those already used by URLs.
<H2>Tested Clients and Client Libraries</H2>
<DL COMPACT>
<DT>[R]
<DD>RFC 2396 (the right way to parse)
<DT>Tim
<DD>Tim Berners-Lee's proposed interpretation
<DT>[1]
<DD>Mozilla/4.03 [en] (X11; U; SunOS 5.5 sun4u; Nav)
<DT>[2]
<DD>Lynx/2.7.1 libwww-FM/2.14
<DT>[3]
<DD>MSIE 3.01; Windows 95
<DT>[4]
<DD>NCSA_Mosaic/2.6 (X11;SunOS 4.1.2 sun4m)
</DL>
<H3>Synopsis</H3>
RFC 1808 specified that the highest level for relative URLs is indicated
by a double-slash "//", and therefore that any triple-slash would be
considered a null site component, rather than a higher-level component
than the site component (as proposed by Tim).<P>
The URI draft assumes that a triple-slash means an empty site component.
Netscape Navigator behaves irrationally, apparently because their parser
is scheme-dependent and therefore doesn't do the hierarchical parsing that
would be expected. Oddly, Lynx seems to straddle both sides.
<H2>Examples</H2>
<PRE>
RESULTS from
<a href="g:h">g:h</a> = g:h [R,Tim,2,3]
fred:///s//a/b/g:h [1]
<a href="g">g</a> = fred:///s//a/b/g [R,Tim,1,2,3]
<a href="./g">./g</a> = fred:///s//a/b/g [R,Tim,2,3]
fred:///s//a/b/./g [1]
<a href="g/">g/</a> = fred:///s//a/b/g/ [R,Tim,1,2,3]
<a href="/g">/g</a> = fred:///g [R,1,2,3]
fred:///s//a/g [Tim]
<a href="//g">//g</a> = fred://g [R,1,2,3]
fred:///s//g [Tim]
<a href="//g/x">//g/x</a> = fred://g/x [R,1,2,3]
fred:///s//g/x [Tim]
<a href="///g">///g</a> = fred:///g [R,Tim,1,2,3]
<a href="./">./</a> = fred:///s//a/b/ [R,Tim,2,3]
fred:///s//a/b/./ [1]
<a href="../">../</a> = fred:///s//a/ [R,Tim,2,3]
fred:///s//a/b/../ [1]
<a href="../g">../g</a> = fred:///s//a/g [R,Tim,2,3]
fred:///s//a/b/../g [1]
<a href="../../">../../</a> = fred:///s// [R]
fred:///s//a/../ [Tim,2]
fred:///s//a/b/../../ [1]
fred:///s//a/ [3]
<a href="../../g">../../g</a> = fred:///s//g [R]
fred:///s//a/../g [Tim,2]
fred:///s//a/b/../../g [1]
fred:///s//a/g [3]
<a href="../../../g">../../../g</a> = fred:///s/g [R]
fred:///s//a/../../g [Tim,2]
fred:///s//a/b/../../../g [1]
fred:///s//a/g [3]
<a href="../../../../g">../../../../g</a> = fred:///g [R]
fred:///s//a/../../../g [Tim,2]
fred:///s//a/b/../../../../g [1]
fred:///s//a/g [3]
</PRE>
</BODY></HTML>