ちゃだろぐ

computing

< 2012-05 >
  12345
6789101112
13141516171819
20212223242526
2728293031  
Powered by Nucleus CMS
Total1725148 7days2559 Yesterday368 Today303
Since 2004-07-11

All

blockquote と div の DTD

NP_SimpleParagraphs を作る上で、blockquote と div が内包できる要素について XHTML 1.0 Strict の DTD を確認したので、メモっておく。今まで解説記事はたくさん読んだが、DTD を読んだのは初めてだ。

結論

blockquote はブロック要素しか包含できないので、blockquote の中身を再帰的に段落書式化するのは、とても正しい。
div はインライン要素はおろか、PCDATA (Parsed Character Data)をも含めてしまえるので、div の中を自動で段落書式化するのは、投稿者の自由な文章構成を妨げる恐れがある。

body もブロック要素しか包含できないので、body の中でブロック要素として定義されていない文字列を抽出して p で段落書式化する、という発想は、これもまた妥当だったと言える。あ〜、よかった。

<!--=== Block level elements ===-->

<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">

<!ENTITY % block
"p | %heading; | div | %lists; | %blocktext; | fieldset | table">

<!ENTITY % Block "(%block; | form | %misc;)*">

<!-- %Flow; mixes block and inline and is used for list items etc. -->
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">

<!--=== Block-like Quotes ===-->

<!ELEMENT blockquote %Block;>

<!--=== Document Body ===-->

<!ELEMENT body %Block;>
<!ELEMENT div %Flow;>

div は Flow を包含でき、Flow の構成要素には #PCDATA があるから、div の中に p を使わずに直接文字列を書くのはOKなんですね。すると、div の機能はブロック要素のグループ化ではなく、ブロック要素を含む要素群のグループ化、ということですな。

引用元:

http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict

2004-10-06_19:34-tyada

Related