次の十分に定義された基底URIをもつオブジェクト内を考える。
http://a/b/c/d;p?q
この場合,相対URIはC.1及びC.2で示すとおりに解決される。
g:h = g:h
g = http://a/b/c/g
./g = http://a/b/c/g
g/ = http://a/b/c/g/
/g = http://a/g
//g = http://g
?y = http://a/b/c/?y
g?y = http://a/b/c/g?y
#s = (現在の文書)#s
g#s = http://a/b/c/g#s
g?y#s = http://a/b/c/g?y#s
;x = http://a/b/c/;x
g;x = http://a/b/c/g;x
g;x?y#s = http://a/b/c/g;x?y#s
. = http://a/b/c/
./ = http://a/b/c/
.. = http://a/b/
../ = http://a/b/
../g = http://a/b/g
../.. = http://a/
../../ = http://a/
../../g = http://a/g
次の正常ではない例は通常の使用で発生することはほとんどないが,すべてのURI構文解析器は,それらを矛盾なく解決できることが望ましい。各々の例は,今までと同じ基底を使用している。
空の参照は,現在の文書の開始を参照する。
<> = (現在の文書)
構文解析器は,基底URIのパスに存在する階層レベルより多くの相対パス".."が存在する場合を処理するとき,注意しなければならない。
../../../g = http://a/../g
../../../../g = http://a/../../g
実際には,実装の中には,相対URIの計算を適用した後で,先行する相対性を表す記号要素("."及び"..")を取り除くものがある。これは,明らかな文書作成者のエラーを補償することが,要求の失敗を許容することよりもよいという理論に基づいている。そこで,これらの二つの参照は,実装によっては,"http://a/g"として解釈される。
同様に,構文解析器は,"."及び".."が相対パスの完全な構成要素ではない場合,それらを特殊なものとして取り扱うことを避けなければならない。
/./g = http://a/./g
/../g = http://a/../g
g. = http://a/b/c/g.
.g = http://a/b/c/.g
g.. = http://a/b/c/g..
..g = http://a/b/c/..g
可能性はより少ないが,相対URIが,完全なパス断片である"."及び".."を不必要に又は意味のない形式で使用する場合がある。
./../g = http://a/b/g
./g/. = http://a/b/c/g/
g/./h = http://a/b/c/g/h
g/../h = http://a/b/c/h
g;x=1/./y = http://a/b/c/g;x=1/y
g;x=1/../y = http://a/b/c/y
すべてのクライアント応用は,相対URIを解決する前に,基底URIから問合せ構成要素を取り除く。しかし,応用の中には,相対パスを絶対パスに併合する前に,参照の問合せ及び/又は素片の構成要素を相対パスから分離することに失敗するものがある。このエラーは,ほとんど報告されていない。これは,素片の典型的な使用法では階層("/")文字を決して含まず,問合せ構成要素は相対参照内で通常は使用されないことによる。
g?y/./x = http://a/b/c/g?y/./x
g?y/../x = http://a/b/c/g?y/../x
g#s/./x = http://a/b/c/g#s/./x
g#s/../x = http://a/b/c/g#s/../x
構文解析器の中には,相対URIの中に方式名が存在することを,それが基底URIの方式と同じ場合には許可するものがある。部分URIの先行する規定[RFC1630]における抜け道的な互換性と考えられる。その使用は,避けることが望ましい。
http:g = http:g ; 妥当性検証を行う構文解析器の場合
| http://a/b/c/g ; 後方互換性のための場合