モバイルアクセス向け HTML 4.0 ガイドライン


モバイルアクセス向け HTML 4.0 ガイドライン

W3Cノート - 1999年3月15日

このバージョン[原文]:
<http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315>
最新のバージョン:
<http://www.w3.org/TR/NOTE-html40-mobile>
編集者:
Tomihisa Kamada, ACCESS Co.,Ltd. <tomy@access.co.jp>
Takuya Asada, W3C <asada@w3.org>
Masayasu Ishikawa, W3C <mimasa@w3.org>
Shin'ichi Matsui, W3C/Panasonic <matsui@w3.org>

この文書の位置づけ

この文書は、議論のために、World Wide Web Consortium (W3C) によって利用可能にされているノート (Note) である。この文書は、何時にても他の文書によって更新され、置換され、または廃止されることがある。この文書を参照資料として利用したり、「進行中の作業」以外のものとして引用することは不適切である。これは進行中の作業であって、W3C 会員組織や、モバイルアクセス ワーキンググループ (会員専用) のメンバーによる保証や合意という意味合いを含むものではない。

この文書は W3C モバイルアクセス アクティビティの一部として作成されている。この文書についてのコメントは、公開メーリングリスト www-mobile@w3.org (アーカイブ) へお送りいただきたい。

概要

この文書は、HTML 4.0 コンテンツをモバイルデバイスにとってできる限りアクセスしやすく作成する方法について、コンテンツ制作者向けガイドラインを記述したものである。

入手可能なフォーマット

この文書は以下のフォーマットで入手可能である。

HTML:
<http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/NOTE-html40-mobile.html>
プレーンテキストファイル:
<http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/NOTE-html40-mobile.txt>
gzip 圧縮 tar ファイルの HTML (付随リソース込み):
<http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/NOTE-html40-mobile.tgz>
zip ファイルの HTML (付随リソース込み):
<http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/NOTE-html40-mobile.zip>

多様なフォーマットの文書の間に食い違いがある場合には <http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315> が定義的バージョンとみなされる。

目次

  1. はじめに
  2. モバイルアクセスからの要求
    1. ハードウェア的制約
    2. ネットワーキングの帯域の狭さ
    3. アクセシビリティ要求
  3. モバイルアクセス向けガイドライン
    1. スタイル
    2. スクリプト、イベントハンドラ
    3. フォーム
    4. フレーム
    5. イメージマップ
    6. テーブル
    7. オブジェクトおよび画像
    8. アクセスキー
  4. モバイルアクセス向け HTML 4.0 DTD の例
  5. 結辞および将来的な方向性

1. はじめに

数年前にインターネットの世界が爆発的に広がって以来ずっと、関連する無数の世界が、標準的な WWW (World Wide Web) インフラストラクチャから生まれ出ては繁栄している。この成長は、世界中のインターネットユーザの指数関数的な増加によるところがもっとも大きい。こんにちインターネットアクセスは、もはやオフィスにあるパーソナルコンピュータや強力なワークステーションに限られたものではなく、家庭や路上にまで及びつつある。

「情報機器」と呼ばれる、インターネットアクセス機能を備えた新しいクラスの電子デバイスが最近生まれた。このインターネットアクセス機能は、テレビジョンやセットトップボックス、家庭用ゲーム機、電話ベースの端末、PDA、カーナビゲーションシステム、携帯電話といったようなデバイスに埋め込まれる。これらのインターネット機器は、有線接続が圧倒的であるこんにちのインターネット世界よりも遙かに大きい世界を遂には作り出すであろう無線インターネットと、有線インターネットとの併合を駆り立てるであろう。

W3C 規格や、厳格な設計上の必須事項に沿いつつこの新しいクラスの情報機器をサポートすることの必要性は、この進化しつつある世界がこんにち直面している課題である。

この文書は、「モバイルアクセス」にとって効果的に HTML 4.0 仕様書 [HTML40] を使う方法についてのコンテンツ制作者向けガイドラインと、ユーザエージェント製作者向けの設計上の注意のいくつかとを記述したものである。

2. モバイルアクセスからの要求

市場には広範囲のモバイルデバイスがある。典型的な製品の例は、以下の通りである。

この節は、「モバイルアクセス」からの要求事項をまとめたものである。

2.1. ハードウェア的制約

[CompactHTML] に記述されているように、モバイルデバイスにはハードウェア的な制約がいくつかある。主要な特性は、以下の通りである。

これらの特性は、モバイルデバイスのためのユーザエージェント機能を設計したり、モバイル親和的なコンテンツを作成する際に考慮に入れる必要がある。

2.2. ネットワーキングの帯域の狭さ

狭帯域で低速な無線ネットワーキングの場合には、コンテンツのサイズは小さいものであるべきである。こんにちの無線接続の主要な特性は、以下の通りである。

これらの制約は、基礎にあるコミュニケーション運搬装置に依存する。インフラストラクチャは、第三世代の無線電話ネットワーキングで改善されるであろう。

2.3. アクセシビリティ要求

情報機器は単純で簡単な操作がとても重要である。PC のユーザインターフェイスとは異なり、キーボードやマウスはモバイルデバイスには適していない。むしろ、4ボタンインターフェイス(カーソルを進める、カーソルを戻す、選択する、戻る、というボタン)のような直感的な操作が要求される。この意味で、WAI アクセシビリティガイドラインに記述されているような、ある種のアクセシビリティの配慮を考慮に入れるべきである。一般的に、WAI アクセシビリティガイドラインは、モバイルアクセスにも有益である。

たとえば、HTML 4.0 の "accesskey" 属性は、ボタンをリンクやフォーム選択に割り当てるために使うことができる。また、モバイルデバイスが大きい画像の代わりにテキスト記述を利用できるよう、画像の代替テキストが "alt" 属性経由で提供されるべきである。さらなる情報については、それぞれ 3.83.7 の節を見ること。

3. モバイルアクセス向けガイドライン

この節は、モバイルアクセスのための HTML 4.0 ガイドラインの詳細を記述したものである。

section 2 に記述されている要求事項に沿うため、我々はモバイルアクセスに適したベースラインとして、表現属性および要素を除外した HTML 4.0 Strict を使う。そこで、以下のガイドラインは、HTML 4.0 Strict を使うことを前提とする。

3.1. スタイル

普通のモバイルデバイスは、スクリーンのサイズが小さく、また表示能力が限定されており、そのため多くの場合でスタイルシートがサポートされないか、あるいはそのサポートが限定されている。

スタイルシートを使うときには、コンテンツのサイズや、構造とスタイルとの分離の観点から、外部スタイルシートが推奨される。このようにすれば、スタイルシートをサポートしないユーザエージェントは、不必要なスタイルシートを読み込む必要がない。

ユーザエージェントが適切なスタイルシートを選択できるよう、"media" 属性を使うことができる。詳細は [HTML40]14.2.4 を見ること。

STYLE 要素も使うことができるが、"style" 属性経由のインラインスタイルシートは好まれない。これは柔軟ではなく、また廃止予定で HTML 4.0 Strict から排除されている表現属性によく似たものだからである。

スタイルシートをサポートしないデバイスが、なお合理的にコンテンツをレンダリングできるよう、コンテンツはスタイルシートなしでも読めるものであるべきである。

[WAI-WEBCONTENT] 用テクニック集の 2.10 の節も見ること。

ユーザエージェントのための注意:

ユーザエージェントがスタイルシートをサポートしない場合であっても、スタイルを表示せず、またその他の副作用を引き起こさないよう、STYLE 要素を解析することが望ましい。

3.2. スクリプト、イベントハンドラ

普通のモバイルデバイスは、メモリストレージや CPU パワーなど限界があり、そのため多くの場合でスクリプティングがサポートされない。スクリプトがつねに実行されるだろうということを前提とするべきではない。コンテンツは、スクリプトが実行されない場合であっても読むことができるものであるべきである。

[WAI-WEBCONTENT] 用テクニック集の 2.13 の節も見ること。

ユーザエージェントのための注意:

ユーザエージェントがスクリプトをサポートしない場合であっても、スクリプトを表示せず、またその他の副作用を引き起こさないよう、SCRIPT 要素を解析することが望ましい。

3.3. フォーム

普通のモバイルデバイスは、基本的なフォームをサポートするが、デスクトップ PC のようなキーボードはない。コンテンツ制作者は、たくさんのキャラクタを入力することはモバイルデバイスのユーザにとって難しいことであろうことに留意するべきである。

