XHTML1.0文書の特徴と注意点

●XHTML1.0文書の特徴と注意点

従来のブラウザでも表示できるようHTML4.01の要素や属性をXMLで定義し直したXHTML1.0では文書の作成にもHTMLの知識が利用できる仕様になっています。しかし、XMLのルールに基づいているため、文法的にはHTMLよりも厳密です。

XHTML1.0で定義される文書がHTML4.01と異なるのは以下の点です。

●XML宣言

XHTMLでは文書の先頭にXML宣言を配置します。文字コードUTF-8またはUTF-16場合は、XML宣言そのものを省略できるとされていますが、記述することが強く推奨されています。

●文書型宣言と表示モード

XHTML1.0では、HTML4.01と同様に3種類の文書型定義と文書型宣言が用意されています。このうちのいずれかを宣言する必要があります。XHTMLではシステム識別子を省略することはできません。

XHTMLでは、これらのいずれの文書型宣言の場合にも表示モードは「標準モード」となり、文書型宣言がない場合には、「互換モード」となります。HTMLと同様に「ほぼ標準モード」を加えた3通りの常時方法を備えているブラウザもあります。

●名前空間と言語コード

XHTML文書でも起点となるのはHTML要素です。また、HTML要素には、生絵空間と言語コードを指定します。

名前空間はxmlns属性で、http://www.w3.org/1999/xhtmlを値として指定します。言語コードの指定はxml:lang属性で行いますが、XHTML1.0ではHTML文書との互換性を考え、lang属性も同時に指定しておきます。

●終了タグ

・終了タグを省略しない

HTMLでは要素によっては終了タグが省略できました。例えば、p要素では次のように記述しても誤りではありません。

例:〈p〉段落1

〈p〉段落2

XTMLでは終了タグが省略できないため、必ず次のように記述します。

例:〈p〉段落1〈/p〉

〈p〉段落2〈/p〉

・空要素にも集了タグが必要

HTMLにはbrやimgのように、内容を持たない空要素があります。空要素には開始タグのみで終了タグがありません。XHTMLでは終了タグを省略することができないため、から要素も閉じるようにします。

以下のように要素名の後に半角スペースとスラッシュを起き、タグを閉じます。

〈要素名 /〉

〈要素名〉〈/要素名〉とする書式もありますが、ブラウザによってはサポートしていない場合もあるので、〈要素名 /〉の書式で記述した方がいいでしょう。

●属性値

・属性値は引用符で囲う

HTMLではいっていの条件を満たす場合に限り引用符を省略することができました。XHTMLでは属性値は常に引用符で囲わなくてはなりません。

例:間違った記述  〈table rows=4〉

正しい記述   〈table rows=”4”〉

・属性を最小化しない

HTMLでは属性名と、属性値が同じ場合に属性名を省略する「最小化」表記が認められており、この書式が一般的に使われていますが、XHTMLでは最小化することはできません

〈要素名 属性名=”値”〉

例:間違った記述  〈option selected〉

正しい記述   〈option selected=”selected”〉

ただし、ブラウザによっては最小化しない表記をサポートしていないこともあります。

・要素名、属性は小文字で書く

HTMLでは要素名や属性に大文字・小文字の区別がなく。大文字・小文字のどちらでも記述できました。XMLでは、大文字と小文字は異なるものとして区別されるので、XHTMLでは要素名や属性共に、全て小文字で書く必要があります。

・正しく入れ子にする

タグを入れ子にする場合、終了タグが互い違いにならないよう、より内側のタグから順番に閉じていくようにします。

例:間違った記述  〈p〉タグと要素は〈em〉別のもの〈/p〉です〈/em〉

正しい記述   〈p〉タグと要素は〈em〉別のもの〈/em〉です〈/p〉

XHTMLではこのように開始タグと終了タグの位置関係が適切で、書く要素が正しく入れ子になるなど、XMLの規則に準じた正しい公文で書かれている状態を「整形式」と言います。

 ・script要素とstyle要素の記述方法

HTMLでは従来、〈style〉タグや〈script〉

タグに対応していないブラウザがタグ内の内容を表示してしまわないよう、設定箇所全体を「〈!–」「–〉」で囲って記述する手法がよく使われていました。しかし、XHTMLの使用では、このように記述すると、その部分はコメントとして無視されてしまいます。同様の手法を使い、それぞれの内容をスタイルやスクリプトとして処理させたい場合には、XHTMLでは「〈![CDATA[」と「]]〉」で囲んだ「CDATAセクション」を利用します。

しかし、CDATAセクションかをサポートしていないブラウザでは、スタイルシートやスクリプトがうまく動作しない可能性があります。こうした問題を防ぐために、外部スタイルシートの使用が推奨されています。

・name属性ではなくid属性を使用する

HTMLでは名前の指定にname属性を使用する要素がありますが、以下の要素については属性ではなく、id属性で指定します。

a、applet、form、frame、iframe、img、map

id属性に対応していない古いブラウザに配慮して、同じ名前を指定したname属性を同時に記述しておくこともできます。

・要素についての禁止事項

幾つかの要素は、その中に含められる要素についての禁止事項があります。

a要素                 ほかのa要素を含んではならない

pre要素              img、object、big、small、sub、supの各要素をふくんではならない

button要素         input、select、textarea、label、button、form、fieldset、iframe、isindex                                 要素を含んではならない

label要素            ほかのlabel要素をふくんではならない

form要素           ほかのform要素を含んではならない