HTMLの要素についての覚え書き

引用と見出し

最終更新
2003-02-20T17:23:51+09:00

ブロックレベルの引用(blockquote要素)の中に見出しが含まれていた場合、その見出しをどのようにマークアップするかについてのメモです。

ここでは、見出しレベルと文書構造の関係について明確に理解していることを前提としていますので、怪しいと思われる方は見出しと階層構造の關係を参照してください。お勧め記事です。

まず、h1要素からh6要素までの「見出し要素」は単なる「見出し」ではなく文書構造における見出しのレベルを同時に表しています。そしてこれが重要なことですが、その「文書構造」は引用元の文書構造ではなく、引用した側の文書の文書構造です。blockquote要素内に登場した見出し要素(h1?h6要素)だからといって、User Agentはその見出しが引用した側の文書構造に基づくレベルの見出しだと判断してくれる保証はありません(参考:7.5.5 見出し: H1、H2、H3、H4、H5、H6要素@HTML4.01仕様書邦訳、及び9.2.2 引用: BLOCKQUOTE要素とQ要素@HTML4.01仕様書邦訳)。

<h2>引用者側の文書の見出しテキスト</h2>
<blockquote cite="http://foo.com/">
 <h4>被引用者の文書の見出しテキスト</h4>
 <p>段落。</p>
</blockquote>

被引用者の見出しは、その文書内の文脈に基づいてレベルが決定されたものであり、引用された場合にはその文脈とは切り離されたのですから、引用者側の文脈に基づいて、引用者側がマークアップし直すべきだと思います。

ではどうするか その1

ここで問題が生じます。先の例に挙げたようなh4タグでマークアップされた「見出し」は、引用者側の文書の構造とは無関係に存在する見出しです。「レベル」の概念がありません。しかしHTMLにはそのような汎用的な見出しをマークアップする要素型が定義されていません。限定的に、table要素の「表題」としてのcaption要素、またfieldset要素の「表題」としてのlegend要素などがありますが、ここでは使えません。

簡単に解決できるケース

誤解を招く恐れがあるので断っておきますが、まず引用者側は、本当にその「見出し」を含めて引用する必要があるのかどうかを考えてみる必要があります。引用する必要があるのが段落だけであり、見出しは文字通り見出しとしてその段落に補足的な情報を与えるためのものであったなら、blockquote要素のtitle属性にその見出しを参考にして補足的な情報を記入してやることができます。

<blockquote cite="http://foo.com/" title="被引用者の文書の見出しテキスト">
 <p>段落。</p>
</blockquote>

複数のセクションにまたがって引用したいときは、blockquote要素を分けると良いでしょう。例えば:


<blockquote cite="http://foo.com/">
 <h4>被引用者の文書の見出しテキスト1</h4>
 <p>段落。</p>
 <h4>被引用者の文書の見出しテキスト2</h4>
 <p>段落。</p>
</blockquote>

これは次のように分けることができます。

<blockquote cite="http://foo.com/" title="被引用者の文書の見出しテキスト1">
 <p>段落。</p>
</blockquote>

<blockquote cite="http://foo.com/" title="被引用者の文書の見出しテキスト2"
 <p>段落。</p>
</blockquote>

ではどうするか その2

話題を元に戻します。見出しそのものを引用したい場合にはどうすれば良いでしょうか。これはもう、汎用的なブロックとしてマークアップする以外にはありません。私ならp要素としてマークアップしますが、pは段落だったら段落だという「日本語的」な方は気持ち悪いでしょうから、さらに汎用的なdiv要素としてマークアップすることになると思います。

<blockquote cite="http://foo.com/">
 <div>被引用者の文書の見出しテキスト</div>
 <p>段落。</p>
</blockquote>

ただ、見出し語句そのものを引用しなければならないというようなケースは、滅多に無いでしょう。

定義リストと見出し

最終更新
2002-07-15T19:55:23+09:00

被定義語句(dt要素)を見出しのように使うマークアップをしばしば見かけますが、定義語句と見出しの違いについて考えてみます。

見出し(hn要素)は、本文の簡潔な要約、または単なるアイキャッチですから、仮にある妥当な文書から見出しを取り除いたとしても、内容は伝わるはずです。かなり読み難くなるかもしれませんが。

一方、被定義語句(dt要素)は、定義(dd要素)の要約ではありません。ある妥当な文書からdt要素を取り除いてしまった場合、残ったdd要素が何について言及しているのか分からなったり、あるいは、正しく意図が伝わらなくなるはずです。

以上より、ある要素をdt要素とするかhn要素とするか、その一つの基準として:

  • その要素を除いても文意が伝わるかどうか

を用いることを提唱したいと思います。文書内容の伝達に不可欠なら、dt要素。そうでないなら、hn要素という具合です。

順序型リストと順不同リスト

最終更新
2002-07-17T06:49:21+09:00

連番を振りたいとき

「1, 2, 3」などの連番を振るために、それらのリストを順序型リスト(ol要素)としてマークアップするのは考えものです。

「ア、イ、ウ」、「イ、ロ、ハ」、「A, B, C」などに置き換えても問題が生じないなら、ol要素のままで間違いありませんが、そうではない場合、つまり、「1, 2, 3」などの番号である必要がある場合には、順不同リスト(ul要素)として番号を書いた方が無難かもしれません。

<ul>
  <li>1. 価格</li>
  <li>2. 重量</li>
  <li>3. 材質</li>
</ul>

要するに、リスト(li要素)の登場順序に意味があることを明示したい場合にそのリストのグループをol要素としてマークすれば良い、というだけの話ではあります。

参考

最終更新
2003-04-02T01:06:20+09:00