The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<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>