pの内容に関するデータ構造モデルは、昨日の「テキストバッファの文化圏」で述べたようなバッファ・モデルでしょう。基本単位(アトム)は文字または要素であり、文字単位でのアドレッシングとオペレーションをサポートすべきです*1。
構文的にも、(#PCDATA|br|em)* という表現はふさわしくないのであって、1文字を#charで表すなら、(#char|br|em)* とすべきなのです。
さて、p(段落)内容の意味モデルは? これは構文的/ソフトウェア的に表現できません。段落概念は、非形式的かつ曖昧で、メンタルな意味モデルしか持てないでしょう。でも、それでいいのです。すべてが形式化できるとか、すべてを構文的/ソフトウェア的に表現すべき、なんてことはタワゴトですから。
(続く)
*1:編集をするなら、ですが。