時にはモバイルデバイスがローカルファイルシステムや、ファイルのアップロードのようにローカルファイルシステムに依存する機能をもたないことがあるから、使うべきではない。

多くのモバイルデバイスは画像をサポートせず、そのため INPUT 要素の "type" 属性に "image" という値が使われるべきではない。

3.2 に記述されているように、制作者は、スクリプティングに頼るべきではなく、また onsubmit といったようなイベントハンドリングのための属性を使うことを避けるべきである。

[WAI-WEBCONTENT] 用テクニック集の 2.12 の節も見ること。

3.4. フレーム

普通のモバイルデバイスはスクリーンのサイズが小さく、デバイスの中にはテキスト情報しかサポートしないものもある。フレームはスクリーンインターフェイスに強く依存し、また HTML 4.0 Strict の一部でもない。したがって、フレームは使うべきではない。

フレームを使うべきやむを得ない理由がある場合には、その内容が下記の記述を有するよう確かめること。

[WAI-WEBCONTENT] 用テクニック集の 2.11 の節も見ること。

ユーザエージェントのための注意:

ユーザエージェントはフレームをサポートしない場合には、NOFRAMES 要素の内容をレンダリングするべきである。また、ユーザエージェントがフレームをレンダリングできない場合であっても、ユーザがそれぞれのフレームの内容にアクセスできるよう、それぞれのフレームへのリンクを提供することが望ましい。

3.5. イメージマップ

モバイルデバイス上では、一般的に、画像がつねにレンダリングされることも、マウスのようなポインティングデバイスによって指し示すことができることも、前提とすることができない。したがって、サーバ側イメージマップは使うべきではない。

他方、クライアント側イメージマップは、画像がレンダリングされず指し示すこともできない場合であっても利用することができ、そのため制作者はクライアント側イメージマップを内容の中に組み込んでもよい。しかし、これは AREA 要素の "alt" 属性を経由して代替的解説文が提供されているときにのみ受け入れることができる。多くの場合では上記のように、画像がモバイルデバイス上ではレンダリングされず、あるいは画像がレンダリングできる場合でも画像を指すことが不可能であるから、HTML 4.0 ではこの "alt" 属性は必須属性である。

[WAI-WEBCONTENT] 用テクニック集の 2.7 の節も見ること。

ユーザエージェントのための注意:

可能であるならば、ユーザエージェントが画像をレンダリングし、(領域情報を使って)ポインティングで選択を提供することが望ましいであろう。画像のレンダリングやポインティングでの選択が不可能である場合であっても、AREA 要素の "alt" 属性を経由して、それぞれの領域のリンク先リソースへのアクセスを提供するべきである。

3.6. テーブル

多くのモバイルデバイスは、スクリーンサイズが小さい。コンテンツにテーブル記述がある場合には、それをモバイルデバイスでブラウズすることはとても困難であろう。さらに、[WAI-WEBCONTENT] 用テクニック集の Guideline 7 に記述されているガイドラインに従うことによってテーブルをアクセス可能な方法で再構築することは可能であるかもしれないが、2.1 に記述されているようにハードウェア的な制約のせいで複雑なテーブルを処理することはモバイルデバイスにとって困難であろう。したがって、可能なときにはいつでもテーブルの使用を避けることが安全であろう。適切なときにはいつでも、たとえばリストのような、代替的な構造を考慮すること。コンテンツ制作者は、モバイルデバイスではテーブルがつねに処理されるだろうと期待するべきではない。

ユーザエージェントのための注意:

困難である場合であっても、可能ならばユーザエージェントはテーブルを解析してレンダリングしてもよい。たとえば、CAPTION 要素や "summary" 属性は、テーブルを要約するために利用可能である。[WAI-USERAGENT] も見ること。

3.7. オブジェクトおよび画像

OBJECT 要素は、画像を含め多様なオブジェクトを HTML 文書に埋め込むよう設計されているものであり、モバイルデバイスでも有益である。たとえば、携帯電話用に音声(スピーチ)コンテンツをもつコンテンツや、カーナビゲーションシステム用にグラフィカルな地図をもつコンテンツは、それらのデバイスにとって典型的なコンテンツになるかもしれない。これらのコンテンツは、それらのデバイスの不可欠な要求や機能に合致するからである。

OBJECT 要素を経由してオブジェクトを埋め込むとき、OBJECT 要素の後詰め機構によって代替的内容が提供されるべきである。これらの代替的内容は、最後にはテキストになるものであるべきである。

下記の例は [HTML40] から引用されたものである。

  <P>
  <OBJECT data="navbar.png" type="image/png">
    <OBJECT data="navbar.gif" type="image/gif">
      画像を解説するテキスト...
    </OBJECT>
  </OBJECT>
  </P>

一般的に、よりよいフルバック機構が OBJECT 要素にはあるから、画像はそれを経由して埋め込まれるべきであるが、IMG 要素を使ってもよい。この場合には、画像をレンダリングできず、またはレンダリングしないユーザエージェントのために、"alt" 属性経由の代替的記述が提供されるべきである。この属性は [HTML40] では必須である。このガイドラインは、画像について特定の具体的なフォーマットを規定するものでも推奨するものでもない。

画像が重要な情報を表現する場合には、alt 属性経由の代替テキストに加えて、IMG 要素の longdesc 属性を経由して長文解説が提供されるべきである。

The APPLET element, which is not part of the HTML 4.0 Strict, should not be used in favor of the OBJECT element.

ユーザエージェントのための注意:

ユーザエージェントは、[HTML40]section 13.3.1 に記述されている優先順位規則に従い、ネストされたオブジェクトをレンダリングしようとするべきではない。ユーザエージェントが OBJECT 要素をサポートしない場合であっても、OBJECT 要素の代替内容を後詰めとしてレンダリングするべきである。

IMG 要素の longdesc 属性を経由して長文解説が提供される場合には、ユーザエージェントはその長文解説へのアクセスを提供するべきである。

3.8. アクセスキー

一般的に、(フル)キーボードと、マウスといったようなポインティングデバイスとからなる入力手段がモバイルデバイスで利用可能であると前提することはできない。モバイルデバイス上の入力手段の効率的な利用のための記述が、コンテンツ内に提供されることが望ましい。

この視点から、"accesskey" 属性 (A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA 要素用) を経由してアクセスキーを割り当てることは、それが利用できるときには実効的であろう。これは、リンクのアクセシビリティやフォーム関連の操作を改善するかもしれない。

しかし、"accesskey" 属性の利用には、注意深い配慮が必要となる。

  1. 多くのモバイルデバイスでは、利用できるキーが限られている。「フル」キーボードにあるすべてのキーが利用可能であることを前提とすることができない。
  2. 利用できるキーがモバイルデバイスの間で異なる。たとえば、携帯電話は "0"-"9", "*", "#" というキーをもつのが普通であろうが、同じ前提は、ほとんどのページャや携帯ゲーム機に当てはめることができない。
  3. "accesskey" 属性を全く使えないモバイルデバイスもある。たとえば、音声ブラウジング専用のデバイスは、アクセス「キー」を使わないであろう。コンテンツ制作者は、ナビゲーションについてアクセスキーに頼るべきではない。

ユーザエージェントのための注意:

ユーザエージェントは、可能なときにはいつでも "accesskey" 属性を経由して規定されたアクセスキーを解析しアクティブ化するべきであるが、それらのキーが利用できないときにはアクセスキーを無視するべきである。

4. モバイルアクセス向け HTML 4.0 DTD のサンプル

section 3 で述べたとおり、HTML 4.0 Strict は、モバイルアクセスのためのベースラインとして適しているであろう。この節は、section 3 に記述されたガイドラインを繁栄するべく、HTML 4.0 Strict DTD としての HTML 4.0 Mobile という DTD の記述例を解説するものである。

この DTD は、ISO/IEC 15445, 別名 ISO-HTML [ISO-HTML] のサブセットでもあるよう設計される。ISO-HTML は、しっかりと定義された HTML 4.0 Strict のサブセットであるから、この DTD に適合することは、モバイルデバイスを含めて広く多様なプラットフォームにわたる相互運用性を保証するであろう。HTML 4.0 Mobile 用 DTD の完全な定義は、付録 に記述される。

註: この文書を書いている時点では、[ISO-HTML] はまだ作業進行中である。またインターネット標準として確立されていない。

HTML 4.0 Mobile DTD は、(たとえば nsgmls [SP] のような SGML を用いて検証することにより) この文書に記述されたガイドラインに従って制作者が文書を作成することを助けるべく提供される。ガイドラインがすべて DTD の中で表記できるわけではないが、あわよくばこの DTD が、このガイドラインに従うことをさらに簡単にするであろう。

