標準情報(TR)    TR X 0037:2001


拡張可能なハイパテキストマーク付け言語 XHTML 1.0

The Extensible HyperText Markup Language (XHTML) 1.0



序文

この標準情報(TR)は, 2000年1月にWorld Wide Web Consortium(W3C)から改訂公表されたXHTML 1.0: The Extensible HyperText Markup Language勧告を翻訳し, 技術的内容を変更することなく作成した標準情報(TR)である。



0. 適用範囲

この規定は,XHTML 1.0, つまりXML 1.0アプリケーションとしてのHTML 4の再定式化, 及びHTML 4によって定義されたDTDに対応する三つのDTDを定義する。要素及びそれら要素の属性のセマンティクスは,HTML 4のW3C勧告で定義されている。これらのセマンティクスは,XHTMLを将来拡張できる基礎を提供する。わずかな一連のガイドラインに従うことによって,既存のHTML利用者エージェントとの互換性が得られる。

1. XHTMLの概要

XHTMLは,HTML 4[HTML]を再構築しサブセット化し拡張する,現在及び将来の文書型及びモジュールのファミリとする。XHTMLファミリ文書型は, XMLに基づき,最終的には,XMLに基づく利用者エージェントと共に動作する設計がなされている。このファミリ及びその発展については,将来的な方向性の節で,その詳細を示す。

XHTML 1.0(この規定)は,XHTMLファミリにおける最初の文書型とする。これは,HTML 4の三つの文書型をXML 1.0[XML]のアプリケーションとして再定式化したものとする。XHTML 1.0は,XMLに適合すると共に,簡単なガイドラインに従えば,HTML 4適合の利用者エージェントでも動作する内容のための言語として用いられることを意図している。内容をXHTML 1.0へ移行する開発者は,次の利点を実現することになる。

XHTMLファミリは,インタネットの進化における次の段階となる。いまXHTMLに移行することによって,内容の開発者は,内容の下位互換性及び将来の互換性に確信をもったまま, XMLの世界に参加でき,それに付随する利点のすべてをもつことができる。

1.1 HTML 4の概要

HTML 4 [HTML]は,国際規格ISO 8879に適合するSGML(Standard Generalized Markup Language,標準一般化マーク付け言語)アプリケーションであって,World Wide Webの標準的な出版言語と広範囲にみなされている。

SGMLは,マーク付け言語,特に電子文書の交換,文書管理及び文書出版で使用されるマーク付け言語を記述するための言語である。HTMLは,SGMLで定義された言語の例になっている。

SGMLは1980年中頃から普及し,非常に安定なものとなっている。この安定性の多くは,SGMLが機能の豊富さと柔軟性との両方をもつという事実から生じている。しかし,この柔軟性は, 犠牲を払って得られる。その犠牲は,World Wide Webを含む多様な環境でのSGMLの採用を妨げてきた複雑さのレベルである。

当初想定されたとおり,HTMLは,科学文書及びその他の技術文書の交換のための言語であって,文書の専門家ではない人の使用に適している。HTMLは,比較的簡単な文書を作成するのに適した,構造上のタグ及び意味上のタグの小さな集合を規定することによって,SGMLの複雑性の問題に対処した。文書構造を単純化に加えて,HTMLは,ハイパテキストのサポートを追加した。マルチメディア機能は,後に追加された。

非常に短い期間に, HTMLは広範囲に一般化し,急速にその当初の目的よりも大きく成長した。HTMLの始まり以来,(規格としての)HTMLの中での利用のための,及びHTMLを垂直的な高度に専門化された市場に適応させるための,新しい要素の急ごしらえが行われてきた。新しい要素が過剰になったことで,異なるプラットフォーム間での文書の互換性問題が生じてきた。

ソフトウェア及びプラットフォームの両方の異種性が急激に増加するため,これらのプラットフォームでの利用に関する'従来の'HTML 4の適切さがある程度制限されることは明らかである。

1.2 XMLの概要

XMLは,拡張可能なマーク付け言語(Extensible Markup Language)の短縮形であって,Extensible Markup Language [XML]の頭字語とする。

