[29] [[HTML5]] (旧 [[Web Applications 1.0]]) も当初は [CODE(HTMLe)@en[[[p]]]]
[[要素]]は他の[[ブロック水準要素]]を含められる[[内容モデル]]としてきました。
しかし、 [[XHTML]] でない [[HTML]] は既存の実装や[[文書]]との互換性のために変更しがたく ([[ブロック水準要素]]の[[開始タグ]]が現れると[[構文解析器]]は
[CODE(HTMLe)@en[[[p]]]] [[要素]]の[[終了タグ]]を補うこととなっています。)、
[[HTML]] と [[XHTML]] の差異を不用意に拡大するのも好ましくないとの設計方針から、
従来通り他の[[ブロック水準要素]]は含められない[[内容モデル]]に戻されました。
** 不思議解釈
[18]
'''[CODE(HTMLe)@en[br]]は1改行、[CODE(HTMLe)@en[p]]は2改行?'''
特定の実装の挙動を根拠に、
[CODE(HTMLe)@en[[[br]]]]は[[改行]]1つ分、
[CODE(HTMLe)@en[[[p]]]]は[[改行]]2つ分だとする誤った解釈が古今東西広く流布されています。
[19]
'''[CODE(HTMLe)@en[p]]は段落ではない?'''
[[HTML 4]]で[CODE(HTMLe)@en[[[p]]]][[要素]]の[[子供]]として[CODE(HTMLe)@en[[[ul]]]][[要素]]等を入れられない問題がよく取り上げられていますが、
それを[[日本語]]と[[英語]]の文法的・文章的構造の違いに拠るものだとする主張が後を絶ちません。
果てには[[日本語]]の[[段落]]と[[英語]]の[[パラグラフ]]はまったく別概念であり、[[段落]]を[CODE(HTMLe)@en[[[p]]]]で表せないという珍説まで発表されています
([[パラグラフ非段落説]])。しかし、
[[日本語]]と[[英語]]における違いについて ([[HTML 4]]の規定以外の)
根拠を挙げた主張は寡聞にして見たことがありません。
[[HTML]]が[[フラットでリニアな構造]]なのは他書式との互換性のための歴史的制約に過ぎず
[WEAK[([[TimBL]]自身の発言他、軽く調べるだけですぐわかること。)]]、
この制約への不満は英語圏からも古くからあるもので、
[[HTML 5]]や[[XHTML 2]]では撤廃されています。
[20]
'''[CODE(HTMLe)@en[object]] hack'''
>>19 で取り上げられている制約を回避するための方法が幾つも検討されており、
その候補の一つが[[[CODE(HTMLe)@en[object]] hack]]で、
歴史的に何度も[Q[再発見]]されています。
詳しくは[[[CODE(HTMLe)@en[object]] hack]]の項を参照してください。
[[#comment]]
** 例
[17] 段落の例 [SRC[RFC 1866 5.5.1.]]
[PRE(HTML)[
This Heading Precedes the Paragraph
This is the text of the first paragraph.
This is the text of the second paragraph. Although you do not
need to start paragraphs on new lines, maintaining this
convention facilitates document maintenance.
This is the text of a third paragraph.
]PRE]
[[#comment]]
** メモ
[21]
[[HTML 4]]: には
> The [CODE(HTMLe)@en[P]] element represents a paragraph.
とは書いてあるけど、[[段落]]は [CODE(HTMLe)@en[[[p]]]]
で表される/表されなければならないとは書いてない。
;;
もっとも、こんなことも書いてあるから[[段落]]は
[CODE(HTMLe)@en[[[p]]]] しかないと解釈できなくもない。
> The HTML markup for defining a paragraph is straightforward: the [CODE(HTMLe)@en[P]] element defines a paragraph.
;; [[HTML 5]] では [CODE(HTMLe)@en[[[p]]]]
以外にも[[段落]]を表す[[要素]]があるし、
いわゆる[[段落]]より広い範囲のものを
[CODE(HTMLe)@en[[[p]]]] で表すことになっている。
([[名無しさん]])
[22]
[[HTML 4]]: には
> The [CODE(HTMLe)@en[P]] element represents a paragraph.
とは書いてあるけど、[[段落]]は [CODE(HTMLe)@en[[[p]]]]
で表される/表されなければならないとは書いてない。
;;
もっとも、こんなことも書いてあるから[[段落]]は
[CODE(HTMLe)@en[[[p]]]] しかないと解釈できなくもない。
> The HTML markup for defining a paragraph is straightforward: the [CODE(HTMLe)@en[P]] element defines a paragraph.
;; [[HTML 5]] では [CODE(HTMLe)@en[[[p]]]]
以外にも[[段落]]を表す[[要素]]があるし、
いわゆる[[段落]]より広い範囲のものを
[CODE(HTMLe)@en[[[p]]]] で表すことになっている。
([[名無しさん]])
[25]
[CITE[HTML5 IRC logs: freenode / #whatwg / 20071220]] ([TIME[2007-12-21 19:46:38 +09:00]] 版)
[26] [CITE[SMIL 3.0 smilText]] ([TIME[2008-12-02 00:45:09 +09:00]] 版)
[27] [CITE[p要素の終了タグを省略する際の注意点 (agenda)]] ([TIME[2008-12-12 14:57:13 +09:00]] 版)
* メモ
[30] [CITE@en[Speech Synthesis Markup Language (SSML) Version 1.1]]
( ([TIME[2010-09-08 00:26:19 +09:00]] 版))