典型的には、この DTD は、以下のようにして呼び出すことができる。

<!DOCTYPE HTML SYSTEM "html40-mobile.dtd">
<html>
<head>
...

たとえば、この DTD は、style 属性や、onclick のようなイベントハンドラを除外しており、そのためコンテンツ制作者が文書をこの DTD に照らして検証するとき、それらの属性は未知の属性としてフラグを立てられることになり、制作者はそれらの属性が推奨されないことに気づくことができる。文書がこの DTD に照らして規則適合性を検証されれば、それらの文書は規則に適合した HTML 4.0 Strict としてラベルづけすることができる。

註. 以下の DOCTYPE 内部サブセットを使う場合、

<!DOCTYPE HTML SYSTEM "html40-mobile.dtd" [
<!ENTITY % Preparation "INCLUDE">
]>
<html>
<head>
...

[ISO-HTML] で要求される通りの厳密なヘッダづけを強制することができる。

どのような場合でも、文書の規則適合性を確認することはきわめて重要であるが、モバイルアクセスにとっては特に重要である。ほとんどのモバイルデバイスは、高くつくエラー回復を実行する余裕がないからである。

5. 結辞および将来的な方向性

我々は、無線ネットワークサービスが、成長中のインターネットサービスから孤立するべきではないと信じる。We believe that wireless network services should not be isolated from the growing Internet services. このガイドラインは、この目的のために利用できる。このガイドラインは、多様なモバイルデバイスのための HTML モバイルインターネットサービスや、HTML ブラウジングソフトウェアについての推奨されるガイドラインとして参照することができる。

目下のところ次世代 HTML [XHTML] についての作業が進行中である。これは、HTML の拡張やサブセット化を容易なものにする、モジュラ化された文書型のファミリーとなることになる。モバイルデバイスのカテゴリーは [XHTML] にとって主要なターゲットの一つであるから、モバイルプロファイルやモバイルモジュールが [XHTML] の一部として定義されることになるだろう。

無線アプリケーションプロトコル (WAP) について、[XHTML] と無線マークアップ言語 [WML] とを収斂させるための努力が、現在 W3CWAP フォーラムとの間で進行知勇である[WAP-W3C, WML1.1]。あわよくば、[WML] は、将来 [XHTML] 文書型のファミリーの一つとなるであろう。

無線デジタル電話ネットワーキングプロトコルについての世界規模の規格 (IMT-2000) は、もうすぐ確立されるであろう。IMT-2000 規格に基づいた新しいサービスは、21世紀初頭に開始するであろう。ネットワークの帯域は、IP 接続やインターネット指向コンテンツにとっては充分に広いものと期待される。

これは、モバイルインターネット用の HTML や関連勧告がますます重要になるだろうことを暗示している。このモバイルアクセス向け HTML 4.0 ガイドラインは、携帯電話向けの将来的な HTML モジュール方式に向かうよい一歩となるだろう。

参考資料

[CompactHTML]
"Compact HTML for Small Information Appliances", W3C ノート, T. Kamada, 1998年2月9日.
<http://www.w3.org/TR/1998/NOTE-compactHTML-19980209> で入手可能。
[HTML40]
"HTML 4.0 Specification", W3C 勧告, D. Raggett, A. Le Hors, I. Jacobs, 1997年12月18日. 1998年4月24日校訂.
<http://www.w3.org/TR/1998/REC-html40-19980424> で入手可能。
"HTML 4.0 Specification Errata" は <http://www.w3.org/MarkUp/html40-updates/REC-html40-19980424-errata.html> で入手可能である。
[ISO-HTML]
"ISO/IEC 15445:1998 Information Technology -- Document Description and Processing Languages -- HyperText Markup Language (HTML)", R. Price, D. Abrahamson, 作業進行中.
<http://purl.org/NET/ISO+IEC.15445/15445.html> で入手可能。
"User's Guide to ISO/IEC 15445:1998 HyperText Markup Language (HTML)" も参照すること。<http://purl.org/NET/ISO+IEC.15445/Users-Guide.html> で入手可能である。
[SP]
SP は、James Clark によって書かれた、SGML 解析および実体管理のための無料のオブジェクト指向ツールキットである。詳しい情報は <http://www.jclark.com/sp/index.htm> で入手可能である。
[WAI-WEBCONTENT]
"Web Content Accessibility Guidelines", W3C ワーキングドラフト, W. Chisholm, G. Vanderheiden, I. Jacobs, 作業進行中.
"Techniques for Web Content Accessibility Guidelines" も参照すること。
これらの文書の最新バージョンは <http://www.w3.org/WAI/#Resources> から入手可能である。
[WAI-USERAGENT]
"User Agent Accessibility Guidelines", W3C ワーキングドラフト, J. Gunderson, I. Jacobs, 作業進行中.
この文書の最新バージョンは <http://www.w3.org/WAI/#Resources> から入手可能である。
[WAP-W3C]
"WAP Forum - W3C Cooperation White Paper", W3C ノート, J. Hjelm, B. Martin, P. King, 1998年10月30日.
<http://www.w3.org/TR/NOTE-WAP> で入手可能。
[WML]
"Wireless Markup Language Specification", WAP Forum, 1998年4月30日.
<http://www.wapforum.org/docs/technical/wml-30-apr-98.pdf> で入手可能。
[WML1.1]
"Wireless Markup Language Specification Version 1.1", 提案中, WAP Forum, 1999年2月3日.
<http://www.wapforum.org/docs/technical1.1/WML-3-Feb-1999.pdf> で入手可能。
[XHTML]
"XHTML 1.0: The Extensible HyperText Markup Language - A Reformulation of HTML 4.0 in XML 1.0", W3C ワーキングドラフト, Steven Pemberton 他., 作業進行中.
<http://www.w3.org/TR/WD-html-in-xml> で入手可能。

付録 HTML 4.0 Mobile DTD

SGML カタログ例

註. HTML 4.0 Mobile DTD は、HTML 4.0 Strict DTD の完全なサブセットであり、以下の DTD を使えば

<!ENTITY % HTML.Strict "INCLUDE">
<!ENTITY % Mobile.dtd SYSTEM "html40-mobile.dtd">
%Mobile.dtd;

HTML 4.0 Specification Errata による修正後の HTML 4.0 Strict DTD と同じ提議を得ることができる。

以下の sample SGML catalog は、上記の DTD を使って HTML 4.0 Strict DTD を呼び出す。典型的には、Mobile DTD 事態がシステム識別子によって呼び出されることになり、そのためこのカタログは組み込まれない。

  -- HTML 4.0 Strict DTD. HTML 4.0 仕様書エラッタによる修正済み --
PUBLIC "-//W3C//DTD HTML 4.0//EN"                       html40-strict.dtd

  -- HTML 4.0 のための実体セット --
PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML"              HTMLlat1.ent
PUBLIC "-//W3C//ENTITIES Special//EN//HTML"             HTMLspecial.ent
PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML"             HTMLsymbol.ent

SGMLDECL html40.decl
DOCTYPE html html40-strict.dtd

文書型定義

<!--
    これは HTML 4.0 Mobile DTD である。これは、モバイルデバイスでの利用が
    難しい要素や属性を排除したものである。T
    HTML 4.0 Mobile DTD は、HTML 4.0 Strict DTD および ISO/IEC 15445 別名
    ISO-HTML の完全なサブセットとなるよう設計されている。ISO-HTML も HTML
    4.0 Strict DTD のサブセットである。この DTD は、HTML 4.0 仕様書のエラ
    ッタを考慮に入れている。

      註: ISO/IEC 15445 はまだ進行中の作業である。まだ国際規格ではないから
      進行中の作業以外のものとして引用することは不適切である。

    HTML 4.0 は、スタイルシートやスクリプティング、オブジェクトの埋め込み、
    右横書きテキストや混合方向テキストのサポートの改善、障碍のある人々向け
    にアクセシビリティを改善するためのフォームの拡張を組み込んでいる。

          草稿: $ Date: 1999/03/15 03:20:05 $

          著者:
              Masayasu Ishikawa <mimasa@w3.org>

          オリジナルの HTML 4.0 Strict DTD の著者:
              Dave Raggett <dsr@w3.org>
              Arnaud Le Hors <lehors@w3.org>
              Ian Jacobs <ij@w3.org>

    HTML 4.0 についての踏み込んだ情報は、次の場所で手に入る。

        http://www.w3.org/TR/REC-html40