XMLは,SGMLの複雑さをほとんど伴うことなしに,SGMLの能力及び柔軟性を取り戻す手段として考えられた。SGMLの制限された形式ではあるが,XMLは,SGMLの能力及び機能の豊富さのほとんどを保存し,SGMLの共通利用機能のすべてを残している。

これらの有効な機能を残しながら,XMLは,適切なソフトウェアの作成及び設計を困難で高価なものにするSGMLのもっと複雑な機能の多くを取り除いている。

1.3 XHTMLの必要性

XHTML 1.0へ移行する利点は,これまでに示した。一般にXHTMLへ移行する利点の幾つかを次に示す。

2. 定義

2.1 語句

この規定では,次の語句を使用する。これらの語句は,ISO/IEC 9945-1:1990 [POSIX.1]における類似の定義に基づく方法で,[RFC2119]の定義を拡張している。

実装定義の(implementation-defined)
正しい文書構成のための値又は振る舞いに対応する要件を定義(及び文書化)することが実装にゆだねられている場合,値又は振る舞いは,実装定義とする。
してもよい(may)
実装に関しては, "してもよい"という語句は,この規定では要求されないが提供可能なオプション機能として解釈する。文書適合性に関しては, "してもよい"という語句は,オプション機能を使用してはならないことを意味する。"オプションの"という用語は,"してもよい"と同じ定義とする。
しなければならない(must)
この規定では,"しなければならない"という語句は,文脈に依存して,実装又は厳密適合XHTML文書に関する必す(須)要件として解釈する。原規定における"shall"という語は,原規定の"must",すなわち,この規定の"しなければならない"と同じ定義とする。
予約済み(reserved)
"予約済み"という語句は,値又は振る舞いが指定されていないが,それを,適合文書が使用することも,適合利用者エージェントがサポートすることも許されないこととする。
するのが望ましい(should)
実装に関しては, "するのが望ましい"という語句は,要件ではなく,実装上の推奨として解釈する。文書に関しては,"するのが望ましい"という語句は,推奨される文書用プログラミング作法及び厳密適合XHTML文書に対する要件として解釈する。
サポートされる(supported)
この規定のある機能実装は, オプションとする。機能実装がサポートされている場合,それは, この規定によって指定されるとおりに振る舞う。
指定されない(unspecified)
値又は振る舞いが指定されない場合,この規定は,ある機能実装を使用する文書に直面したときであっても,実装のその機能実装に関する移植性の要件を定義しない。その場合に,その機能実装を使用したときにどんな振る舞いも許容するのではなく, 固有の振る舞いを要求する文書は,厳密適合XHTML文書としない。

2.2 用語

属性(attribute)
属性は,DTDで宣言される要素に対するパラメタとする。属性の型及び値の範囲は,可能なデフォルト値を含めて,DTDの中で定義される。
DTD(Document Type Definition)
DTD,つまり文書型定義は,XMLのマーク付け宣言の集まりであって,全体として,そのDTDに適合する文書で使用できる文法に合った構造,要素及び属性を定義する。
文書(document)
文書は,データのストリームであって,それが参照する他のストリームと結合した後,関連するDTDで定義されるとおりに編成された要素の内部に含まれる情報を保持するように構造化される。さらに多くの情報を入手したい場合は,文書適合性を参照すること。
要素(element)
要素は,DTDで宣言される文書の構造化単位とする。要素の内容モデルはDTDで定義されるが,付加的なセマンティクスが要素の説明的記述で定義されてもよい。
機能実装(facility)
機能性には,要素属性,並びにそれらの要素及び属性と関連付けられるセマンティクスが含まれる。その機能性をサポートする実装を,必要な機能実装を提供するという。
実装(implementation)
実装は,機能実装の集まり及びこの規定をサポートするサービスを提供するシステムとする。さらに多くの情報を入手したい場合は,利用者エージェント適合性を参照すること。
構文解析(parsing)
構文解析は,文書を走査し,文書内に含まれる情報を,その情報が構造化される要素の文脈へとフィルタリングする行為とする。
レンダリング(rendering)
レンダリングは,文書の中にある情報を提示する行為とする。この提示は,環境に最適な形式で(例えば, 聴覚的に,視覚的に,印刷の上で)行われる。
利用者エージェント(user agent)
利用者エージェントは,XHTML文書を検索し処理する実装とする。さらに多くの情報を入手したい場合は,利用者エージェント適合性を参照すること。
妥当性検証(validation)
妥当性検証は,文書を関連するDTDに照らして検証し,構造,要素の使用及び属性の使用が,DTDにおける定義と矛盾しないことを確認する処理とする。
整形式の(well-formed)
文書が,XML 1.0勧告[XML]2.1で定義される規則に従って構造化されているとき, 文書が整形式であるとする。基本的には,この定義は,開始タグ及び終了タグによって区切られる要素が,互いに適切に入れ子になることを示す。

