HTMLのメタ情報

ドキュメントの作者が簡単にメタ情報を提供できるように、HTMLにはメタデータを文中に埋め込むための要素タイプがいくつか用意されています。head要素内に記述するものは基本的にメタ情報ですし、address要素や汎用属性のtitle属性などもメタデータを提供する手段です。

head要素でのメタ情報

メタデータを提供するといっても、特別難しいことをするわけではありません。html文書は、本文を構成するbody要素の前に、文書情報を提供するためのhead要素を持ちます。ここに記述されるタイトル、スタイルシート、スクリプトなどは、一般には画面に表示されず、ユーザエージェント(ブラウザ)がHTMLを処理するときなどに利用します。すなわち、head要素全体がメタ情報になるわけで、これをきちんと記述するのが、メタデータ提供の第一歩です。特にmeta要素タイプは、汎用的なメタ情報を提供するために活躍します。

meta要素タイプとプロパティ:値ペア

一般的なメタデータを示す簡単な方法は、「どんな性質(プロパティ)の情報」が「どんな値を持つか」という「プロパティ:値」のペアを示すことです。たとえば、“作者(author)”というプロパティ名の情報が“神崎正英”という値を持つという関係を示せば、文書の作者を知らせることができます。meta要素タイプは、name属性content属性の組み合わせでこの関係を表現します。

[例1] <meta name="author" content="神崎正英" />

name属性には任意の言葉を指定することができますが、理解しやすい語句をうまく使うと、XSLTと組み合わせてRDFとしてのメタデータを生成するといった応用も可能になります。

検索エンジンのロボットにキーワードや説明文を提供するkeywordsdescriptionは、広く知られています。

[例2]

<meta name="keywords" content="(キーワードを,で区切って列挙)" />
<meta name="description" content="(ページの内容の簡単な記述)" />

逆にロボットに情報収集をして欲しくない場合は、次のような記述でインデックス化を断ることができます。

[例3] <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />

keywordsはでたらめな(意図的に無関係な人気キーワードを記述する)使い方が横行したために、最近の検索エンジンでは効果が無いともいわれますが、Namazuを使ったサイト内検索システムでは高いスコアを与えられますし、XSLTを使った応用にはもちろん有益です。ROBOTSは大部分のロボットが対応しているようです。

HTTPヘッダの代用としてのmeta要素

ドキュメントについての基本的なメタデータはHTTPヘッダで提供されますが、HTTPヘッダの内容はドキュメントの作者が簡単に設定できるとは限りません。そこで、meta要素の特別な形として、name属性の代わりにhttp-equiv属性を指定することで、HTTPヘッダと同等(http-equiv)のメタデータを文中に埋め込むことができます。代表的な使い方のひとつに、Content-Typeヘッダの代わりとして文書の文字コードを示すものがあります。

[例4] <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

仕様としては、サーバーがHTML文書を送り出すときに、このmeta要素の内容を使ってHTTPヘッダを生成できるということになっていますが、実際はユーザエージェント(ブラウザ)がmeta要素を見て文字コードを判断するという使われ方になっています。

http-equiv属性は、このように本来はHTTPヘッダの代用という役割を持っていましたが、HTML4の仕様書[HTML4]ではこの役割を拡張し、「デフォルト情報」を示すものとしても利用しています。たとえば、文書のデフォルトスタイルシート言語やスクリプト言語を示す場合などです。

[例5]

<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/ecmascript" />

これらは、文書で使われるスタイルシート、スクリプトがそれぞれCSS、ECMAScriptであることを示します。本文中の要素でstyle属性やonmouseup属性などでスタイル、スクリプトを定義する場合、言語を指定する手段がないので、このmeta要素によるデフォルト指定が必須になります。

HTML4の仕様書では、これらのデフォルト指定はHTTPヘッダの値よりも優先されるとなっています(仕様書14.2.1, 18.2.2を参照。同5.2.2によれば、文字コード情報はHTTPヘッダ優先)。meta要素をサーバーが利用することはほとんどないため、現実に沿った定義としているのでしょうか。

meta要素は文書内に直接メタデータを埋め込むために用いられますが、メタ情報を外部文書に記述しておいて、それをlink要素で結びつけることもできます。

[例6] <link rel="meta" href="/meta/docs/sw/html-meta.html.rdf" />

これは、文書に関するメタ情報が、(RDFとして)外部に用意されていることをlink要素で示しているわけです。link要素は、メタ情報のリソース以外に、スタイルシートを結びつけたり、前後の文章や別言語バージョンを示すなどの使い方もできます。これらについては、当サイトのlink要素の使い方を参照してください。また、リンクタイプmetaについては、当サイトの外部RDFメタデータをHTML文書にリンクするの説明もご覧ください。

本文中で示すメタ情報

head要素の情報は、読者向けというよりはユーザエージェント向けのものですが、メタ情報の中には読者にも読める形で示すと都合がよいものもあります。これらはHTMLの本文であるbody要素内に、要素や属性の形で提供されます。

HTML4の仕様書[HTML4]では、次のようなものがメタ情報の例としてあげられています。

address要素タイプ
文書の作者、およびその連絡先を示します。多くの場合、文書の更新日や著作権情報も、読者に読める形でここに記述します。
ins/del要素タイプ
文書の修正履歴を示すため、削除部分をdel要素として、また追加・挿入部分をins要素としてマークアップします。datetime属性で修正のあった日時を示すほか、次に示すtitle属性やcite属性でその理由や根拠となるURIを示すことができます。
title属性
要素に補助的な説明を加えます。対応するブラウザは、この属性をツールチップやステータスラインに表示して、読者にヒントを与えます。
cite属性
引用要素(blockquote, q)およびins/del要素において、引用元や変更の理由を示すドキュメントのURIを記述します。
lang属性
その要素を記述している自然言語を示します。XML文書(XHTMLを含む)ではxml:lang属性を用います。本文だけでなく、html要素やmeta要素にも指定できます。

これらのメタ情報をHTML文書で適切に指定することで、検索エンジンの情報がより正確になったり、利用者がよりきちんと文書を理解できるようになり、ウェブの情報の共有性が高まります。私たちがセマンティック・ウェブの道に参加するための、第一歩です。

参照文献

[HTML4]
Dave Raggett, et al., HTML 4.01 Specification, , W3C Recommendation
<http://www.w3.org/TR/html4>