head要素内に記述される、文書情報(メタデータ:meta data)記述用の要素です。
文書という情報自身に関する情報を記載するためのものです。
HTML 4.01の仕樣書は、メタデータに記述出來る事柄を、具體的に定義してはゐません。(This specification does not define a set of legal meta data properties.
:本仕樣では、正當なメタデータのプロパティセットを定義しません。)
meta data以外に、HTML文書と他のリソースとの關聯を記述する爲の仕樣は、Resource Description Framework (RDF) Model and Syntax Specificationにまとめられてゐます。
<meta http-equiv="..." content="...">
<meta name="..." content="...">
http-equiv
屬性は本來、メタデータを載せてHTTPヘッダを出力するやう、サーヴァに指示を出す爲の記述です(content
屬性の値がその中身)。
しかし、多くのサーヴァがmetaを讀んでHTTPヘッダを出力するやうな設定になつてゐません。さう云ふ場合、仕方がないので、User Agent/ブラウザ等のクライアントプログラムは、文書内のmetaの記述を讀んで、それなりに適當な動作をしてゐます(ゐる事があります)。
name
屬性は、content
屬性と組合せて、色々な情報を示す爲に用ゐられます。
address要素で、文書の制作者・記述者への聯絡先を明示出來ます。meta要素に制作者名と著作權情報を、link要素に聯絡先メールアドレスを記述する事もできます。
ISO-HTMLでは、「address要素で文書全體の制作者・記述者への聯絡先を記述する事は出來ない」と考へられてゐるやうです(私見)。
<META name="Author" content="Dave Raggett">
<meta name="copyright" content="(c)1998-2003 T Nozaki">
なほ、著作權情報を書かないでゐても、法律上、著作權は發生します(日本ではさうなつてゐますし、多くの國ではさう解釋されます)。
メタデータをユーザエージェントがどう活用するかは、ユーザエージェントの實裝次第です。檢索エンジンなどのロボットは、以下の記述を利用する事がありますけれども、利用しないで勝手に動作する事もあります。
<meta name="description" content="正字正かなの原理">
<meta name="keyword" content="正字正かな,歴史的仮名遣,歴史的假名遣,現代かなづかい,日本語,国語">
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
「文字コード」の記述で不適切な事を書くと、ブラウザで文字化けの嵐となるので氣をつけるやうに、と言はれます。それは或意味、慥かにさうなのですが、しかし、そもそもmetaで「文字コード」を指定するのは無意味です。
或HTML文書の「文字コード」は、本來HTTPヘッダで指定される筈のものです。http-equiv屬性附きのmetaでなされてゐる事を見ればわかる通り、metaでの「文字コード」の指定は、サーヴァに適切な文字コード情報をHTTPヘッダに乘せるやう指示する爲のものです。ただ、サーヴァがさつぱりこの記述に從つて呉れないので、ブラウザが仕方なしにこの記述を讀んでゐるだけです。
meta自體の記述をブラウザが讀取りに失敗する、と云つた事態も、ないとは言へません(UTF-16やUCS-4)。metaに「文字コード」を書けば安心、とは言切れません。この記述が出現するまでascii文字しか出現しないHTML文書ならば、取敢へず多くの場合、ブラウザは動作すると思はれますが、そこには何の保證もありませんので、注意して下さい。
<META http-equiv="Content-Style-Type" content="text/css">
Content-Style-Type
屬性附きのmetaは、標準で使用するスタイルシート言語を指定します。CSSを使用するなら、上記のやうに記述しておいて下さい。JavaScript Stylesheetを使用する場合、どうすれば良いのか、私は知らないので、ここには何も書きません。<META http-equiv="Content-Script-Type" content="text/javascript">
Content-Script-Type屬性附きのmetaは、標準で使用するスクリプト言語を指定します。JavaScriptを使用する場合、上記のやうに記述しておいて下さい。VBScriptの場合には、
text/vbscript
を記述しておいて下さい。デフォルトのスクリプト言語を記述した場合でも、個別のscript要素で、type屬性に記述したスクリプト言語を使用する事は、可能です。
例によつて、http-equiv
屬性附きのmetaですので、この手のデータは、HTTPヘッダで送れれば送つた方が、ベターと言へばベターです。まあ、仕樣と現實が乖離してゐる現状、何をどう書けば確實、とは全然言へませんので、どつちみち「念の爲」と云ふ事にしかなりません。
例によつて、http-equiv
屬性附きのmetaの話です。
クライアントなどにリソースのキャッシュをさせたくない場合、サーヴァが送出するHTTPヘッダに、no-cacheが出力されてゐれば、クライアントはキャッシュからデータを讀込みません(仕樣では)。
Pragma: no-cache
Cache-control: no-cache
このHTTPヘッダが附いて送られてくるHTML文書を、ブラウザはキャッシュしません(仕様では)。更新された内容を毎回読んでくれます(くれる筈です)。
サーヴァの設定を直接弄れない場合、metaでサーヴァに指示を出す事が(仕樣上は)できます。
<meta content="no-cache" http-equiv="Pragma">
<meta content="no-cache" http-equiv="Cache-Control">
HTTPヘッダでやつた方がスマートだ、と言はれますが、metaで書く事も出來なくはない、と云ふ話です。
しつこいやうですが、サーヴァやクライアントのプログラムにおける實裝状況により、この手の情報が使はれるか使はれないかは變化します。はつきり言つて「技術的には何も信じられない」と云ふのが現状です。結果として、メタ情報/meta/HTTPヘッダをきちんと使ふか使はないかと云ふ議論は、「律義な事をするか、手を拔くか」と云つた、技術者のプライドとか言論人の態度とか云つた「宗教」レヴェルの話になりかねません。