since: 31st/Aug./2001; last modified: 5th/Sep./2001
URI は Uniform Resource Identifiers の略で、 [URI] で定義される規則に従います。基本的には、 URL と URN をあわせた概念です。
URI は、全ての要素に定義されている xmlns
属性、a
要素, link
要素の href
属性、 head
要素の profile
属性、 blockquote
要素, q
要素の cite
属性、 form
要素の action
属性、 input
要素の src
属性、 img
要素の longdesc, src
属性などの属性値のデータ型として現れます。
URL の一般的な書式:
スキーム://サーバー.ドメイン/パス
例えば、次の例を見てみよう:
http://www.w3.org/TR/xsl/slice1.html
この例では、 "http" プロトコルで、 "org" ドメイン管轄下の "w3" ドメイン内のサーバー "www" 上に於けるパス "/TR/xsl/slice1.html" が指定されています。 org ドメイン内で w3 はただ一つであり、ドメイン w3 の www というサーバーはただ一つである。また、当該サーバー内におけるパスは一意的であるから、この URI は一意的なリソースの識別子になっています。
URI の実例:
ftp://ftp.is.co.za/rfc/rfc1808.txt -- File Transfer Protocol services の為の ftp スキーム gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles -- Gopher と Gopher+ Protocol services の為の gopher スキーム http://www.math.uio.no/faq/compression-faq/part1.html -- Hypertext Transfer Protocol services の為の http スキーム mailto:mduerst@ifi.unizh.ch -- electronic mail addresses の為の mailto スキーム news:comp.infosystems.www.servers.unix -- USENET news groups and articles の為の news スキーム telnet://melvyl.ucop.edu/ -- TELNET Protocol によるインタラクティブ・サービスの為の telnet スキーム
プロトコルとドメインを完全に指定する URI を絶対 URI と呼びます。この URI は一意的であり、ネットワーク上の何処からでも、この URI を用いて、ただ一つのリソースを識別できます。
http://www.sugai.f2s.com/web/XHTML11/a.html
特に、最後のファイル名が省略された場合は、当該ファイルが存在するサーバーで設定されている標準ファイルが返されます。一般的には、 index.html
と index.htm
が採用されています。
絶対 URI | http://www.sugai.f2s.com/web/ |
---|---|
返されるリソース | http://www.sugai.f2s.com/web/index.html http://www.sugai.f2s.com/web/index.htm |
ディレクトリ名で終了する場合は、最後のスラッシュ "/
" の有無は本質的です。スラッシュがあれば、ファイル名が省略されているものと解釈され、上記のように標準ファイルが返されます。スラッシュが無ければ、必ずしもファイル名の省略とは解釈されません。つまり、 "http://www.sugai.f2s.com/web
" と "http://www.sugai.f2s.com/web/
" は必ずしも同じリソースを明示しません。
URI がディレクトリで終了した場合に、ファイルの省略と解釈して、当該ディレクトリ内の標準ファイルを返すのは、サーバの仕事です。サーバは、当該ディレクトリ内に標準ファイルに該当するファイルが無い場合は、アクセス権で保護していない限り、ディレクトリの内容を返します。
同じサーバー内の文書を指定する場合は、絶対 URI は冗長です。相対 URI を用いることができます。
同じサーバー内のファイルは、ディレクトリの木構造のなかのどこかのディレクトリの中として指し示すことが出来ます。相対 URI は、この木構造における、基準位置からの相対的な位置を指し示すものです。基準位置は、特別に指定しない限り、当該ファイルが存在するディレクトリ(カレントディレクトリ)になります。
同じディレクトリ内の別のファイル test.html :
test.html 又は ./test.html
ピリオド ".
" は、現在いるディレクトリを指し示しています。 UNIX 系 OS のファイルシステムでは、カレントディレクトリを指し示すハードリンクに他なりません。
一つ上のディレクトリ内のファイル test.html :
../test.html
ピリオド二つ "..
" は、現在いるディレクトリの一つ上の階層のディレクトリを指し示します。 UNIX 系 OS のファイルシステムでは、カレントディレクトリの親ディレクトリを指し示すハードリンクに他なりません。
一つ下のディレクトリ directory 内のファイル test.html :
./directory/test.html
相対 URI は、参照しているリソースから見た対象リソースの相対的な位置を指定します。したがって、元のリソースのネットワーク上での位置によって、指し示すリソースが変わります。
相対 URI は、絶対 URI に変換されて始めて、一意性を獲得します。この変換を「解決」と呼びます。具体的には、相対 URI は基準 URI によって変換を受けます。
特に指定しない限り、基準 URI は当該リソースの絶対 URI が用いられます。絶対 URI "http://www.sugai.f2s.com/web/XHTML11/xmlns.html
" で識別される文書内に記述された相対 URI "../index.html
" は、次のように解決されます:
基準 URI: | http://www.sugai.f2s.com/web/ |
XHTML11/xmlns.html |
---|---|---|
相対 URI: | ../index.html |
|
解決後 URI: | http://www.sugai.f2s.com/web/ |
index.html |
この文書内に記述された "./anchor.html
":
http://www.sugai.f2s.com/web/XHTML11/anchor.html
この文書内に記述された "xml.html
":
http://www.sugai.f2s.com/web/XHTML11/xml.html
この文書内に記述された "./dtd/modules.html
":
http://www.sugai.f2s.com/web/XHTML11/dtd/modules.html
この文書内に記述された "../../index.html
":
http://www.sugai.f2s.com/index.html
相対 URI を解決する為の基準 URI は、特に指定しなければ、当該文書のネットワーク上での絶対 URI が採用されます。明示的に指定する場合は、 head
要素の内容に定義されている base
要素で明示します。
<head> <base href="http://www.sugai.f2s.com/web/" /> <title>XHTML 1.1 入門</title> </head>
当該文書の基準 URI は、当該文書の位置に寄らず、一意的に "http://www.sugai.f2s.com/web/
" が採用されます。