SimpleIsm

終了タグが省略可能な要素

HTML

HTML 4.01では、終了タグが省略可能な要素がいくつかあります(OMITTAG YESなため)。何かの書籍あるいはサイトで、タグは省略しない方がいいと書いてあったので、特に気にすることもありませんでしたが、暇なのでメモ。

どの要素の終了タグが省略可能かは、採用しているDTDを見れば分かります。当サイトで採用しているXHTML 1.0 Strictは、そもそも要素を省略することがNGなので(まぁそれが理由で採用しているのですが)、HTML 4.01 Strict DTDを見てみます。要素宣言の部分を見ればOK。

例えばp要素は!ELEMENT P - Oとなっています。開始タグ 終了タグで見ていき、「-」は省略不可、「O」は省略可(Omissible)なので、p要素は開始タグ省略不可、終了タグ省略可ということになります。省略の可不可の組み合わせは「- -」両方省略不可、「O O」両方省略可、「- O」終了タグのみ省略可の3つしかありません。以下は、両方省略可か、終了タグのみ省略可の要素宣言の一覧。また、EMPTYとなっている空要素は、終了タグを書いてはいけません。

!ELEMENT BR - O EMPTY

!ELEMENT BODY O O

!ELEMENT AREA - O EMPTY

!ELEMENT LINK - O EMPTY

!ELEMENT IMG - O EMPTY

!ELEMENT HR - O EMPTY

!ELEMENT P - O

!ELEMENT DT - O

!ELEMENT DD - O

!ELEMENT LI - O

!ELEMENT INPUT - O

!ELEMENT OPTION - O

!ELEMENT THEAD - O

!ELEMENT TFOOT - O

!ELEMENT TBODY O O

!ELEMENT COLGROUP - O

!ELEMENT COL - O EMPTY

!ELEMENT TR - O

!ELEMENT (TH|TD) - O

!ELEMENT HEAD O O

!ELEMENT BASE - O EMPTY

!ELEMENT META - O EMPTY

!ELEMENT HTML O O

上記を用いてHTMLを書いてみる。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<title>HTML 4.01 Omissible Elements Example</title>
<h1>HTML 4.01 Omissible Elements Example</h1>
<p>Sample text 1
<p>Sample text 2
<p>Sample text 3
<ul>
<li>Sample list 1
<li>Sample list 2
<li>Sample list 3
</ul>
<table summary="Sample table"><tr>
<td>Sample table 1<td>Sample table 2<td>Sample table 3
<tr>
<td>Sample table 4<td>Sample table 5<td>Sample table 6
</table>

そのファイル。上記でもValid HTML 4.01 Strictというカッコいい(?)横文字になります。

でも、この書き方は全くおススメできません。どの要素が終了タグを省略できるかを探すよりも、全部終了タグを書いた方が楽だし、分かりやすいです。

関連する記事
マニアックな文法論議 - SGML の省略タグ機構
HTML/タグの省略 - Wikibooks
sample HTML 4.01

追記(2008/07/28 01:21)

凶悪www

2008/07/25(Fri) 20:35
<<前の記事
デザインは理論的に
次の記事>>
三十人勇者その3

Category

Archives