HTML4.0 riference | DynamicHTML|XHTML | XML sample | XSLT sample | RIKO's ASP Trial
HTML4.01とXHTML1.0の違い
![]()
XHTML文書では、必須ではありませんが、文書の先頭でXML宣言を行い、XMLのバージョンと使用する文字セットを宣言することができます。ただし、文字コードが国際符号化文字集合の「UTF-8」または「UTF-16」以外で、上位のプロトコルでも文字コードが示されていない場合には、必ずXML宣言を行って使用している文字コードを示す必要があります。HTML4.0の場合と同様に、JISの場合は「iso-2022-jp」、EUCの場合は「EUC-JP」を指定することができます。XMLでは基本的に大文字と小文字を区別しますが、文字コードについては大文字と小文字jは区別されません。
- Macintosh版のInternet Exploler4.5以前などの一部のブラウザでは、XML宣言を入れると正常に表示されなくなる場合があります。
HTML4.01の場合と同様に、XHTML1.0にも3種類のDTDが用意されています。使用するDTDにあわせて、XML宣言の後に次のいずれかのDOCTYPE宣言を入れてください。
Strict DTD
Transitional DTD
Frameset DTD
XML文書には、他で定義されている要素や属性を組み込むことができます。そして、その時に要素や属性の名前が重複してしまうことのないようにするための仕組みも用意されています。それがネームスペースと呼ばれるものです。XHTML文書を作成する場合には、html要素にxmlns属性を使用して、このネームスペースを指定しておく必要があります。値は下のサンプルで表示されているURIで固定ですので、同じように指定してください。
また、XMLでは日本語や英語、フランス語などの言語を示す属性には、XMLの予約属性である「xml:lang」を使用します。ただし、XHTML1.0の場合は、既存のHTMLとの互換性を保つために、lang属性も同時に指定しておくことができます。以上の属性と上で説明した宣言を加えると、XHTML文書はおおよそ次のようになります。
XMLでは、大文字と小文字は区別されます。XHTML1.0のDTDでは、要素名と属性名はすべて小文字で定義されていますので、XHTML文書を書く場合には必ず小文字で書く必要があります。XHTMLでは、タグを省略することはできません。たとえばHTMLでは、p要素やli要素などでは終了タグを省略することができましたし、head要素やbody要素、tbody要素などは開始タグも終了タグも省略することができました。しかし、XHTMLの場合は、空要素を除くすべての要素に対して、必ず開始タグと終了タグを付ける必要があります。
XHTMLでは、空要素を次の2種類の書き方のいずれかで示す必要があります。ひとつは空要素にも終了タグをつける書き方で、ふたつめは開始タグの最後を「/>」で終わらせる書き方です。例えば空要素であるbr要素は次のいずれかの書き方をする必要があります。
<br></br> 空要素も終了タグをつける <br/> 空要素の解した具の最後を「/」にする
- 実際には、上の書き方では古いブラウザでうまく表示されない場合もあります。詳しくは後述の「XHTMLを既存のブラウザで表示させるための注意事項」を参照してください。
属性値を囲う引用符は、HTML4.0では条件によっては省略できましたが、XHTMLの場合は必ず引用符で囲う必要があります。XHTMLでは、属性は必ず「属性名="値"」の形式で指定します。従って、HTML4.01では最小化して、単に「checked」や「ompact」などのように指定していた属性も、次のように指定する必要があります。
HTML4.0 XHTMLchecked checked="checked" compact compact="compact" XHTMLでは、属性値の最初と最後にある空白文字は取り除かれ、中に含まれる連続した空白文字は、ひとつの半角スペースに置き換えられます。
HTML4.01では、script要素とstyle要素の内容は「CDATA」として定義されていたため、内容として「<」や「&」をそのまま含む事ができました。しかし、XHTMLでは「#PCDATA」として定義されているため、「<」と「>」はタグを表す記号であると認識され、「&」は実体参照の始まりだと認識されてしまいます。これをHTML4.01と同様の「CDATA」にするためには、XMLの「CDATAセクション」という形式にする必要があります。CDATAセクションは、次のように指定します。
従って、script要素は次のように記述することになります。
- 過去のブラウザとの互換性を考慮した書き方については、後述の「XHTMLを既存のブラウザで表示させるための注意事項」を参照してください。
HTMLでは、その要素の固有の名前を表す識別子(フラグメント識別子)を指定するには、「id属性」を使用する必要があります。HTML4.01には識別子として「name属性」を使用する要素(次の表のa要素からmap要素まで)がありますが、それらの要素に対して名前を指定する場合でも、「id属性」を使うようにしてください。なお、識別子として使用されない「name属性」に関しては、「id属性」を使う必要はありません。
- 過去のブラウザとの互換性を考慮した書き方については、後述の「XHTMLを既存のブラウザで表示させるための注意事項」を参照してください。
要素名 XHTML1.0 XHTML1.1 XHTML Basic Strict Transitional Frameseta - -applet - - -form - - -frame - - - -iframe - - -img - - -map - -button -input
meta object param select textarea
- id属性を使用する必要があるのは、a要素からmap要素まで(表の上半分)のみ。button要素からtextarea要素まで(表の下半分)に関しては、HTML4.01と同様にname属性が使用される。
XML文書には「well-formed」と「valid」という2種類の状態がありますが、XHTMLは「well-formed」の状態である必要があります。これは、簡単に言うと、開始タグと終了タグの対応が適切であり、それぞれの要素が正しく入れ子になっている状態を指します。この状態にするためには、終了タグをしっかりと入れ、次のような間違った入れ子の書き方をしないように注意すればよいでしょう。
間違った書き方
<em><p>入れ子</em>を正しくさせる</p>正しい書き方
<p> <em>入れ子</em>を正しくさせる</p>