<<PREV | TOP | NEXT>>

URI = URN + URL

last modified 8th/Oct. 2000

URI

WWW 上の全てのファイル(リソース)は、統一的な仕組みで名付けられた、世界中で一意的な名前を持っています。一意的と云うのは、世界中で当該ファイルの名前が唯一つであり、絶対に重複しないと云う意味です。この WWW 上で一意的であるように統一された名前の仕組みを、 URI (Uniform Resource Identifier) と呼びます。 WWW における「場所」を指定する URL (Uniform Resource Locator) と、場所ではなく「名前」を指定する URN (Uniform Resource Name) を含めた概念です。 URL は URI に含まれていることに注意してください。

URI の U が、 Uniform (統一的)か Universal (普遍的)かは異説があり、公式文書にも両方が見られます。ここでは、両方の意味を踏まえた U だとしておきましょう。

URL は スキーム://マシン名/パス と云う形式で表されます。例えば、 http://www.yahoo.co.jp/ などのことです。 URN は馴染みが無いかもしれませんが、ここでは詳細には立ち入りません。もし URN でリソースが指定できれば、リソースの位置が移動しても、同じ URN でアクセスできることになり、非常に有用だと云えます。

URI は、 DTD 中ではパラメタ実体 %URI; として表現されます。

URI は、a 要素、 link 要素の href 属性、 img 要素、 frame 要素、 iframe 要素などの src 属性などの他に、 cite 属性、 longdesc 属性などの値としても利用されます。

完全 URI

URI の完全な形式を、完全 URI (full URI) と呼びます。これは WWW 上での絶対パスのことで、相対 URI と相互に補完する概念です。

http://www.fides.dti.ne.jp/%7Esugai/public/index.html
スキーム
URI が、どのような名前のつけ方であるかを指定します。この種類に応じて、ブラウザはリソースを取得する方法(プロトコル)を用いるか判断します。 http は、 HTML などの文書を受信するときに用いる仕組みである HTTP プロトコルをいみします。 ftp は、ファイルの送受信に利用する FTP プロトコルを意味します。
ホスト・マシン(サーバ)
ブラウザはユーザの命令(リンクをクリックするなど)によって、 WWW 上の機械と情報を送受信しています。このとき、ブラウザのリクエストに応えて自動的にファイルを処理する機械のことをサーバと呼びます。
パス
リソースはホスト・マシンが管理しており、通常は階層的なディレクトリ(フォルダ)の名前とファイル名でアクセスできます。

利用例;

<a href="http://www.w4.org">W3C</a>
<img src="http://www.w3.org/Icons/WWW/w3c_home" src="W3C">

W3C

相対 URI

full URI に対して、相対 URI と云う形式があります。サイト内のリンクは、通常相対 URI を利用します。

相対 URI は、基準 URI に対する相対的な位置を指定する相対パスです。特別に指定しない限り、或るファイルに対する基準 URI は、当該文書の full URI が利用されます。例えば、 http://www.foo.com/hoge/hoge/test.html の基準 URI は、 http://www.foo.com/hoge/hoge/test.html になります。

通常は、相対 URI は当該文書に対する相対的位置です。このため、一連のリソース群が、物理的にどのマシン上にあっても(自宅の PC でもインターネット上のホスト・マシンであっても)、リソース間の相対的な位置が崩れていなければ、相対 URI は同じリソースを指し示せます。

同じディレクトリ内のファイル
./index.html, ./title.gif, etc.
一つ上のディレクトリ内のファイル
../index.html, ../title.gif, etc.
同じディレクトリ内にあるディレクトリ内のファイル
./contents/index.html, ./image/title.gif, etc.
二つ上のディレクトリ内のファイル
../../index.html, ../../title.gif, etc.

ディレクトリとは、 Win., Mac. で云う「フォルダ」と同じことです。

自分と同じディレクトリは . 、一つ上のディレクトリであれば .. で指し示します。ディレクトリやファイルの間は / で区切ります。但し、 / から始まる相対 URI (/home/index.html など) は特別で、当該ホストマシンのルートディレクトリからの絶対パスを意味します。

ディレクトリの階層構造が次のようになっていたとしましょう。

