メールマガジン「初心者のためのホームページ作り」でお伝えした内容を、「復習」の意味で掲載しています。テキストのみのマガジンと違って、実際のサンプルや画像を交えて解説していますので、理解が深まると思います。なお、疑問点や分からない点がありましたら、遠慮なく メールにてご質問ください。
プレーンテキスト版バックナンバー
今週<第41号>マガジンのおさらい
毎週金曜日配信 What's New 2003/2/28
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
今週の課題 ■ XHTML講座 第6回 概念XHTML1.1モジュール定義
◆ XHTML1.1モジュールとは
W3Cは、XHTMLのユニバーサル化を策定し、XHTML1.1の勧告するわずか1ヶ月前に、XHTMLMODを勧告し、XHTMLの全要素をモジュール化しました。このモジュールは DTDの書式で細かく定義されており、XHTML作成者は、必要なモジュールだけを抽出して独自タグセットを作ることが可能になりました。
各モジュールの定義と簡単なサンプルを用いて解説します。
■ 中核モジュール
構造モジュール
| 要素 | 意味 | 最小内容 |
| body | 文書の本文に当たる部分 | Block,Heading,List,Table |
| head | 文書情報などを記述する | title |
| html | ルート要素 | head, body |
| title | 文書の題名 | #PCDATA(text) |
文書の構造を示すモジュールで、必須の項目です。html要素はルート要素と呼ばれ、すべての要素の頂点に位置し、この要素で囲まれたものを XHTML文書と呼びます。
| 要素 | 意味 | 最小内容 |
| abbr | 略語の説明 | #PCDATA(inline-level) |
| acronym | 発音できない略語の説明 | #PCDATA(inline-level) |
| address | 住所などの記述 | #PCDATA(block-level) |
| blockquote | 長文の引用 | #PCDATA(block-level) |
| br | 強制改行 | empty |
| cite | 引用文献の参照先 | #PCDATA(inline-level) |
| code | プログラムコードの記述 | #PCDATA(inline-level) |
| dfn | 定義済み用語の指定 | #PCDATA(inline-level) |
| div | 汎用ブロックレベル要素 | #PCDATA(block-level Flow) |
| em | 強調文字 | #PCDATA(inline-level) |
| h1〜h6 | 見出し | #PCDATA(block-level)Heading |
| kbd | キーボード入力の文字 | #PCDATA(inline-level) |
| p | 段落 | #PCDATA(block-level)Paraglagh |
| pre | 整形済みテキストの表示 | #PCDATA(block-level) |
| q | 短文の引用 | #PCDATA(inline-level) |
| samp | サンプルに用いる文字列 | #PCDATA(inline-level) |
| span | 汎用インラインレベル要素 | #PCDATA(inline-level) |
| strong | 強調文字 | #PCDATA(inline-level) |
| var | 変数などの表現 | #PCDATA(inline-level) |
abbr、acronym要素などは、一般的にツールチップが表示される場合があります。code、kbd、pre、samp要素では、一般的に固定ピッチフォントで表示されます。div、span要素は、汎用的に用いられるもので、多くはスタイルシートで見栄えを設定する場合に用いられるケースが多いようです。
なお、p、pre、h1〜h6要素の中には、他のブロックレベル要素は配置することができません。
テキストのサンプル
ハイパーテキストモジュール
| 要素 | 意味 | 最小内容 |
| a | 他文書へのリンクを表す 例:<a href="index.html">Home</a> | #PCDATA(inline-level) |
XMLにはない機能で、他の文書の参照に利用します。なお、a要素の name属性は廃止されておりますので、変わりに id属性を利用します。
| 要素 | 意味 | 最小内容 |
| dl | 定義済みリストの設定 | dt, dl |
| dt | 定義済みリスト項目 | #PCDATA(inline-level) |
| dd | 定義済みリスト補足説明 | #PCDATA(inline-level)Flow |
| ol | 番号つきリストの設定 | li |
| ul | 番号なしリストの設定 | li |
| li | リスト項目 | #PCDATA(inline-level)Flow |
dd、li要素とも、ブロックレベル要素を配置して利用することが可能です。ol、ul要素ともに配置できるのは、li要素のみとなりますので、気をつけてください。
リストのサンプル
■ テキスト拡張モジュール
表示(プレゼンテーション)モジュール
| 要素 | 意味/サンプル | 最小内容 |
| b | 強調文字 物理要素 | #PCDATA(inline-level) |
| big | 大きいフォントサイズ | #PCDATA(inline-level) |
| hr | 罫線 | empty |
| i | 斜体文字 物理要素 | #PCDATA(inline-level) |
| small | 小さいフォントサイズ | #PCDATA(inline-level) |
| sub | 上付き文字 例:2の2乗 22 | #PCDATA(inline-level) |
| sup | 下付文字 例:H2O | #PCDATA(inline-level) |
| tt | テレタイプ文字 物理要素 | #PCDATA(inline-level) |
このモジュールは、単純なプレゼンテーション関係のマークアップのための要素、属性、最小内容モデルを定義しています。b、big、i、small、ttなどはユーザ環境に依存する物理タグと呼ばれるもので、できるだけ使用しないようにお勧めします。これらの要素が XHTMLにも継承されているとは、少々驚きです。物理タグのためサンプルはありません。
編集モジュール
| 要素 | 意味/サンプル | 最小内容 |
| del | 抹消線付文字 例:抹消されました | #PCDATA Flow |
| ins | 追加されたテキスト 例:追加しました | #PCDATA Flow |
この2つの要素は、インラインレベルとブロックレベルの性格を持ち、必要に応じて利用することができる一風変わったタグです。それぞれ、後で編集する場合に用いられるものです。
双方向テキストモジュール
| 要素 | 意味/サンプル | 最小内容 |
| bdo | 左、右の文字方向 例:ヘブライ語 | #PCDATA(inline-level) |
このモジュールは、要素の内容に双方向規則を宣言できる要素を定義します。つまり、文字の方向がが左から右へ、あるいは右から左へのどちらかを定義するもので、アラビア語やヘブライ語などに適した文字方向を指定できる要素が組み込まれています。
| 要素 | 属性 | 最小内容 |
| form | フォームの設定 | #PCDATA(block-level) |
| input | 入力コントロールの設定 | empty |
| label | 入力コントロールのラベル | #PCDATA(inline-level) |
| select | メニューの設定 | option |
| option | メニュー項目 | #PCDATA |
| textarea | テキスト入力領域の設定 | #PCDATA |
| button | ボタンの設定 | #PCDATA(inline-level) |
| fieldset | コントロールのグループ化 | #PCDATA(inline-level) |
| legend | グループ化したラベル | #PCDATA(inline-level) |
| optgroup | メニュー項目のグループ化 | option |
フォームと各コントロールの設定をまとめたモジュールで、XHTML Basicでは、グループ化などの要素が使えません。また、フォームには最低限1つ以上のコントロールを含まなくてはいけません。
基本的にフォームはブロックレベル要素ですが、form要素直下には、段落要素などのブロックレベル要素を配置しなくてはいけません。 フォームのサンプル
| 要素 | 意味 | 最小内容 |
| caption | テーブルのキャプション | #PCDATA(inline-level) |
| table | テーブルの設定 | caption,tr,tbody,thead,colgroup,etc |
| td | データセル | #PCDATA Flow |
| th | ヘッダセル | #PCDATA Flow |
| tr | 横列のセルの並び | td, th |
| col | 縦列のセルの設定 | empty |
| colgroup | 楯列のセルのグループ化 | col |
| tbody | テーブル本体のグループ化 | tr |
| thead | テーブルヘッダのグループ化 | tr |
| tfoot | テーブルフッタのグループ化 | tr |
表を構成するモジュールです。XHTML Basicでは、テーブルを入れ子にすることができません。tbodyは、設定がない場合にはブラウザ側で自動的に補完されることがあります。なお、このページの表では、table、tr、td、colgroup、col、thead、tbody などの要素を使用しています。
テーブルをレイアウトに使うなと、W3Cは言っていますが、私の場合は無視しています。W3Cでも、トップページにテーブルでレイアウトを構成しています。ずいぶんだよなぁ・・ テーブルのサンプル
■ 画像モジュール
| 要素 | 意味 | 最小内容 |
| img | 静止画像の貼り込み 例: | empty(inline-level) |
一般的に GIF、JPEG、PNG形式などの静止画像を表示するために用いられるモジュールで、クライアント・サーバ・サイドもサポートしています。今後は、object要素に集約される可能性があります。
■ クライアント・サイド・イメージマップモジュール
| 要素 | 意味 | 最小内容 |
| a | マップの個々の領域の設定 | - |
| area | マップ領域 | empty |
| img | マップ画像 | empty(inline-level) |
| input | マップの呼び出し | empty(inline-level) |
| map | マップの設定 | (block-level) |
| object | マップ画像 | objectのみ適用 |
XHTML1.1では、img要素の usemap属性にハッシュマーク ( # ) が使えないため、基本的にイメージマップを実現することは不可能です。XHTML1.1における usemap属性の値は IDREF のために、英文字しか使うことができません。この点の改良を望みたいものです。
■ サーバ・サイド・イメージマップモジュール
| 要素 | 意味 | 最小内容 |
| img | イメージマップに利用する画像の指定 | empty(inline-level) |
| input | マップの呼び出し | empty(inline-level) |
クライアント・サイド。イメージマップは、ブラウザ側で実行するイメージマップですが、サーバ・サイドは Webサーバ上で実行させるために、主に CGIを利用することが一般的です。これも XHTML1.1では実現不可能となっています。
■ オブジェクトモジュール
| 要素 | 意味 | 最小内容 |
| object | オブジェクトの指定 | #PCDATA Flow |
| param | 利用するオブジェクトのパラメータ設定 | empty(inline-level) |
動画、アニメーション、ビデオ映像などを扱うモジュールです。将来的には静止画もこのモジュールに取り込まれていくといわれています。ただし、残念ながらブラウザ側でのサポートが遅れており、実現までにはまだ時間がかかりそうです。
■ メタ情報モジュール
| 要素 | 意味 | 最小内容 |
| meta | サーバやブラウザに文書情報を伝える | empty |
このモジュールは、HTTPサーバ、ユーザエージェントなどに文書が持つ各種情報を伝え、文書が正確に表示できるようにするための手続きを行います。多くは MIMEタイプが用いられ、ブラウザに情報を提供するといわれています。また、検索サーチに対応するための記述がありますが、最近ではあまり検索されることがなくなりました。
■ 組込みイベントモジュール
| 属性名 | 意味 | 利用される要素 |
| onmouseover | マウスが触れたら発生する | a |
| onmouseout | マウスが離れたら発生する | a |
| onclick | マウスがクリックされたら発生する | a |
| onkeypless | キーが押されたら発生する | a |
| onblur | フォーカスを失ったら発生する | area,form |
| onfocus | フォーカスを得たときに発生する | area,form |
| onload | ページが読み込まれたら発生する | body |
| onunload | 他のページに移動したら発生する | body |
| onrest | 取り消しボタンを押されたら発生する | form |
| onsubmit | 送信ボタンが押されたら発生する | form |
スクリプトがなくても単独で動作するイベントハンドラを集めたモジュールです。もちろん、スクリプトと連動させることも可能です。
■ スクリプトモジュール
| 要素 | 属性 | 最小内容 |
| script | スクリプトの設定 | #PCDATA |
| noscript | スクリプト未対応ブラウザへの記述 | #PCDATA |
スタイルシート同様、内容が #PCDATAのため、直接文書に埋め込むことができません。CDセクションを設けるか、外部スクリプトを用意しなくてはなりません。CDセクションに対応したブラウザが少ないので、外部スクリプトが最も推奨される方法です。
■ リンクモジュール
| 要素 | 属性 | 最小内容 |
| link | 外部文書の参照 | empty |
このモジュールは、外部文書へのリンクを定義するために用いる要素を定義します。これらのリソースは、ブラウザが、XHTML文書を処理する能力を向上させるために、度々用いられています。
レガシー、ターゲット、アプレット、フレームなどのモジュールは、XHTML1.1では利用することができないため、掲載を割愛しました。あしからず。
なお、各要素タイプの詳細は、XHTML1.1リファレンス を参照してください。
Copyright(C) 2002-2003 ばんばん banban@scollabo.com