meta要素
Updated / Published
meta
要素(generic metainformation)は文書の制作者、制作年月日、説明、キーワードなどの文書の付加情報を記述したり、閲覧時に文字化けを防ぐ文字コード(符号化方法)などのUAへの補助情報を設定します。終了タグはなく、内容をもたない空要素です。
name
属性には標準となるプロパティのリストはなく、文書制作者が好みに応じてどの様な文書の情報でも定義できます。
http-equiv
属性で定義した情報は当初はHTTPレスポンスヘッダ(UA とウェブサーバがデータを送受信する際に使われている通信手順をHTTPと言い、UAのリクエスト時のメッセージをHTTPリクエストヘッダ、このリクエストに対してウェブサーバが返すメッセージをHTTPレスポンスヘッダと言う)を形成する際の追加情報となることが考えられていましたが、そのようなウェブサーバは結局登場してこなかったため、専らUAにとってHTTPレスポンスヘッダと同様の働きをする補足情報(メタ情報)として機能します。
name
属性, http-equiv
属性の対になる情報を content
属性で定義します。ゆえに、content
属性は必須属性です。
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 要素型
- head要素の子要素
- 開始タグ
- 必須
- 終了タグ
- なし
- 非推奨
- -
- 内容モデル
- -
content属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- meta
- 必須
- 必須属性
- 非推奨
- -
- 属性値
- 文字列
name
属性や http-equiv
属性で指定したプロパティの値を指定します。meta
要素の必須属性です。半角アルファベットの大文字・小文字を区別する(case-sensitive)ので厳密な指定が必要です。
http-equiv属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- meta
- 必須
- -
- 非推奨
- XHTML1.1 非推奨
- 属性値
- 文字列
name
属性の代わりとして働き、当初はHTTPレスポンスヘッダを形成する際の追加情報となることが考えられていましたが、そのようなウェブサーバは結局登場してこなかったため、専らUAにとってHTTPレスポンスヘッダと同様の働きをする補足情報(メタ情報)として機能します。
この補足情報(メタ情報)は、UA が適切に処理を行うための情報となります。たとえば、検索エンジンのロボットやブラウザなどの UA がその文書が記述されている文字コードや MIME を適切に処理できるように明示する場合は次のように記述します。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
この記述により UA が文書を読み込むと同時に文書形式は "text/html
"、記述されている文字コードは "Shift_JIS
" という情報を UA に与えることができ、ユーザの閲覧時や検索エンジンのロボットがウェブページの情報を収集(インデックス)する際の文字化けを防ぐことに役立ちます。http-equiv
属性は他にも次のような場合にも使用します。http-equiv
属性の値は半角アルファベットの大文字・小文字が区別されません(case-insensitive)。
スクリプトやスタイルの MIME
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
文書を読み込んだ際に文書内で使用しているスクリプトやスタイルを UA が正しく認識できるように指定します。"Content-Script-Type
" がスクリプト、"Content-Style-Type
" が制作者スタイルシートの MIMEを定義しており、content
属性の値は、スクリプトに JavaScript(text/javascript
)を、スタイルシートには CSS(text/css
)を使用していることを明示しています。
自動的に再表示(更新)させる
<meta http-equiv="refresh" content="10">
"refresh
" は UA に対して文書の再読込を行うようにする指定で、content
属性の値には何秒おきに再読み込みさせるかを指定します。この機能をクライアントプル(Client Pull)と呼びます。この指定をさらに拡張して、content="10;url=/new/"
のようにコロン(;
)に続いて、「url=
」の書式で再読み込み後に指定の URI にリダイレクトさせることもできます。
アクセス毎に最新のページを読み込みさせる
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
HTTPの仕様が厳密に決まったのは1996年のバージョン1.0からで、その後1999年に、HTTP1.0の機能を拡張したHTTP1.1(RFC2616)が公開されました。このため、UAによってそれぞれ対応しているHTTPのバージョンが異なる場合があります。"pragma
" は HTTP1.0準拠の UA を対象とし、"Cache-Control
" は HTTP1.1準拠のUA を対象とする指定で、この例ではどちらも UA に対してキャッシュ(cache)の制御を行う命令をしています。content
属性の値の "no-cache
" はキャッシュしないという処理内容です。これはブラウザなどの UA にはレンダリング速度を速めるために、一度表示したデータをハードディスク内に一時的に保存しておき、次に表示するときにはウェブサーバから再度ダウンロードするのではなく、ハードディスク内のデータをそのまま表示する機能があります。
このため、頻繁に更新する文書においては、キャッシュ機能は好ましくないのでキャッシュさせたくない場合に使用します。ただし、この指定で UA がキャッシュを無効にするかどうかは、各 UA の振る舞いに依ります。また、この指定が有効なのは当該文書内の HTML やテキストのデータのみで、どのUAにおいても当該文書内に使用している画像ファイルなどには働きかけないようです。
XHTML1.1 では HTML互換のため非推奨
なお、XHTML1.1 では http-equiv
属性の指定は全て HTML互換のため指定自体が推奨されていません。このため文字コードや MIME、リダイレクト、キャッシュの制御などは補足情報として設定するのではなく、直接、HTTPヘッダ情報として定義する必要があります。たとえば、UNIX系OSの多くが採用しているApacheサーバであれば httpd.conf や .htaccess を使うことで、先のサンプルで紹介してきたhttp-equiv
属性の指定は次のように代替可能であり、直接HTTPヘッダで設定した方がより安全・確実です。
#拡張子に応じたMIMEと文字コードの指定例
AddType "text/html; charset=Shift_JIS" .html
#拡張子に応じたMIMEのみの指定例
AddType text/css .css
AddType text/javascript .js
#リダイレクトさせる指定例
Redirect permanent /old/ /new/
#キャッシュさせないようにする指定例
<Files ~ "\.(html|htm)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>
name属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- meta
- 必須
- -
- 非推奨
- -
- 属性値
- 文字列
文書の著者名や内容の説明、キーワードなどの文書に関するプロパティを指定します。半角アルファベットの大文字・小文字を区別する(case-sensitive)ので厳密な指定が必要です。一般的によく指定されている name
属性には次のようなものがあります。ただし、これらの設定は正式な仕様ではなく、文書制作者が好みに応じてどの様な文書の情報でも定義することができます。
文書の著者名を示す
<meta name="author" content="上田 遼">
"author
" は文書の著者(作者)を示し、content
属性の値にその文書の著名名を記述します。
文書の内容の説明(概要)を示す
<meta name="description" content="HTML reference">
"desicription
" は文書の内容説明を示し、content
属性の値にその文書の内容を簡潔に表した説明文(要約文)を記述します。Google などの検索エンジンでは、この要約文が検索結果に表示されるウェブページの説明部分(スニペット)にもなります。
検索エンジンロボットにページの登録とリンク先を辿る可否を指定
<meta name="ROBOTS" content="ALL">
"ROBOTS
" は検索エンジンロボットに対する指示で、content
属性の値にページの登録とリンク先を辿る可否を指定します。このロボットの動きを制御するプロパティについては属性の値は大文字で記述するのが正式とされます。特に指定がなければ検索エンジンロボットは自動的にウェブページの情報を収集し、そのウェブページ内のリンク先を辿って、他のウェブページの情報を収集することができます。そのため、たとえばフレームのメニューページやポップアップページなど検索でユーザが直接飛んきても不都合があるようなウェブページ以外には、とくにこのロボットの行動を制御する記述を行う必要はありません。
ページ登録 | リンク先を辿る | タグの表記例 |
---|---|---|
◯ | ◯ | <meta name="ROBOTS" content="ALL"> |
◯ | ◯ | <meta name="ROBOTS" content="INDEX,FOLLOW"> |
◯ | × | <meta name="ROBOTS" content="INDEX,NOFOLLOW"> |
× | ◯ | <meta name="ROBOTS" content="NOINDEX,FOLLOW"> |
× | × | <meta name="ROBOTS" content="NOINDEX,NOFOLLOW"> |
× | × | <meta name="ROBOTS" content="NONE"> |
検索エンジンロボットは属性値の各値は半角アルファベットの大文字・小文字どちらでも認識するようです。
文書作成時に使用したソフトウェアを示す
<meta name="generator" content="TeraPad">
"generator
" は文書作成時に使用したソフトウェア(HTMLエディタやテキストエディタ、CMS など)を示します。content
属性の値に使用したソフトウェアの名称を記述します。
scheme属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- meta
- 必須
- -
- 非推奨
- -
- 属性値
- 文字列
name
属性と content
属性に指定されたプロパティの値を解釈する際のスキーム(プロパティの値を正確に解釈するための追加的な情報)を示します。半角アルファベットの大文字・小文字を区別する(case-sensitive)ので厳密な指定が必要です。たとえば文書の作成日を name
属性の値に "creation-date
" と指定して、その日時を content
属性の値に "05-09-26
" と示した場合、scheme
属性の値は "05-09-26
" という数字の羅列されただけの情報を文書の作成日として意味が通るように "year-month-day
" と補足することができます。現状では、ほとんど活用されておらず、実際のところ UA の対応についても不明です。
<meta name="creation-date" content="05-09-26" scheme="year-month-day">
このように独自の一般的ではないプロパティを定義しても、一応は scheme
属性で文書を処理するソフトウェアがその内容を理解できるように補足情報を付けることができます。