-->
<!--
    典型的な利用法:

    <!DOCTYPE HTML SYSTEM "html40-mobile.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

    このDTDはもっぱら文書を準備するために使うつもりのものであるから、この
    DTDのためのFPIは定義されない。このDTDを呼び出すときにはシステム識別子
    を使い、このDTDに適合した文書を公開するときには Strict DTD 用のFPIを使
    うこと。

    HTML 4.0 Strict DTD 用のFPIは

        "-//W3C//DTD HTML 4.0//EN"

    であり、そのURIは

        http://www.w3.org/TR/REC-html40/strict.dtd

    である。

    以下のURIが HTML 4.0 に関連してサポートされる。これらのURIは、それぞれ
    のファイルの最新バージョンを指すものである。

    "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
    "http://www.w3.org/TR/REC-html40/loose.dtd" (Transitional DTD)
    "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
    "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Latin-1 entities)
    "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Symbol entities)
    "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Special entities)

-->

<!-- モバイル文書用の機能スイッチ -->

<!ENTITY % HTML.Strict "IGNORE">
<![ %HTML.Strict; [
    <!ENTITY % HTML.Mobile "IGNORE">
]]>
<!ENTITY % HTML.Mobile "INCLUDE">

<![ %HTML.Mobile; [
<!-- Preparation パラメータ実体が INCLUDE に設定されれば、ISO-HTMLの文書準
     備処理のように、厳格な見出し順が強制される。-->
<!ENTITY % Preparation "IGNORE">

<!-- この定義は、DTDにとって内部的である逆実体 NoPreparation を生成する。 -->
<![ %Preparation; [
<!ENTITY % NoPreparation "IGNORE"    -- Inverse of Preparation = INCLUDE -->
]]>
<!ENTITY % NoPreparation "INCLUDE"   -- Inverse of Preparation = IGNORE -->
]]>

<!-- ISO-HTMLでは、水平タブキャラクタは廃止予定(deprecated)である。-->
<![ %HTML.Mobile; [
<!-- タブキャラクタ用の SHORTREF 割り付け -->
<!-- タブキャラクタの使用は推奨されない。もっとも、それを利用する制作者に
     よる適合的な文書の準備を楽にするため、タブキャラクタは容認され、単一
     のスペースに割り付けられる。-->
<!ENTITY   nontab  " " >
<!SHORTREF tabmap  " " nontab >
<!USEMAP   tabmap  HTML >
]]>

<!--================== Imported Names ====================================-->

<!ENTITY % ContentType "CDATA"
    -- メディア型。[RFC2045] による。
    -->

<!ENTITY % ContentTypes "CDATA"
    -- コンマで切り分けられたメディア型のリスト。[RFC2045] による。
    -->

<!ENTITY % Charset "CDATA"
    -- キャラクタエンコーディング。[RFC2045] による。
    -->

<!ENTITY % Charsets "CDATA"
    -- コンマで切り分けられたキャラクタエンコーディングのリスト。[RFC2045]
     による。
    -->

<!ENTITY % LanguageCode "NAME"
    -- 言語コード。[RFC1766] による。
    -->

<!ENTITY % Character "CDATA"
    -- [ISO10646] からの単一キャラクタ
    -->

<!ENTITY % LinkTypes "CDATA"
    -- コンマで切り分けられたリンク型のリスト
    -->

<!ENTITY % MediaDesc "CDATA"
    -- 単一のメディア記述子、またはコンマで切り分けられたリスト。
    -->

<!ENTITY % URI "CDATA"
    -- URI(統一リソース識別子)。[RFC2396]を見ること。
    -->

<!-- Added to incorporate an erratum for HTML 4.0; taken from [XHTML] -->
<!ENTITY % UriList "CDATA"
    -- スペースで区切られたURIのリスト
    -->

<![ %HTML.Strict; [
<!ENTITY % Datetime "CDATA" -- 日付および時刻情報。ISO日付フォーマット -->

<!ENTITY % Script "CDATA" -- スクリプトの表記 -->
]]>

<!ENTITY % StyleSheet "CDATA" -- スタイルシートデータ -->

<!ENTITY % Text "CDATA">

<!-- パラメータ実体 -->

<![ %HTML.Strict; [
<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT"
    -- 繰り返し可能な head の要素 -->
]]>

<!-- ISO-HTMLでは、OBJECT は HEAD の中では認められない。-->
<!ENTITY % head.misc "STYLE|META|LINK" -- 繰り返し可能なHEADの要素 -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">


<!--================ キャラクタ記憶実体 ==================================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "http://www.w3.org/TR/REC-html40/HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "http://www.w3.org/TR/REC-html40/HTMLspecial.ent">
%HTMLspecial;

<!--=================== 汎用的な属性 =====================================-->

<![ %HTML.Strict; [
<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- 文書規模で一意的なID --
  class       CDATA          #IMPLIED  -- スペースで区切られたクラスのリスト --
  style       %StyleSheet;   #IMPLIED  -- 結びつけられたスタイル情報 --
  title       %Text;         #IMPLIED  -- アドバイス的な表題/敷衍 --"
  >
]]>

<!-- style 属性はISO-HTMLからは排除される。-->
<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- 文書規模で一意的なID --
  class       CDATA          #IMPLIED  -- スペースで区切られたクラスのリスト --
  title       %Text;         #IMPLIED  -- アドバイス的な表題/敷衍 --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- 言語コード --
  dir         (ltr|rtl)      #IMPLIED  -- 弱い/中立なテキストの方向 --"
  >

<![ %HTML.Strict; [
<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- ポインタボタンがクリックされた --
  ondblclick  %Script;       #IMPLIED  -- ポインタボタンがダブルクリックされた --
  onmousedown %Script;       #IMPLIED  -- ポインタボタンが押し下げられた --
  onmouseup   %Script;       #IMPLIED  -- ポインタボタンが離された --
  onmouseover %Script;       #IMPLIED  -- ポインタがその上へ動かされた --
  onmousemove %Script;       #IMPLIED  -- ポインタがその中へ動かされた --
  onmouseout  %Script;       #IMPLIED  -- ポインタがその外へ動かされた --
  onkeypress  %Script;       #IMPLIED  -- キーが押されて離された --
  onkeydown   %Script;       #IMPLIED  -- キーが押し下げられた --
  onkeyup     %Script;       #IMPLIED  -- キーが離された --"
  >
]]>


<!-- 機能スイッチの逆転 -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- 以下の属性は、あり得る将来の利用のために予約される。-->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- 単一のまたは表的なデータソース --
  datafld     CDATA          #IMPLIED  -- プロパティまたは列の名前 --
  dataformatas (plaintext|html) plaintext -- テキストまたはHTML --"
  >
]]>

<![ %HTML.Strict; [
<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">
]]>

<!ENTITY % attrs "%coreattrs; %i18n;">

<!--=================== テキストマークアップ =============================-->

<![ %HTML.Strict; [
<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">
]]>

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<![ %HTML.Strict; [
<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
]]>

<!ENTITY % special
   "A | IMG | OBJECT | BR | MAP | Q | SPAN | BDO">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; covers inline or "text-level" elements -->
<![ %HTML.Strict; [
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
]]>
<!-- ISO-HTMLでは、フォーム制御は FORM 要素の中にしか出現できない。-->
<!ENTITY % inline "#PCDATA | %phrase; | %special;">

<![ %HTML.Strict; [
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT (%phrase;) - - (%inline;)+>
<!ATTLIST (%phrase;)
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT (SUB|SUP) - - (%inline;)*    -- 上付文字、下付文字 -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT SPAN - - (%inline;)*         -- 汎用の言語/スタイルコンテナ -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- あり得る将来の利用のために予約済み --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT SPAN - - (%inline;)+         -- 汎用の言語/スタイルコンテナ -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT BDO - - (%inline;)*          -- I18N 双方向筆記の上書き -->
]]>
<![ %HTML.Mobile; [
<!ELEMENT BDO - - (%inline;)+          -- I18N 双方向筆記の上書き -->
]]>
<!ATTLIST BDO
  -- %coreattrs;                          id, class, style, title --
  %coreattrs;                          -- id, class, title --
  lang        %LanguageCode; #IMPLIED  -- 言語コード --
  dir         (ltr|rtl)      #REQUIRED -- 筆記方向 --
  >


<!ELEMENT BR - O EMPTY                 -- 強制改行 -->
<!ATTLIST BR
  -- %coreattrs;                          id, class, style, title --
  %coreattrs;                          -- id, class, title --
  >