/root/
  |
  |--/cover/
  |    |--index.html
  |    |--toc.html
  |    |--/contents/
  |         |--index.html
  |         |--/text/
  |              |--index.html
  |              |--physics.html
  |--/images/
       |--title.gif
       |--icon.gif

1. ディレクトリ /cover/ の中のファイル index.html から、同じディレクトリ内のファイル toc.html を参照する場合の相対 URI はどうなるでしょうか?

答; ./toc.html

2. ディレクトリ /text/ の中のファイル index.html から、 /cover/ の中の toc.html を参照する場合の相対 URI はどうなるでしょうか?

答; ../../toc.html

3. ディレクトリ /cover/ の中のファイル toc.html から、 /physics/ の中の index.html を参照する場合の相対 URI はどうなるでしょうか?

答; ./contents/phtsics/index.html

4. ディレクトリ /cover/ の中のファイル index.html から、ディレクトリ /images/ の中のファイル title.gif を参照する場合の相対 URI はどうなるでしょうか?

答; ../images/title.gif

5. 最後の問題です。ディレクトリ /text/ の中のファイル index.html から、ディレクトリ /images/ の中にあるファイル icon.gif を参照する場合の相対 URI はどうなるでしょうか?

答; ../../../images/icon.gif

基準 URI

基準 URI は、通常は当該文書の full URI です。

しかし、 BASE 要素を利用すると、実際に当該文書がどこにあろうとも関係なく、基準 URI を明示的に指定できます。 BASE 要素は HEAD 要素の子供要素として定義されています。

<!ELEMENT BASE - O EMPTY               -- document base URI -->
<!ATTLIST BASE
  href        %URI;          #IMPLIED  -- URI that acts as base URI --
  target      %FrameTarget;  #IMPLIED  -- render in this frame --
  >

BASE 要素は href 属性と target 属性だけが許されています。また、開始タグのみで終了タグが存在しない空要素です。この要素は HEAD 要素の開始タグ (<head>) の直後に記述するように心掛けてください。

<head>
<base href="http://www.fides.dti.ne.jp/%7Esugai/public/">
...
</head>

HEAD 要素内に上のような BASE 要素が与えられた文書があったとします。すると、この文書の基準 URI は次のようになります;

http://www.fides.dti.ne.jp/%7Esugai/public/

ここに、当該文書の実際の位置(フル URI)は関係しません。例えば、この文書内に次のような相対 URI が存在したと仮定します;

<a href="./web/index.html">Web サイト作成支援</a>

この相対 URI は、基準 URI に対してフル URI に翻訳されますから、指し示す位置は、

http://www.fides.dti.ne.jp/%7Esugai/public/web/index.html

となります。

属性値の指定

HTML ファイル内の name 属性や id 属性の値で、ファイルの「部分」を指定できます。例えば、 toc と名付けられた部分を参照する場合は、次のようになります;

http://somesite.com/html/top.html#toc

詳しい利用法は「終点アンカー」を参照ください。

参考

URI の命名体系の例です;

FTP

ftp://ftp.is.co.za/rfc/rfc1808.txt
      -- ftp scheme for File Transfer Protocol services

ftp と云う仕組み(プロトコル)で利用する計算機 ftp.is.co.za の、 /rfc と云うパスでアクセスできるディレクトリの中のファイル rfc1808.txt を指定。

HTTP

http://www.math.uio.no/faq/compression-faq/part1.html
      -- http scheme for Hypertext Transfer Protocol services

http と云う仕組み(プロトコル)で利用する計算機 www.math.uio.no の、 /faq/compression-faq と云うパスでアクセスできるディレクトリの中のファイル part1.html を指定。

MailTo

mailto:mduerst@ifi.unizh.ch
      -- mailto scheme for electronic mail addresses

mailto と云う仕組み(プロトコル)は電子メール (E-mail) を扱うプロトコルです。アドレス mduerst@ifi.unizh.ch が指定されています。

   gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles
      -- gopher scheme for Gopher and Gopher+ Protocol services
   news:comp.infosystems.www.servers.unix
      -- news scheme for USENET news groups and articles
   telnet://melvyl.ucop.edu/
      -- telnet scheme for interactive services via the TELNET Protocol

次に、ファイル名、ディレクトリ名など、 HTML で利用する「名前」に付いて一般的な注意をまとめました。

<<PREV | TOP | NEXT>>