4. HTML 4 との違い

目次

本セクションは参考的。

XHTML は XML 応用言語であるという事実により、SGMLベースの HTML 4 [HTML4] では完全に合法的であった特定の実践は変更されなければならない。

4.1. 文書は整形式でなければならない (Documents must be well-formed)

整形式は [XML] で導入された新しい概念である。本質的に意味するところは、全ての要素は終了タグを持つか、特殊な形式(以下で説明しているように)で記述されなければならず、全ての要素は適切に入れ子になっていなければならないということである。

SGML でも互い違いは不正であったが、既存のブラウザでは広く容認されている。

正:入れ子になった要素

<p>ここは強調された<em>段落</em>。</p>

誤:互い違いになった要素

<p>ここは強調されている<em>段落。</p></em>

4.2. 要素名と属性名は小文字でなければならない (Element and attribute names must be in lower case)

XHTML 文書は全ての HTML 要素名と属性名に小文字を使わなければならない。この違いは、 XML が大文字と小文字を区別する、例えば <li> と <LI> は別のタグであるために必要である。

4.3. 非空要素に対して、終了タグは必須 (For non-empty elements, end tags are required)

SGML ベースの HTML 4 では特定の要素は終了タグを落とすことが許されている;そのような要素には暗黙的に終了指示子が後続していた。XML では終了タグを落とすことは許されない。DTD で EMPTY と宣言されたもの以外の全ての要素は終了タグを持たなければならない。DTD で EMPTY と宣言された要素は、終了タグを持つこともできるし、また、空要素の省略形(空要素を参照)を用いることもできる。

正:終了されている要素

<p>ここは段落です。</p><p>ここは別の段落です。</p>

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

<p>ここは段落です。<p>ここは別の段落です。

4.4. 属性値は常に引用符でくくられていなければならない (Attribute values must always be quoted)

数値型であっても、全ての属性値は引用符でくくられていなければならない。

正:引用符でくくられた属性値

<td rowspan="3">

誤:引用符でくくられていない属性値

<td rowspan=3>

4.5. 属性の最小化 (Attribute Minimization)

XML は属性の最小化をサポートしていない。属性-値の組は完全に記述されなければならない。compactchecked などの属性名は、指定された値を持たずには要素内に現れることができない。

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

<dl compact="compact">

誤:最小化された属性

<dl compact>

4.6. 空要素 (Empty Elements)

空要素は終了タグか末尾が /> となる開始タグのいずれか一方を持たなければならない。例えば、 <br/><hr></hr>。HTML 4 ユーザエージェントとの後方互換を保障する方法に関する情報については、HTML 互換性ガイドラインを参照のこと。

正:終了されている空要素

<br/><hr/>

誤:終了されていない空要素

<br><hr>

4.7. 属性値内の空白の取り扱い (White Space handling in attribute values)

ユーザエージェントが属性を処理するとき、[XML] の Section 3.3.3 に従って行う:

4.8. スクリプトとスタイル要素

XHTML では、スクリプトとスタイル要素は #PCDATA を内容に持つように宣言されている。その結果、 <& はマークアップの開始として取り扱われ、&lt;&amp; のような実体は XML プロセッサにより <& に対応する実体参照として認識される。スクリプトやスタイルの内容を CDATA マークされたセクション内へのラッピングは、これらの実体が展開されることを避ける。

<script type="text/javascript">
<![CDATA[
... エスケープされていないスクリプト内容 ...
]]>
</script>

CDATA セクションは XML パーサに認識され、 Document Object Model のノードとして現れる。DOM Level 1 Recommendation [DOM] の Section 1.3 を参照されたい。

代替策は外部スクリプト文書や外部スタイル文書を使うことである。

4.9. SGML 排除機能 (SGML exclusions)

SGML は DTD 作者に対して、特定の要素をある要素の内容から排除できるようになっている。このような禁則(「排除」(exclusion) と呼ばれる)は XML では許されていない。

例えば、 HTML 4 Strict DTD は 'a' 要素を他の 'a' 要素の任意深さの子孫に入れ子にすることを禁じている。XML でこのような禁則を明記することはできない。よしんばこれらの禁則が DTD で定義できなくても、特定の要素は入れ子にされるべきではない。それらの要素やそこで入れ子にされるべきではない要素に関するまとめは、規範的な要素の禁則で見つかる。

4.10. 'id' と 'name' 属性を持つ要素 (The elements with 'id' and 'name' attributes)

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 文書として適当に構築されていることを確実なものとするためには、 XHTML 1.0 文書は先に挙げた要素上の断片識別子の定義時には id 属性を使わなければならない。XHTML 文書がメディアタイプ text/html として提供されるときに、アンカーが後方互換であることを保障するたの情報は HTML 互換性ガイドライン を参照されたい。

XHTML 1.0 においては、これらの要素の name 属性は正式には廃止予定であり、 XHTML の後継バージョンでは取り除かれることになるであろう旨、注意されたい。

4.11. 定義済み値セットを持つ属性 (Attributes with pre-defined value sets)

HTML 4 と XHTML ではいずれも定義済みで制限された値セットを持つ属性(例えば、input 要素の type 属性)がいくつかある。SGML と XML では、これらは列挙属性 (enumerated attribute) と呼ばれる。HTML 4 の下では、これらの値の解釈は case-insensitive(大文字小文字を区別しない)とされ、 TEXT という値は text という値と等価であった。XML の下では、これらの値の解釈は case-sensitive (大文字と小文字を区別する)とされ、XHTML 1 では全ての値が小文字で定義されている。

4.12. 16進数値の実体参照 (Entity references as hex values)

SGML と XML ではいずれも文字を 16 進数の値で参照することを許している。SGML ではこれらの参照は &#Xnn; か &#xnn; が利用できる。XML 文書では、小文字のもの(すなわち、 &#xnn;)を利用しなければならない。


SEO [PR] !uO z[y[WJ Cu