<!--================== HTML content models ===============================-->

<!--
    HTMLには基本的な内容モデルが2つある。

        %inline;     キャラクタレベルの要素およびテキスト文字列
        %block;      ブロック風の要素。例. パラグラフ、リスト。
-->

<![ %HTML.Strict; [
<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
]]>

<!-- %block; の内容はISO-HTMLに従って変更される。-->
<!-- HTML 4.0 Mobile では FIELDSET は %block; の一部ではない。-->
<!ENTITY % block
     "P | %list; | %preformatted; | DL | DIV |
      BLOCKQUOTE | FORM | HR">

<!ENTITY % flow "%block; | %inline;">

<!-- 以下の定義はISO-HTMLから取られたものである。-->
<![ %HTML.Mobile; [
<!-- フォームや選択、テーブルの中に出現してよい要素 -->
<!-- HTML 4.0 Mobile では、FIELDSET はフォームの中でのみ認められる。-->
<!ENTITY % form.content    "(%block; | %inline; | %formctrl; |
                            FIELDSET | ADDRESS)+" >
<!ENTITY % section.content "(%block; | %inline; | ADDRESS)+" >
]]>

<!--=================== 文書の本体 =======================================-->

<![ %HTML.Strict; [
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- 文書の本体 --
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- 文書が読み込まれた --
  onunload        %Script;   #IMPLIED  -- 文書が除去された --
  >
]]>

