ひとまず出来上がったものの、iPad miniのiBooks3.0では見ることができなかったEPUB3(最小のEPUB3―電子書籍を作る(4))を、EPUB Validatorでチェックすると3か所にエラーが見つかりました。
ERROR Content/HelloWorld.opf 24 22 item with id ‘ncx’ not found
ERROR Content/HelloWorld.opf 18 15 assertion failed: Exactly one manifest item must declare the ‘nav’ property (number of ‘nav’ items: 0).
ERROR Content/HelloWorld.opf 24 22 assertion failed: spine element toc attribute must reference the NCX manifest item (referenced media type was ”)
1 idに’ncx’をもつ項目が無い
2 manifest要素では、属性がnavのitemを宣言しなければならない
3 spine要素では、toc属性に示されている値(ncx)でNCX manifest item への参照が必要(参照されているメディアタイプが空)
といったカンジのエラーでしょうか。
そこで、お手本となるEPUB3フォーマット(EPUB 3 Sample Documents)のサンプルepub30-specのpackage.opfと比べてみると、epub30-specのpackage.opfではspine要素にtoc属性がありません。
<spine> ・ ・ ・ </spine>
となっているだけ。EPUB3ではナビゲーションでNCXファイルを使わなくなったそうです。
[OPF2] で定義されている NCX の機能は、EPUB Navigation Document [ContentDocs30] に取って代わられている。EPUB 3Publication は EPUB2 Reading System の上位互換性のために NCX を(OPF2.0.1 で定義されている)を含めてもよいが(may)、EPUB 3 Reading System は EPUB Navigation Document を支持して NCX を無視しなければならない(must)。EPUB Publications 3.0日本語訳
試しに、spine要素からtoc属性を外してみると、EPUB Validatorの結果は、上記1と3のエラーはなくなり、2番目のエラーだけとなりました。
また、epub30-specのpackage.opfのmanifest要素で
<item href="xhtml/epub30-nav.xhtml" id="nav" media-type="application/xhtml+xml" properties="nav"/>
という形でナビゲーション用ファイル(epub30-nav.xhtml)の宣言がされていました。
ということで、
<item href=”navi.xhtml” id=”nav” media-type=”application/xhtml+xml” properties=”nav”/>
といった宣言をHelloWorld.opfのmanifest要素に追加し、ナビゲーション用のファイルnavi.xhtmlを追加すれば2番目のエラーは無くなりそうです。
mimetype(固定ファイル)
┃
META-INF
┣ container.xml(コンテナ情報)
Content
┣ HelloWorld.opf(パッケージ文書)
┣ navi.xhtml(ナビゲーション用)
┗ HelloWorld.xhtml(本文)
EPUB3のベースは、こんなファイル構成となるのかな。
Tweet