3. XHTML 1.0の定義

3.1 文書適合性

XHTMLのこの版は,XHTMLの名前空間からのタグ及び属性に制限されている厳密適合XHTML文書の定義を示す。XHTML文書内にRDFで表現されるメタデータを含むなどの,他の名前空間と共にXHTMLを使用する場合の情報については,3.1.2を参照すること。

3.1.1 厳密適合文書

厳密適合XHTML文書は,この規定で必す(須)として示される機能実装だけを要求する文書とする。その文書は,次の基準をすべて満たさなければならない。

    a) 文書は,附属書Aにある三つのDTDの一つに照らして妥当性が検証されなければならない。
    b) 文書のルート要素は,<html>でなければならない。
    c) 文書のルート要素は,xmlns属性を使用してXHTML名前空間[XMLNAMES]を指定しなければならない。XHTMLのための名前空間は,http://www.w3.org/1999/xhtmlと定義する。
    d) ルート要素に先行して,文書の中にDOCTYPE宣言が存在しなければならない。DOCTYPE宣言に含まれる公開識別子は,次のそれぞれの公式公開識別子を使用して,附属書Aにある三つのDTDの一つを参照しなければならない。局所システム規約を反映するために,システム識別子は変えてもよい。
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "DTD/xhtml1-strict.dtd">

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "DTD/xhtml1-transitional.dtd">

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "DTD/xhtml1-frameset.dtd">

最小のXHTML文書の例を次に示す。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p>
  </body>
</html>

この例には,XML宣言が含まれていることに注意する。ここに示したようなXML宣言が,すべてのXML文書に要求されるわけではない。XHTML文書の作成者には,作成する文書のすべてにXML宣言を使用することを強く勧める。この宣言は,文書の文字符号化がデフォルトのUTF-8又はUTF16以外である場合に, 必す(須)となる。

3.1.2 XHTMLと他の名前空間との併用

XHTML名前空間は,[XMLNAMES]に従って,他のXML名前空間と共に使用してもよい。ただし,それらの文書は,3.1.1で定義する厳密適合XHTML 1.0文書ではない。W3Cによって行われる今後の作業が,複数の名前空間を含む文書の適合性を規定する方法に言及することになる。

次の例は,XHTML 1.0がMathML勧告と組み合わせて使用できる方法を示す。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>A Math Example</title>
  </head>
  <body>
    <p>The following is MathML markup:</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <apply> <log/>
        <logbase>
          <cn> 3 </cn>
        </logbase>
        <ci> x </ci>
      </apply>
    </math>
  </body>
</html>

次の例は,XHTML 1.0のマーク付けが他のXML名前空間に組み込まれる方法を示す。

<?xml version="1.0" encoding="UTF-8"?>
<!-- initially, the default namespace is "books" -->
<book xmlns='urn:loc.gov:books'
    xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en">
  <title>Cheaper by the Dozen</title>
  <isbn:number>1568491379</isbn:number>
  <notes>
    <!-- make HTML the default namespace for a hypertext commentary -->
    <p xmlns='http://www.w3.org/1999/xhtml'>
        This is also available <a href="http://www.w3.org/">online</a>.
    </p>
  </notes>
</book>

3.2 利用者エージェントの適合性

