HTML文書は、見出しや本文などの文書構造から見た要素で構成されます。そして、その要素の範囲を明確に示すものがタグです。範囲が明確にわかる場合にはタグを省略できるように定義されています。その場合(タグがない場合)でも、要素自体は存在することができます。また、属性はタグに対するものではなく、要素に対する属性を表わします。
例)<P>この部分が要素の内容です。</P>
上の例で示すと、その全体がP要素となります。「<P>」と「</P>」の部分がタグです。また、「この部分が要素の内容です。」の部分はP要素の内容です。
BODY要素内に配置可能なほとんどの要素は、ブロックレベル要素とインライン要素に分類できます。直接BODY要素内に配置できるのはブロックレベル要素で、インライン要素はその中に含めて配置します。
ブロックレベル要素は、他のブロックレベル要素やインライン要素を含むことができます。一般的には、改行されてから表示されます。
インライン要素は、データや他のインライン要素を含むことができます。一般的には、表示の際に改行を伴いません。
※ブロックレベル要素とインライン要素に該当する具体的な要素名については、「要素一覧」の「ブロックレベル要素」と「インライン要素」を参照してください。
一般的には「URL (Universal Resource Locator)」という言葉が使用されており、HTML3.2までの仕様書でも「URL」を使用していましたが、HTML4.0からは「URI (Uniform Resource Identifiers)」が使用されています。
URL同様に、文書・画像・ビデオ・プログラムなどのWeb上のリソースを指定することができますが、URLはURIのサブセットで、URIの方が上位の概念です。
このリファレンスでは、わかりやすさを考慮して「ユーザー・エージェント」を「ブラウザ」と表現していますが、厳密には異なるものです。「ユーザー・エージェント」とは、HTML文書を解釈することのできるプログラム一般のことで、様々なブラウザの他に、サーチエンジンのロボットやプロキシーも含まれます。
HTMLは、言語の構造をタグでマークアップするSGMLを元に作られた言語です。ブラウザのバージョンアップとともに、構造ではなく表現を表わすタグが多く利用されてきましたが、HTML4.0ではそれらを廃止する方針を固めました。HTMLでは文書の構造のみを表わし、その表現方法はスタイルシートなどを利用するよう推奨されています。ただし、現状を考慮してHTML4.0では表現を表わすタグも利用できるようになっています。使用するタグに応じて、3種類のDTD(DOCTYPE)が用意されています。
すべての人がWebを利用できるように、制作者はWebページが様々な環境でどのように再現されているかを考慮する必要があります。Webページは、自動音声読み上げ装置や点字ディスプレイなどによっても実際に利用されています。
HTML4.0では、様々な表現方法を制限するのではなく、それが表現できない場合の別の表現方法を提供するための、様々な方法をサポートしています。
※アクセシビリティについては「Webコンテンツ アクセシビリティ・ガイドライン 1.0」を参照してください。
HTMLは、SGMLの1アプリケーションです。SGMLアプリケーションは、「SGML宣言(SGML Declaration)」と「文書型定義(DTD - Document Type Definition)」、「文書インスタンス(Document Instance)」の3つの部分で構成されています。一般的にHTML文書と呼ばれているのは「文書インスタンス」の部分のことです。
「文書型定義 - DTD」には、「文書インスタンス」で使用される要素や属性の名前、要素の親子関係(どの要素にどの要素を含むことができるか)や出現すべき順序、出現可能な回数などが定義されています。このリファレンスでは正確なHTMLを記述できるように、各要素ごとに関連する部分のDTDを記しています。
HTML4.0では、使用する要素や属性の種類に応じて以下の3種類のDTDが利用可能です。
※DTDの読み方については「HTMLのDTDの読み方」を参照してください。
HTML文書では、文書中で使用しているHTMLのバージョンを宣言する必要があります。具体的には、HTML文書の先頭で「DOCTYPE」を使用して行いますが、使用しているDTDの種類によって以下のように宣言します(後半のDTDのURLを示す部分は、省略することもできます)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
文字セットによっては、表示できない文字があります。また、環境によっては直接入力できない文字がありますし、言語の中で特別な意味で認識されてしまう文字もあります。そのような場合には、SGMLの文字参照形式を利用してその文字を表現することができます。文字参照には「å」のように数値でコードを指定する方法と、「<」のように短い名前(less than → lt)で指定する方法(文字実体参照)があります。
以下の4つは、HTMLを書く上で頻繁に利用されるものです。
< → <> → >& → &" → "その他の文字参照については、以下のページを参照してください。
※文字実体参照は、大文字と小文字を区別しますので注意してください。
※SGMLでは、改行やタグの直前などでは、文字参照の「;」を省略することができることになっています。しかし、ブラウザによっては問題が起きる可能性もありますので、省略しないで書いたほうがよいでしょう。
HTML4.0の要素の内容や属性の値として使用されるデータ型は、以下のとおりです。
普通に読むことのできる(意味のある)文字列を指定します。
URIを指定します。URIはURLを含みます。一般的には大文字と小文字を区別すると考えた方がいいでしょう。
色は#に続く16進数(RGBの順に2桁ずつ、計6桁で表わしたもの)か、以下の名前で指定します。色の名前は、大文字でも小文字でもかまいません。
HTMLの長さを表わす属性値には、以下の3種類があります。
RFC2045で定義されている「Media Type」を、HTML4.0の仕様書では「コンテント・タイプ」と呼んでいますが、どちらも「MIME type」を表わしています。HTML4.0では、「Media Type」と表現すると、画面・テレビ・自動音声読み上げ装置・点字ディスプレイなどの出力媒体の種類と混同する可能性があるため、このように表現されています。
コンピュータの言語ではなく、人が話したり書いたりする言語の種類を ISO639 で定義されたコードで指定します。例えば、ja(日本語)、zh(中国語)、en(英語)、en-US(アメリカ英語)、fr(フランス語)、de(ドイツ語)などがあります。
IANAに登録されている文字コードセットを指定します。大文字・小文字の区別はありません。例えば、JISならば「iso-2022-jp」、シフトJISならば「Shift_JIS」、EUCならば「EUC-JP」と指定します。
HTML4.0で定められている文字セット中の任意の1文字を指定します。
日時は、以下の形式で表わします。
YYYY-MM-DDThh:mm:ssTZD
・YYYY = 年(4桁) ・MM = 月(2桁) ・DD = 日(2桁) ・hh = 時(2桁/00〜23) ・mm = 分(2桁/00〜59) ・ss = 秒(2桁/00〜59) ・TZD = タイムゾーン(Z, +hh:mm, -hh:mm) Z = UTC (協定標準時) +hh:mm = 現地時間(UTCより先) -hh:mm = 現地時間(UTCより後)
このデータ型は、SCRIPT要素の内容である場合とイントリンシック・イベント属性(onClick、onMouseUpなど)の値である場合とがあります。大文字と小文字を区別するかどうかは、使用するスクリプト言語に依存します。
このデータ型は、STYLE要素の内容である場合とstyle属性の値である場合とがあります。大文字と小文字を区別するかどうかは、使用するスタイルシート言語に依存します。
下に示す4つの予約された名前を除いて、フレーム・ターゲット名はアルファベットから始まらなければなりません。そうでない場合は、ブラウザに無視されます。以下の4つのフレーム・ターゲット名には、特別な意味があります。
HTMLでのコメントは、以下のように記述します。
<!-- この部分がコメント -->
<!-- コメントは複数行に
なってもOK -->
コメントの開始を示す部分の「<! 」と「--」の間には、空白文字を入れずに必ず続けて記述します。ただし、終了を示す部分の「--」と「 > 」の間には、空白文字を含むことができます。また、コメント中に複数のハイフン(---など)を含むことは避けてください。
※空白文字には、スペースの他にタブや改行も含まれます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40/frameset.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
属性の値が以下の文字のみで構成されている場合は、属性値を囲う引用符を省略することができます。ただし、条件的には省略できる場合でも、常に引用符をつけるようにすることが推奨されています。
rowspan属性の値が"0"の場合は、現在のセルからテーブル全体の一番下までのセルを連結します。
colspan属性の値が"0"の場合は、現在のセルからテーブル全体の一番右までのセルを連結します。
rowspan属性の値が"0"の場合は、現在のセルから同じセクション(THEAD, TBODY, TFOOT)内の一番下までのセルを連結します。
colspan属性の値が"0"の場合は、現在のセルから同じグループ(COLGROUP)内の一番右までのセルを連結します。
<!ELEMENT MAP - - ((%block;)+ | AREA+) >
MAP要素の内容としては、ブロックレベル要素を1つ以上、またはAREA要素を1つ以上のいずれかのみを配置可能です。
<!ELEMENT MAP - - ((%block;) | AREA)+ >
MAP要素の内容としては、ブロックレベル要素とAREA要素の中から、任意のものを1つ以上配置可能です。つまり、ブロックレベル要素とAREA要素を混在させることができます。
ブロックレベル要素とAREA要素が混在している場合は、ブラウザはAREA要素を無視します。
イメージマップを制作する場合は、AREA要素で領域を完全に指定するか、A要素で領域を完全に指定するか、または両方で完全に指定するようにしてください。古いブラウザではAREA要素での指定が有効となり、新しいブラウザではブロックレベルで指定した内容が利用されるようになります。