base要素
要素名 | バージョン | 開始タグ | 終了タグ | 分類/親 | 中身 |
---|---|---|---|---|---|
base | 2.0, 2.x, 3.2, 4.0, X1.0, X1.1 | 必須 | 禁止 | %head.content; | EMPTY |
属性名 | バージョン | 属性値 | 既定値 | 備考 |
---|---|---|---|---|
href | 3.2, 4.0, X1.0, X1.1 | %URI; | #IMPLIED | URI that acts as base URI |
target | (4.0), (X1.0) | %FrameTarget; | #IMPLIED | render in this frame |
baseの解説
HTML 文書の基準 URI を指定します。href属性に書かれた URL が、この文書の基準 URL とされ、相対参照を解釈する際に利用されます。たとえば、
<base href="http://www.ne.jp/asahi/minazuki/bakera/html/hatomaru.html" />
……
<a href="#top">先頭へ</a>
<a href="./">インデックスページへ</a>
となっているとき、最初の "#top" は "http://www.ne.jp/asahi/minazuki/bakera/html/hatomaru.html#top" に、"./" は "http://www.ne.jp/asahi/minazuki/bakera/html/" に、それぞれ解釈されます。
base の指定は、他のあらゆる URI の指定よりも前になければなりません。base が出てくる前に link などが出現すると、相対参照をうまく解釈できなくなってしまいます。また、当然ながら、base の指定自体を相対参照で記述することはできません。base の href属性の値は絶対 URL である必要があります。
なお、base要素がない場合は、その文書の実際の URI が基準 URI とされます。普通はそれで問題ありませんので、無理に base要素を使う必要はありません。base要素を使うと便利なのは、たとえば以下のような場合です。
- HTML を別の場所に保存したが、リンク先や画像などが元の場所にしかないとき。たとえば、インターネット上のリソースをローカルに保存したとき、そのままでは画像などが見られなくなってしまいますが、base 要素を追加して元の URL を基準 URL とすれば楽ができます。
- システムの都合によって、同じ HTML なのに URL が変わるとき。たとえば、CGI で PATH_INFO を使っていたりすると URL がころころ変わりますので、画像などを相対 URL で参照していると面倒なことになります。まあちゃんと処理すれば良いのですが、base要素を使うと楽ができる場合があります。
また、HTML4.0 Transitional では、target属性で基準となるターゲットフレームを指定するのにも使えます。Strict には target属性がなく、href属性が必須となっています。
余談ですが、HTML4.0 の仕様書では、HTTP応答ヘッダで Content-Base フィールドを指定して基準 URL を指定する方法についても触れられていました。しかし Content-Base は RFC2616 であっさりと消滅し、無かったことになっています。
Content-Base was deleted from the specification: it was not
implemented widely, and there is no simple, safe way to introduce it
without a robust extension mechanism. In addition, it is used in a
similar, but not identical fashion in MHTML [45].
以上、RFC2616 より
- 「base要素」にコメントを書く