P 要素の中にブロックレベル要素を記述することはできない

妥協案として、OBJECT を使う手法があるけれど、データを指定しない OBJECT は道義的にどーなのよ。

じゃあ、データを指定すればいいのじゃなかろーかしらん。

でも、OBJECT 要素内容をブロックレベルとしてマークアップするのは、道義的にどーなのよ。

じゃあ、インラインレベル要素としてマークアップすれば、よいのではなかろーか。


問題文

以下の文章を、HTML 4.0.1 の仕様に従い、マークアップせよ。

しかし、私は上記に加えて、
・水筒
・タオル
・ちり紙
・ビニールシート
・ビニール袋
・雨具
も、必需品ではないかと思うのだ。

解答例

「しかし〜」から「思うのだ。」までをひとつの単位と捉え P 要素としてマークアップする。

「・水筒」以下は、箇条書きと考えられるが、ブロックレベル要素となり、P 要素内容としてはマークアップできない。

よって、その部分を別ファイルとして、OBJECT のデータとして配置することにする。

そうすると、OBJECT 要素の内容は、データと等価のモノとして同一のマークアップを施したくなるけれど、Special Elements - OBJECT Elementによれば、

object 要素の内容には任意のブロック要素と任意のインライン要素が許されています。但し、 object 要素自身はインライン要素ですから、その親子関係には注意する必要があります。

ということなので、仕様上間違いではないとは言え、インラインレベル要素の中にブロックレベル要素が出現するのは、潔くないということも言える。

となると、OBJECT 要素の内容はあくまでインライン要素としてマークアップすべきなんじゃないかと。

【本文】
<p>しかし、私は上記に加えて、<br>
<object data="003.html" type="text/html" width="100%" height="120"><span class="unorderlist">
<span class="list">・水筒</span><br>
<span class="list">・タオル</span><br>
<span class="list">・ちり紙</span><br>
<span class="list">・ビニールシート</span><br>
<span class="list">・ビニール袋</span><br>
<span class="list">・雨具</span>
</span></object><br>
も、必需品ではないかと思うのだ。</p>
【003.html】
<ul>
<li>水筒</li>
<li>タオル</li>
<li>ちり紙</li>
<li>ビニールシート</li>
<li>ビニール袋</li>
<li>雨具</li>
</ul>
【サンプル】

しかし、私は上記に加えて、
・水筒
・タオル
・ちり紙
・ビニールシート
・ビニール袋
・雨具

も、必需品ではないかと思うのだ。

こうすれば、OBJECT は、配置すべきデータをきちんと指定しているわけで、なんの文句も無かろう。というか、OBJECT を使うのなら、こうすべきだろうな、と思う。


書いた人

初稿 2006-02-02T14:18:41+09:00 カナかな団首領

参照

案内