適合利用者エージェントは,次の基準をすべて満たさなければならない。

    a) XML 1.0勧告[XML]と整合するために,利用者エージェントは,整形式性について,XHTML文書を構文解析し評価しなければならない。利用者エージェントが妥当性検証を行う利用者エージェントであることを主張する場合には,それは, [XML]に従って,文書が参照するDTDに照らして文書の妥当性も検証しなければならない。
    b) 利用者エージェントが,この規定内で定義されるか又は引用規定を通してこの規定によって要求される機能実装をサポートすると主張する場合は,その機能実装の定義と矛盾しない方法でサポートを実行しなければならない。
    c) 利用者エージェントがXHTML文書を共通XMLとして処理する場合は,ID型の属性(ほとんどのXHTML要素におけるid属性など)だけを素片識別子として認識しなければならない。
    d) 利用者エージェントが認識しない要素に出会うと,利用者エージェントは要素の内容をレンダリングしなければならない。
    e) 利用者エージェントが認識しない属性に出会うと,利用者エージェントは属性指定全体,つまり属性及びその値を無視しなければならない。
    f) 利用者エージェントが認識しない属性値に出会うと,利用者エージェントはデフォルト属性値を使用しなければならない。
    g) 利用者エージェントが,定義済み実体の一つ以外の,宣言を処理していない実体参照に出会うと(これは,利用者エージェントがまだ読んでいない外部のサブセットに宣言が存在する場合に, 起きる可能性がある。),その実体参照を構成する(アンパサンドで始まりセミコロンで終わる)文字列として,実体参照をレンダリングすることが望ましい。
    h) 内容をレンダリングする場合,認識はするがレンダリングできない文字又は文字実体参照に出会う利用者エージェントは,正常なレンダリングが行われなかったことが利用者に明確に分かる方法で,文書を表示するのが望ましい。
    i) 次の文字は,[XML]では空白文字として定義される。
  • スペース(&#x0020;)
  • タブ(&#x0009;)
  • 復帰(&#x000D;)
  • 改行(&#x000A;)

XMLプロセサは,異なるシステムの行末コードを単一の改行文字に正規化し,それをアプリケーションに渡す。XHTML利用者エージェントは,加えて,次の文字を空白文字として扱わなければならない。

  • 改ページ(&#x000C;)
  • ゼロ幅(ZW)スペース(&#x200B;)

'xml:space'属性が'preserve'に設定されている要素では,利用者エージェントは,すべての空白文字をそのままにしておかなければならない。(ただし,先頭の空白文字及び末尾の空白文字は例外であって,それらは除去するのが望ましい。)それ以外の場合は,空白は,次の規則に従って処理する。

  • ブロック要素を囲むすべての空白は,除去するのが望ましい。
  • コメントは完全に除去され,空白処理に影響しない。コメントの片側にある一つの空白文字は,二つの空白文字として処理する。
  • ブロック要素内の先頭の空白文字及び末尾の空白文字は,除去しなければならない。
  • ブロック要素内の改行文字は,スペースに変換しなければならない。ただし,'xml:space'属性が'preserve'に設定されている場合を除く。
  • 空白文字の列は,単一のスペース文字にまとめなければならない。ただし,'xml:space'属性が'preserve'に設定されている場合を除く。
  • レンダリングに関しては,利用者エージェントは,内容を記述している言語に適した方法で,内容をレンダリングするのが望ましい。主な文字列がラテン語に由来する言語の場合は,文法上の語境界及び印刷上の空白の両方を符号化するために,通常,ASCIIスペース文字を使用する。サンスクリット語,タイ語などの,文字列がナーガリーに関連する言語では,文法上の境界をZW'スペース'文字を使用して符号化してもよいが,レンダリングされた出力においては,通常,印刷上の空白では表現しない。アラビア形式の文字列を使用する言語は,スペース文字を使用して印刷上の空白を符号化してもよいが,ZWスペース文字を使用して,'内部的な'文法上の境界を区切ってもよい。(アラビア語では単語に見えるものが,英語から見ると,複数の語を符号化したものとなることも多い。例えば,'kitAbuhum' = 'kitAbu-hum' = 'book them' == their bookなど,となる。)さらに,中国の文字列の伝統をもつ言語では,通常,このような区切り子を符号化することはなく,この方法で印刷上の空白を使用することもない。

属性値における空白は,[XML]に従って処理される。

4. HTML 4との相違点

XHTMLはXMLアプリケーションであるという事実のために,SGMLに基づくHTML 4[HTML]では完全に文法に合う幾つかの作法を変更しなければならない。

4.1 文書の整形式性の必要性

整形式性は,[XML]によって導入された新しい概念である。本質的には,これは,すべての要素が終了タグをもつ,又は以降で示すとおりの特殊な形式で記述する,のいずれかでなければならないこと,及びすべての要素が入れ子になっていなければならないことを意味する。

SGMLでは重なりは文法違反であるが,既存のブラウザでは広く許容されていた。

正:入れ子にされた要素

<p>here is an emphasized <em>paragraph</em>.</p>

誤:重なっている要素

<p>here is an emphasized <em>paragraph.</p></em>

4.2 要素及び属性の名前が小文字であることの必要性

XHTML文書は,すべてのHTML要素名及びHTML属性名に小文字を使用しなければならない。この相違が必要となるのは,XMLでは,<li>と<LI>は異なるタグとなるなど,大文字・小文字を区別することによる。

4.3 非空要素に関する終了タグの必要性

SGMLに基づくHTML 4では,終了タグを省略できる要素もあった。それら要素は,暗黙的に終了する。XMLに基づくXHTMLでは,この省略は許されない。EMPTYとしてDTDで宣言されるものを除くすべての要素は,終了タグをもたなければならない。

正:終端された要素

<p>here is a paragraph.</p><p>here is another paragraph.</p>

誤:終端されていない要素

<p>here is a paragraph.<p>here is another paragraph.

4.4 属性値を常に引用符で囲む必要性

すべての属性値は,たとえ数値に見えても,引用符で囲まなければならない。

正:引用符で囲まれた属性値

<table rows="3">

誤:引用符で囲まれていない属性値

<table rows=3>

4.5 属性最小化

XMLは,属性最小化をサポートしない。属性及び値の対は,完全な形で書かなければならない。compactcheckedなどの属性名は,値が指定されていなければ,要素中に出現できない。

正:最小化されていない属性

<dl compact="compact">

誤:最小化されている属性

<dl compact>

4.6 空要素

空要素は,終了タグをもつか,又はその開始タグが/>で終わるかのいずれかでなければならない。<br/>又は<hr></hr>が,その例となる。これをHTML 4利用者エージェントと確実に下位互換とするための方法について情報を入手したい場合は,HTML互換性ガイドラインを参照すること。

正:終端した空タグ

<br/><hr/>

誤:終端していない空タグ

<br><hr>

4.7 属性値での空白処理

属性値において, 利用者エージェントは,先頭の空白及び末尾の空白を属性値から取り除き,行区切りを含む一つ以上の空白文字の列を単一の語間スペース(欧米の文字列の場合はASCIIスペース文字)に対応付ける。[XML]3.3.3を参照すること。

4.8 スクリプト要素及びスタイル要素

XHTMLでは,スクリプト要素及びスタイル要素は,#PCDATA内容をもつものとして宣言される。結果として,<及び&はマーク付けの開始として扱われ,&lt;&amp;などの実体は,実体参照としてXMLプロセサがそれぞれ<&などと認識することになる。CDATAとマークされたセクション内にスクリプト要素又はスタイル要素の内容を包み込むことで,これらの実体の展開が回避される。

<script>
 <![CDATA[
 ... unescaped script content ...
 ]]>
 </script>

CDATAセクションは,XMLプロセサによって認識され,文書オブジェクトモデルでノードとして現われる。DOM水準1の勧告[DOM]1.3を参照すること。

代替案としては,外部スクリプト文書及び外部スタイル文書を使用するのがよい。

4.9 SGMLの排除機能

SGMLは,DTDの作者に,特定の要素をある要素内部に含まれないようにする能力を提供する。"排除"と呼ばれるこの禁止は,XMLでは可能ではない。

例えば,HTML 4の厳密DTDは,'a'要素を別の'a'要素内に入れ子にすることを子孫の深さを問わず禁じている。XMLでは,そうした禁止を明確に示すは不可能である。たとえ,これらの禁止をDTDで定義できないとしても,ある要素は入れ子にしないことが望ましい。このような要素及び入れ子にするのが望ましくない要素の要約を,附属書B(規定)に示す。

4.10 'id'属性及び'name'属性をもつ要素

HTML 4は,a, applet, form, frame, iframe, img, 及びmapの各要素に対して,name属性を定義する。HTML 4は,id属性も導入している。これらの属性は両方とも,素片識別子として使用するために設計されている。

XMLでは,素片識別子はID型であって,要素ごとにID型の属性はただ一つだけ存在できる。そのために,XHTML 1.0では,id属性は,ID型であると定義されている。XHTML 1.0文書が正しく構造化されたXML文書であることを保証するために,素片識別子を定義する場合には,歴史的にはname属性も存在した要素であっても,XHTML 1.0文書では,id属性を使用しなければならない。メディア型text/htmlとしてXHTML文書を提供する場合,こうしたアンカが下位互換であることを保証することについて情報を入手したい場合には,HTML互換性ガイドラインを参照すること。

XHTML 1.0では,これらの要素のname属性は公式に非推奨とし,XHTMLの今後の版では除去されるだろうという点に注意する。

5. 互換性の課題

XHTML 1.0文書は,既存の利用者エージェントとの互換性を要求されてはいないが,実際にはこれは容易に達成できる。互換文書を作成するためのガイドラインは,附属書Cで見ることができる。

5.1 インタネットメディア型

この標準情報(TR)の原規定の公開時点では,XMLに基づくアプリケーション用に推奨される一般的なMIMEラベル付けは,解決しなければならない課題となっている。

しかし,附属書C"HTML互換性ガイドライン"で示されたガイドラインに従ったXHTML文書は,ほとんどのHTMLブラウザと互換性があるので,インタネットメディア型"text/html"でラベル付けしてよい。この附属書は,これ以外のXHTML文書のMIMEラベル付けについては,いかなる推奨もしない。

6. 将来的な方向性

XHTML 1.0は,新しい装置及びアプリケーションを広範囲にわたってサポートするために,モジュールを定義し,これらモジュールを組み合わせる機構を規定することによって,XTMLを拡張しサブセット化する文書型のファミリのための基礎を提供する。この機構は,新しいモジュールの定義を通じた一貫した方法で,XHTML 1.0の拡張及びサブセット化を可能とする。

6.1 HTMLのモジュール化

XHTMLの使用が従来のデスクトップ利用者エージェントから他のプラットフォームへと移行するにつれて,XHTML要素のすべてが,すべてのプラットフォームで要求されるわけではないということが明らかとなった。例えば,ハンドヘルド装置又は携帯電話は,XHTML要素のサブセットだけをサポートすればよい。

モジュール化の過程は,XHTMLを一連のより小さな要素集合に分解する。これらの要素は,異なるコミュニティの必要性を満たすために再度組み合わせることが可能となる。

これらのモジュールは,今後のW3C文書で定義されることになる。

6.2 サブセット及び拡張性

モジュール化は,次の幾つかの利点をもたらす。

6.3 文書プロファイル

文書プロファイルとは,文書の集合の文法及びセマンティクスを規定するものとする。文書プロファイルへの適合性が,相互運用性の保証のための基礎を提供する。文書プロファイルは,例えば,画像フォーマットの種類,スクリプト記述のレベル,スタイルシートのサポートなどで,どれが使用できるかといった,ある型の文書を処理するために要求される機能実装を指定する。

製品設計者にとっては,これによって,様々なグループがそのグループ自体の標準プロファイルを定義できる。

文書作成者にとっては,これによって,異なるクライアントに対して複数の異なる版の文書を書く必要性がなくなる。

化学者,医師,数学者など専門家グループにとっては,これによって,標準的なHTML要素に加えて,専門家の必要性に合わせた要素の集合を用い,専門分野のプロファイルを構築できる。