昨日、JBasic08についての問題提起の中で、「出版物の内容の区分とHTMLファイル化」のところで取り上げた問題をもう少し掘り下げてみます。
JBasic08では、EPUB3を構成するXHTML文書はすべてルートを同じくする兄弟でなければならないと想定しているようです。この想定は、次の記述と表裏一体をなしています。
「見出しを持たないbody 要素は、暗黙的に出版物の標題が見出しに指定されたものと見做し許容する。body 要素に見出しを明示的に指定する場合には、それは出版物の標題でなければならない。」(p.25)
そしてそこから、昨日取り上げたp.29の説明図にあるような大きな内容を分割するときは、section要素の終了タグと開始タグを補って分割するという考え方になります。
そういう意味では一貫性がありますが、果たしてこれが最適なのでしょうか?以下で、この問題を検討してみましょう。
分かりやすくするためにJBasic08のp.29のXHTMLファイルの分割を絵で表しますと次の図のようになります。
分割したファイルは、EPUB3にspineにこの順に登録することで閲読順序を指定します。この分割方法の問題は、第二節と第三節sectionの親であるsectionが第一節sectionの親sectionとは別になることです。このため第一節、第二節、第三節が兄弟ではなくなります。分割後の3つのXHTMLを結合しても元のひとつのXHTMLに戻りません。
こうなると、編集作業で、第一節と第二節の入れ替えを行なったり、XSLT(XSL Transformations)などでXMLのツリー構造変換するときに、ややこしくなると思います。
では、どうしたら良いでしょうか。一つの代替案は次の図のように分割することです。
つまり、節のsectionを単位として切り離して、別のXHTMLファイルにしたうえでspineに登録します。spineに登録された3つのXTMLをもとの大きなXTHMLと同等にするために、レベルという考えを導入して章のsectionをレベル1、節のsectionをレベル2とします。
これによって、分割後のXHTMLを元のXHTMLに戻すことが簡単にできますので、節の順序入れ替えやXSLT処理もより簡単になると思います。