<!-- ISO-HTMLでは、BODY 要素の開始タグを省略できない。-->
<![ %HTML.Mobile; [
<!-- 以下のマークされたセクションは、もっぱら準備のためのものである。-->
<![ %Preparation; [
<!ELEMENT BODY - O ((%block;)*,(H1,DIV1)*) >
]]>
<![ %NoPreparation; [
<!ELEMENT BODY - O (%block;|%heading;)+  -- 文書の本体 -->
]]>
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT ADDRESS - - (%inline;)* -- 著者に関する情報 -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<!-- ISO-HTMLでは、ADDRESS 要素の内容モデルが変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT ADDRESS - - (%inline;)+ -(IMG|MAP) -- 著者に関する情報 -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT DIV - - (%flow;)*            -- 汎用の言語/スタイルコンテナ -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>

<!-- Content model of DIV element is changed ISO-HTMLでは -->
<![ %HTML.Mobile; [
<!ELEMENT DIV - - %section.content;    -- 汎用の言語/スタイルコンテナ -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--================== アンカー要素 ======================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- コンマで区切られた長さのリスト -->

<![ %HTML.Strict; [
<!ELEMENT A - - (%inline;)* -(A)       -- アンカー -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- リンク先リソースのキャラクタエンコーディング --
  type        %ContentType;  #IMPLIED  -- アドバイス的な内容型 --
  name        CDATA          #IMPLIED  -- 指名されるリンク端 --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  hreflang    %LanguageCode; #IMPLIED  -- 言語コード --
  rel         %LinkTypes;    #IMPLIED  -- 前方リンク型 --
  rev         %LinkTypes;    #IMPLIED  -- 逆リンク型 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  shape       %Shape;        rect      -- クライアント側イメージマップで利用 --
  coords      %Coords;       #IMPLIED  -- クライアント側イメージマップで利用 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT A - - (%inline;)* -(A)       -- アンカー -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n --
  charset     %Charset;      #IMPLIED  -- リンク先リソースのキャラクタエンコーディング --
  type        %ContentType;  #IMPLIED  -- アドバイス的な内容型 --
  name        CDATA          #IMPLIED  -- 指名されるリンク端 --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  hreflang    %LanguageCode; #IMPLIED  -- 言語コード --
  rel         %LinkTypes;    #IMPLIED  -- 前方リンク型 --
  rev         %LinkTypes;    #IMPLIED  -- 逆リンク型 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  >
]]>

<!--================== クライアント側イメージマップ ======================-->

<!-- これらは同じ文書の中に置いたり、まだ広くサポートされてはいないが別の
     文書の中にグループ化することができる。-->

<![ %HTML.Strict; [
<!ELEMENT MAP - - ((%block;)+ | AREA+) -- クライアント側イメージマップ -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- usemap による参照用 --
  >
]]>
<!-- ISO-HTMLでは、MAP 要素は AREA 要素だけしか組み込めない。-->
<![ %HTML.Mobile; [
<!ELEMENT MAP - - (AREA)+ -- クライアント側イメージマップ -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n --
  name        CDATA          #REQUIRED -- usemap による参照用 --
  >
]]>

<!ELEMENT AREA - O EMPTY               -- クライアント側イメージマップ領域 -->
<![ %HTML.Strict; [
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- 座標の解釈を制御する --
  coords      %Coords;       #IMPLIED  -- コンマで区切られた長さのリスト --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  nohref      (nohref)       #IMPLIED  -- この領域にはアクションがない --
  alt         %Text;         #REQUIRED -- 短い解説 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n --
  shape       %Shape;        rect      -- 座標の解釈を制御する --
  coords      %Coords;       #IMPLIED  -- コンマで区切られた長さのリスト --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  nohref      (nohref)       #IMPLIED  -- この領域にはアクションがない --
  alt         %Text;         #REQUIRED -- 短い解説 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<!--================== LINK 要素 =========================================-->

<!--
  関連性値は主に次のように使うことができる。

   a) 文書ヘッダの LINK 要素とともに使うときには、
      文書特定のツールバー/メニューを表すために。
      例. start, contents, previous, next, index, end, help.
   b) 別ファイルのスタイルシートにリンクするため。(rel=stylesheet)
   c) スクリプトへのリンクを作成するため。(rel=script)
   d) HTMLノードの集合体が印刷された文書でどうレ
      ンダリングされるかを制御するたるスタイルシ
      ートによって。
   e) この文書の印刷可能バージョンへのリンクを作
      成するため。例. PostscriptバージョンやRDF
      バージョン。(rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- メディア非依存のリンク -->
<![ %HTML.Strict; [
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- リンク先リソースのキャラクタエンコーディング --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  hreflang    %LanguageCode; #IMPLIED  -- 言語コード --
  type        %ContentType;  #IMPLIED  -- アドバイス的な内容型 --
  rel         %LinkTypes;    #IMPLIED  -- 前方リンク型 --
  rev         %LinkTypes;    #IMPLIED  -- 逆リンク型 --
  media       %MediaDesc;    #IMPLIED  -- これらのメディア上でのレンダリング用 --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n --
  charset     %Charset;      #IMPLIED  -- リンク先リソースのキャラクタエンコーディング --
  href        %URI;          #IMPLIED  -- リンク先リソースのURI --
  hreflang    %LanguageCode; #IMPLIED  -- 言語コード --
  type        %ContentType;  #IMPLIED  -- アドバイス的な内容型 --
  rel         %LinkTypes;    #IMPLIED  -- 前方リンク型 --
  rev         %LinkTypes;    #IMPLIED  -- 逆リンク型 --
  media       %MediaDesc;    #IMPLIED  -- これらのメディア上でのレンダリング用 --
  >
]]>

<!--=================== 画像 =============================================-->

<!-- Strict DTD で cellpadding/cellspacing 用に定義された長さ -->
<![ %HTML.Strict; [
<!ENTITY % Length "CDATA" -- ピクセルを表す nn または百分率長さを表す nn% -->
]]>
<!ENTITY % MultiLength "CDATA" -- ピクセル、百分率、相対指定長 -->

<![ %HTML.Strict; [
<!ENTITY % MultiLengths "CDATA" -- コンマで区切られた MultiLength のリスト-->

<!ENTITY % Pixels "CDATA" -- 長さをピクセル単位で表現する整数 -->
]]>

<!-- テキスト専用ユーザエージェントでの問題を避け、また非視覚的なユーザ
   エージェントのユーザに対して画像コンテンツが理解でき操作可能なものと
   するため、ALT に説明文をつけ、またサーバ側イメージマップをさける必要
   がある。-->

<!ELEMENT IMG - O EMPTY                -- 埋め込み画像 -->
<![ %HTML.Strict; [
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- 埋め込むべき画像のURI --
  alt         %Text;         #REQUIRED -- 短い解説 --
  longdesc    %URI;          #IMPLIED  -- 説明用長文へのリンク (alt を補完する) --
  height      %Length;       #IMPLIED  -- height を無効にする --
  width       %Length;       #IMPLIED  -- width を無効にする --
  usemap      %URI;          #IMPLIED  -- クライアント側イメージマップを使う --
  ismap       (ismap)        #IMPLIED  -- サーバ側イメージマップを使う --
  >
]]>
<!-- ISO-HTMLでは、height 属性や width 属性はサポートされない。-->
<![ %HTML.Mobile; [
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n --
  src         %URI;          #REQUIRED -- 埋め込むべき画像のURI --
  alt         %Text;         #REQUIRED -- 短い解説 --
  longdesc    %URI;          #IMPLIED  -- 説明用長文へのリンク (alt を補完する) --
  usemap      %URI;          #IMPLIED  -- クライアント側イメージマップを使う --
  >
]]>

<!-- USEMAP は MAP 要素を指し示すものであり、この文書の中にあってもよく、
  外部文書にあってもよい。もっとも後者は広くサポートされるものではない。-->

<!--==================== OBJECT ======================================-->
<!--
  OBJECT は、オブジェクトをHTMLページの一部として埋め込むために使われる。
  PARAM 要素は、他の内容よりも前にあるべきである。
  SGML混合内容モデル技術は、公式にはこの規定を排除する...
-->

<![ %HTML.Strict; [
<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- 汎用埋め込みオブジェクト -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- 宣言するがフラグをインスタンス化しない --
  classid     %URI;          #IMPLIED  -- 実装を識別する --
  codebase    %URI;          #IMPLIED  -- classid, data, アーカイブのベースURI --
  data        %URI;          #IMPLIED  -- オブジェクトのデータへの参照 --
  type        %ContentType;  #IMPLIED  -- データの内容型 --
  codetype    %ContentType;  #IMPLIED  -- コードの内容型 --
  archive     %UriList;      #IMPLIED  -- スペースで区切られたアーカイブリスト --
  standby     %Text;         #IMPLIED  -- 読み込み中に表示するべきメッセージ --
  height      %Length;       #IMPLIED  -- 高さを無効にする --
  width       %Length;       #IMPLIED  -- 幅を無効にする --
  usemap      %URI;          #IMPLIED  -- クライアント側イメージマップを使う --
  name        CDATA          #IMPLIED  -- フォームの一部として送信する --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT OBJECT - - (PARAM | %section.content;)*
 -- 汎用埋め込みオブジェクト -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n --
  declare     (declare)      #IMPLIED  -- 宣言するがフラグをインスタンス化しない --
  classid     %URI;          #IMPLIED  -- 実装を識別する --
  codebase    %URI;          #IMPLIED  -- classid, data, アーカイブのベースURI --
  data        %URI;          #IMPLIED  -- オブジェクトのデータへの参照 --
  type        %ContentType;  #IMPLIED  -- データの内容型 --
  codetype    %ContentType;  #IMPLIED  -- コードの内容型 --
  standby     %Text;         #IMPLIED  -- 読み込み中に表示するべきメッセージ --
  usemap      %URI;          #IMPLIED  -- クライアント側イメージマップを使う --
  name        CDATA          #IMPLIED  -- フォームの一部として送信する --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  >
]]>

<!ELEMENT PARAM - O EMPTY              -- 名前つきのプロパティ値 -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- 文書規模で一意的なID --
  name        CDATA          #REQUIRED -- プロパティ名 --
  value       CDATA          #IMPLIED  -- プロパティ値 --
  valuetype   (DATA|REF|OBJECT) DATA   -- 値の解釈方法 --
  type        %ContentType;  #IMPLIED  -- valuetype=ref のときの値の内容型 --
  >

<!--=================== 水平罫 ===========================================-->
<!-- lang 属性および dir 属性は、HTML 4.0 のエラッタを統合するために追加さ
        れるものである。-->

<!ELEMENT HR - O EMPTY -- 水平罫 -->
<![ %HTML.Strict; [
<!ATTLIST HR
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST HR
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--=================== パラグラフ =======================================-->

<![ %HTML.Strict; [
<!ELEMENT P - O (%inline;)*            -- パラグラフ --
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT P - O (%inline;)+            -- パラグラフ -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--=================== 見出し ===========================================-->

<!--
  見出しには H1 (重要性がもっとも高い)から H6 (重要性がもっとも低い)までの
  6レベルがある。
-->

<!--
  ISO-HTML は、とても厳格な見出し順を要求する。もし文書をこの要求に適合して
  いることを保証したいのであれば、Preparation パラメータ実体を INCLUDE に設
  定すること。DIV1 から DIV6 までの「疑似」要素を導入することにより、その厳
  格な見出し順を強制できるようにする。それらの「疑似」要素は、合法な HTML
  4.0 Strict 文書には出現すべからざるものである。

  以下のコメントは、ISO-HTML の規範的要求である。

  H1 要素には、間に挟まる H2 要素なしには、H3, H4, H5, H6 要素が続いてはな
  らない。

  H2 要素には、間に挟まる H3 要素なしには、H4, H5, H6 要素が続いてはならな
  い。

  H3 要素には、間に挟まる H4 要素なしには、H5, H6 要素が続いてはならない。

  H4 要素には、間に挟まる H5 要素なしには、H6 要素が続いてはならない。

  H2 要素には、H1 要素が先行しなければならない。

  H3 要素には、H2 要素が先行しなければならない。

  H4 要素には、H3 要素が先行しなければならない。

  H5 要素には、H4 要素が先行しなければならない。

  H6 要素には、H5 要素が先行しなければならない。
-->

<![ %HTML.Strict; [
<!ELEMENT (%heading;)  - - (%inline;)* -- 見出し -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT (%heading;)  - - (%inline;)+ -- 見出し -->
<!-- 以下のマークつきセクションは、もっぱら準備のためのものである。-->
<![ %Preparation; [
<!ELEMENT DIV1 O O ((%block;)*, (H2,DIV2)* ) >
<!ELEMENT DIV2 O O ((%block;)*, (H3,DIV3)* ) >
<!ELEMENT DIV3 O O ((%block;)*, (H4,DIV4)* ) >
<!ELEMENT DIV4 O O ((%block;)*, (H5,DIV5)* ) >
<!ELEMENT DIV5 O O ((%block;)*, (H6,DIV6)* ) >
<!ELEMENT DIV6 O O ((%block;)*) >
]]>
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--=================== 整形済みテキスト =================================-->

<!-- 画像やフォントサイズ変更のマークアップを排除する。-->
<![ %HTML.Strict; [
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">
]]>

<!-- ISO-HTMLでは、MAP は PRE 要素の中に出現してはならない。-->
<!ENTITY % pre.exclusion "IMG|OBJECT|MAP">

<![ %HTML.Strict; [
<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- 整形済みテキスト -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT PRE - - (%inline;)+ -(%pre.exclusion;) -- 整形済みテキスト -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--===================== インライン引用 =================================-->

<![ %HTML.Strict; [
<!ELEMENT Q - - (%inline;)*            -- 短いインライン引用 -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- ソース文書またはメッセージのURI --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT Q - - (%inline;)+            -- 短いインライン引用 -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n --
  cite        %URI;          #IMPLIED  -- ソース文書またはメッセージのURI --
  >
]]>

<!--=================== ブロック風引用 ===================================-->

<![ %HTML.Strict; [
<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- 長い引用 -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- ソース文書またはメッセージのURI --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT BLOCKQUOTE - - (%block;)+ -- 長い引用 -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n --
  cite        %URI;          #IMPLIED  -- ソース文書またはメッセージのURI --
  >
]]>

<!--=================== 挿入/削除されたテキスト ==========================-->


<!-- INS/DEL は、BODY 上の組み込むにより処理される。-->
<!-- INS/DEL は HTML 4.0 Mobile ではサポートされない。-->
<![ %HTML.Strict; [
<!ELEMENT (INS|DEL) - - (%flow;)*      -- 挿入されたテキスト、
                                             削除されたテキスト -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- 変更理由に関する情報 --
  datetime    %Datetime;     #IMPLIED  -- 変更の日時 --
  >
]]>

<!--=================== リスト ===========================================-->

<!-- 定義リスト - 用語には DT, その定義には DD を使う。-->

<!ELEMENT DL - - (DT|DD)+              -- 定義リスト -->
<!ATTLIST DL
  -- %attrs;                              %coreattrs, %i18n, %events --
  %attrs;                              -- %coreattrs, %i18n --
  >

<![ %HTML.Strict; [
<!ELEMENT DT - O (%inline;)*           -- 定義する用語 -->
<!ELEMENT DD - O (%flow;)*             -- 定義の解説 -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT DT - O (%inline;)+           -- 定義する用語 -->
<!ELEMENT DD - O %section.content; -(ADDRESS) -- 定義の解説 -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>


<!ELEMENT OL - - (LI)+                 -- 順序つきリスト -->
<!ATTLIST OL
  -- %attrs;                              %coreattrs, %i18n, %events --
  %attrs;                              -- %coreattrs, %i18n --
  >

<!-- 順序なしリスト(UL)のマーカーのスタイル -->
<!ELEMENT UL - - (LI)+                 -- 順序なしリスト -->
<!ATTLIST UL
  -- %attrs;                              %coreattrs, %i18n, %events --
  %attrs;                              -- %coreattrs, %i18n --
  >


<![ %HTML.Strict; [
<!ELEMENT LI - O (%flow;)*             -- リスト項目 -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<![ %HTML.Mobile; [
<!ELEMENT LI - O (%flow;)+             -- リスト項目 -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<!--================ フォーム ============================================-->
<![ %HTML.Strict; [
<!-- accept は、HTML 4.0 のエラッタを統合するために追加される。-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- インタラクティブなフォーム -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- サーバ側フォームハンドラ --
  method      (GET|POST)     GET       -- フォーム送信のために使われるHTTPメソッド--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- フォームは送信された --
  onreset     %Script;       #IMPLIED  -- フォームはリセットされた --
  accept      %ContentTypes; #IMPLIED  -- ファイルアップロード用のMIME型のリスト --
  accept-charset %Charsets;  #IMPLIED  -- サポートされるキャラクタセットのリスト --
  >
]]>

<!-- FORM 要素の内容モデルはISO-HTMLでは変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT FORM - - %form.content; -(FORM) -- インタラクティブなフォーム -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n --
  action      %URI;          #REQUIRED -- サーバ側フォームハンドラ --
  method      (GET|POST)     GET       -- フォーム送信のために使われるHTTPメソッド--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept-charset %Charsets;  #IMPLIED  -- サポートされるキャラクタセットのリスト --
  >
]]>

<!-- ラベルは各自2つ以上のフィールドを包含してはならない。-->
<![ %HTML.Strict; [
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- フォームフィールドのラベルテキスト -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- フィールドID値を照合する --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  >
]]>

<!-- LABEL 要素の内容モデルはISO-HTMLでは変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT LABEL - - (%inline;|%formctrl;)+ -(LABEL) -- フォームフィールドのラベルテキスト -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n --
  for         IDREF          #IMPLIED  -- フィールドID値を照合する --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<![ %HTML.Strict; [
<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >
]]>

<!-- IMAGE および BUTTON はISO-HTMLから排除される。-->
<!-- HTML 4.0 Mobile では、フォームベースのファイルアップロードはサポート
     されない。-->
<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    HIDDEN)"
   >

<!-- submit および reset をのぞいたすべてについて属性名が必須である。-->
<!ELEMENT INPUT - O EMPTY              -- フォーム制御 -->
<![ %HTML.Strict; [
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- 必要な装置の種類 --
  name        CDATA          #IMPLIED  -- フォームの一部として送信する --
  value       CDATA          #IMPLIED  -- radio および checkboxed には必須 --
  checked     (checked)      #IMPLIED  -- ラジオボタンおよびチェックボックスについて --
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  readonly    (readonly)     #IMPLIED  -- テキストおよびパスワードについて --
  size        CDATA          #IMPLIED  -- フィールド型ごとに特定 --
  maxlength   NUMBER         #IMPLIED  -- テキストフィールドの最大文字数 --
  src         %URI;          #IMPLIED  -- 画像つきフィールドについて --
  alt         CDATA          #IMPLIED  -- 短い解説 --
  usemap      %URI;          #IMPLIED  -- クライアント側イメージマップを使う --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  onselect    %Script;       #IMPLIED  -- テキストが選択された --
  onchange    %Script;       #IMPLIED  -- 要素値が変更された --
  accept      %ContentTypes; #IMPLIED  -- ファイルアップロード用のMIME型のリスト --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n --
  type        %InputType;    TEXT      -- 必要な装置の種類 --
  name        CDATA          #IMPLIED  -- フォームの一部として送信する --
  value       CDATA          #IMPLIED  -- radio および checkboxed には必須 --
  checked     (checked)      #IMPLIED  -- ラジオボタンおよびチェックボックス用--
  size        CDATA          #IMPLIED  -- フィールド型ごとに特定 --
  maxlength   NUMBER         #IMPLIED  -- テキストフィールドの最大文字数 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- オプションセレクタ -->
<![ %HTML.Strict; [
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- フィールド名 --
  size        NUMBER         #IMPLIED  -- 見える列の数 --
  multiple    (multiple)     #IMPLIED  -- デフォルトは択一式選択 --
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  onchange    %Script;       #IMPLIED  -- 要素値が変更された --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n --
  name        CDATA          #IMPLIED  -- フィールド名 --
  size        NUMBER         #IMPLIED  -- 見える列の数 --
  multiple    (multiple)     #IMPLIED  -- デフォルトは択一式選択 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  >
]]>

<!ELEMENT OPTGROUP - - (OPTION)+ -- オプショングループ -->
<![ %HTML.Strict; [
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  label       %Text;         #REQUIRED -- 階層構造メニューで利用する --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n --
  label       %Text;         #REQUIRED -- 階層構造メニューで利用する --
  >
]]>

<!ELEMENT OPTION - O (#PCDATA)         -- 選択できる選択肢 -->
<![ %HTML.Strict; [
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  label       %Text;         #IMPLIED  -- 階層構造メニューで利用する --
  value       CDATA          #IMPLIED  -- デフォルトは要素の内容 --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n --
  selected    (selected)     #IMPLIED
  label       %Text;         #IMPLIED  -- 階層構造メニューで利用する --
  value       CDATA          #IMPLIED  -- デフォルトは要素の内容 --
  >
]]>

<!ELEMENT TEXTAREA - - (#PCDATA)       -- 複数行テキストフィールド -->
<![ %HTML.Strict; [
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  onselect    %Script;       #IMPLIED  -- テキストが選択された --
  onchange    %Script;       #IMPLIED  -- 要素値が変更された --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>
<![ %HTML.Mobile; [
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<!--
  #PCDATA は混在内容の問題を解決するべきものである。
  仕様書によりそこでは空白は1個だけしか認められない。
 -->
<![ %HTML.Strict; [
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- フォーム制御グループ -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<!-- FIELDSET 要素の内容モデルはISO-HTMLでは変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,%form.content;) -(FIELDSET)
                                       -- フォーム制御グループ -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT LEGEND - - (%inline;)*       -- フィールドセットの見出し -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<!-- LEGENT 要素の内容モデルはIS0-HTMLでは変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT LEGEND - - (#PCDATA)         -- フィールドセットの見出し -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<![ %HTML.Strict; [
<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- 押しボタン -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- 送信時にサーバに送られる --
  type        (button|submit|reset) submit -- フォームボタンとして利用する --
  disabled    (disabled)     #IMPLIED  -- この文脈で利用不可 --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  onfocus     %Script;       #IMPLIED  -- 要素がフォーカスを得た --
  onblur      %Script;       #IMPLIED  -- 要素がフォーカスを失った --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  >
]]>

<!-- BUTTON 要素の内容モデルはISO-HTMLでは変更される。-->
<![ %HTML.Mobile; [
<!ELEMENT BUTTON - -
     (%inline;)+ -(A|%formctrl;|FORM|FIELDSET)
     -- 押しボタン -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- 送信時にサーバに送られる --
  type        (submit|reset) submit    -- フォームボタンとして利用する --
  tabindex    NUMBER         #IMPLIED  -- タブジャンプの順位 --
  accesskey   %Character;    #IMPLIED  -- アクセシビリティキーのキャラクタ --
  >
]]>

<!--======================= テーブル =====================================-->
<!-- テーブルは HTML 4.0 Mobile ではサポートされない。-->

<!-- IETF HTML テーブル規格は [RFC1942] を見ること。-->

<!--
 BORDER 属性は、テーブルの周囲の枠の太さを設定する。デフォルトの単位は
 スクリーンのピクセルである。

 FRAME 属性は、テーブルの周囲の枠のうちどの部分がレンダリングされるべき
 かを規定する。VALIGN 属性との名前の衝突を避けるため、値は CALS と同じ
 ものではない。

 "border" という値は、frame=border と border=implied とを生み出す <TABLE
 BORDER> との後方互換性のために組み込まれる。<TABLE BORDER=1> について
 は、border=1 と frame=implied とを得る。この場合には、普及しているブラ
 ウザとの後方互換性のため、これを frame=border として扱うのが適切である。
-->
<![ %HTML.Strict; [
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 RULES 属性は、セル間でどのような罫線を秒がするべきかを定義する。

 RULES が存在しない場合に想定されるのは
      BORDER がないか BORDER=0 ならば "none"、そうでなければ "all" である。
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- 文書に対する相対指定におけるテーブルの水平方向の配置 -->
<!ENTITY % TAlign "(left|center|right)">

<!-- セル内容に対する相対指定におけるテーブルの水平方向の配置 -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- 整列キャラクタ。例. char=':' --
   charoff    %Length;       #IMPLIED  -- 整列キャラクタのオフセット --"
  >

<!-- セル内容についての垂直方向の配置属性 -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- テーブルの表題 -->
<!ELEMENT THEAD    - O (TR)+           -- テーブルの見出し -->
<!ELEMENT TFOOT    - O (TR)+           -- テーブルのフッタ -->
<!ELEMENT TBODY    O O (TR)+           -- テーブルの本体 -->
<!ELEMENT COLGROUP - O (col)*          -- テーブルの列グループ -->
<!ELEMENT COL      - O EMPTY           -- テーブルの列 -->
<!ELEMENT TR       - O (TH|TD)+        -- テーブルの行 -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- テーブルの見出しセル、
                                             テーブルのデータセル -->

<!ATTLIST TABLE                        -- テーブル要素 --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- 音声出力用の目的/構造 --
  width       %Length;       #IMPLIED  -- テーブル幅 --
  border      %Pixels;       #IMPLIED  -- テーブルの周囲の枠の幅を制御する --
  frame       %TFrame;       #IMPLIED  -- 枠のうちレンダリングすべき部分 --
  rules       %TRules;       #IMPLIED  -- 行および列の間の罫線引き --
  cellspacing %Length;       #IMPLIED  -- セル間の間隔取り --
  cellpadding %Length;       #IMPLIED  -- セル内部の間隔取り --
  %reserved;                           -- あり得る将来的な利用のために予約済み --
  datapagesize CDATA         #IMPLIED  -- あり得る将来的な利用のために予約済み --
  >

<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--
COLGROUP は、COL 要素のセットをグループ化する。意味的に関連する数個の列を
一つにグループ化できるようにする。
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- グループ内の列のデフォルト数 --
  width       %MultiLength;  #IMPLIED  -- 取り込まれた COL のデフォルト幅 --
  %cellhalign;                         -- セル内での水平方向の配置 --
  %cellvalign;                         -- セル内での垂直方向の配置 --
  >

<!--
 COL 要素は、1つ以上の列にあるセルについて配置プロパティを定義する。

 WIDTH 属性は、その列の幅を規定する。たとえば、

     width=64        幅をスクリーンピクセル単位で
     width=0.5*      0.5 という相対幅

 SPAN 属性は、1個の COL 要素を2つ以上の列に適用する。
-->
<!ATTLIST COL                          -- 列のグループおよびプロパティ --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- COL 属性が N 列に影響する --
  width       %MultiLength;  #IMPLIED  -- 列幅の規定 --
  %cellhalign;                         -- セル内での水平方向の配置 --
  %cellvalign;                         -- セル内での垂直方向の配置 --
  >

<!--
    THEAD は、ページ境界をまたぐテーブルを分割するとき、または静的ヘッダに
    ついては TBODY セクションがスクローリングパネルにレンダリングされると
    き、ヘッダを複製するために使う。

    TFOOT は、ページ境界をまたぐテーブルを分割するとき、または静的フッタに
    ついては TBODY セクションがスクローリングパネルにレンダリングされると
    き、フッタを複製するために使う。

    テーブル行のグループの間に罫線が必要であるときには、複数の TBODY セク
    ションを使う。
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- テーブルセクション --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- セル内での水平方向の配置 --
  %cellvalign;                         -- セル内での垂直方向の配置 --
  >

<!ATTLIST TR                           -- テーブルの行 --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- セル内での水平方向の配置 --
  %cellvalign;                         -- セル内での垂直方向の配置 --
  >

<!-- Scope は、一般のテーブルの axes 属性よりも単純なものである。-->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- 見出しには TH を使い、データには TD を使うが、その両方として働くセル
  には TD を使う。-->
<!ATTLIST (TH|TD)                      -- 見出しセルまたはデータセル --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- 見出しセルの省略表記 --
  axis        CDATA          #IMPLIED  -- 関連見出しのグループを命名する --
  headers     IDREFS         #IMPLIED  -- 見出しセルのIDのリスト --
  scope       %Scope;        #IMPLIED  -- 見出しセルによってカバーされる範囲 --
  rowspan     NUMBER         1         -- セルがまたがる行の数 --
  colspan     NUMBER         1         -- セルがまたがる列の数 --
  %cellhalign;                         -- セル内での水平方向の配置 --
  %cellvalign;                         -- セル内での垂直方向の配置 --
  >
]]>

<!--================ 文書のヘッダ ========================================-->
<!-- %head.misc; は、先に "STYLE|META|LINK" として定義されている。-->
<![ %HTML.Strict; [
<!ENTITY % head.content "TITLE & BASE?">
]]>
<!ENTITY % head.content "TITLE">

<![ %HTML.Strict; [
<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- 文書のヘッダ -->
]]>
<!-- ISO-HTMLでは、HEAD 要素の開始タグは省略できない。-->
<![ %HTML.Mobile; [
<!ELEMENT HEAD - O (%head.content;) +(%head.misc;) -- 文書のヘッダ -->
]]>
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- メタ情報の指名先ディレクトリ --
  >

<!-- TITLE 要素はテキストのフローの一部とみなされない。これは、たとえばペ
       ージのヘッダやウインドウのタイトルとして表示されるべきである。文書
       ごとにちょうど1個の表題が必須である。
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- 文書の表題 -->
<!ATTLIST TITLE %i18n;>

<!-- BASE 要素はISO-HTMLからは除外される。-->
<![ %HTML.Strict; [
<!ELEMENT BASE - O EMPTY               -- 文書のベースURI -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- ベースURIとして働くURI --
  >
]]>

<!ELEMENT META - O EMPTY               -- 汎用メタ情報 -->
<!ATTLIST META
  %i18n;                               -- lang, dir. 内容とともに用いる。--
  http-equiv  NAME           #IMPLIED  -- HTTP応答ヘッダ名 --
  name        NAME           #IMPLIED  -- メタ情報名 --
  content     CDATA          #REQUIRED -- 結びつけられた情報 --
  scheme      CDATA          #IMPLIED  -- 内容の選択形式 --
  >

<!-- HTML 4.0 Mobile に適合するユーザエージェントは、これらの要素の内容を
     表示することを避けなければならない。それ以外には、これらの要素のサポート
     は要求されない。-->
<!ELEMENT STYLE - - %StyleSheet        -- スタイル情報 -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir. タイトルとともに使う。--
  type        %ContentType;  #REQUIRED -- スタイル言語の内容型 --
  media       %MediaDesc;    #IMPLIED  -- これらのメディアで使うよう設計されている --
  title       %Text;         #IMPLIED  -- アドバイス的な表題 --
  >

<!-- ISO-HTMLでは SCRIPT はサポートされない。-->
<![ %HTML.Strict; [
<!ELEMENT SCRIPT - - %Script;          -- スクリプトステートメント -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- リンク先リソースのキャラクタエンコーディング --
  type        %ContentType;  #REQUIRED -- スクリプト言語の内容型 --
  src         %URI;          #IMPLIED  -- 外部スクリプトのURI --
  defer       (defer)        #IMPLIED  -- ユーザエージェントによってスクリプトの実行が違ってもよい --
  event       CDATA          #IMPLIED  -- あり得る将来的な利用のために予約済み --
  for         %URI;          #IMPLIED  -- あり得る将来的な利用のために予約済み --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- 非スクリプトベースのレンダリングのための代用内容コンテナ -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
]]>

<!--================ 文書の構造 ==========================================-->
<!ENTITY % html.content "HEAD, BODY">

<![ %HTML.Strict; [
<!ELEMENT HTML O O (%html.content;)    -- 文書のルート要素 -->
]]>

<!-- ISO-HTMLでは HTML 要素の開始タグおよび終了タグは省略できない。-->
<![ %HTML.Mobile; [
<!ELEMENT HTML - - (%html.content;)    -- 文書のルート要素 -->
]]>
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >

どら猫本舗 (webmaster@doraneko.org)