Epub: container.xmlの作成

containter.xmlというファイルはEpubを作成するうえで必須ファイルになる。また、META-INFというフォルダー名の中に作成する必要がある。このMETA-INFというフォルダーとcontainter.xmlなどはファイル名は固定されていて変更はできないので定型句になる。ファイル構造は次のようになる。

C:.
│  mimetype
│  
├─EPUB
│  │  chapter1.xhtml
│  │  chapter2.xhtml
│  │  chapter3.xhtml
│  │  chapter4.xhtml
│  │  chapter5.xhtml
│  │  nav.xhtml
│  │  package.opf
│  │  style.css
│  │  
│  └─cover
│          cover.png
│          cover.xhtml
│          
└─META-INF
        container.xml

このcontainer.xmlのファイルの役割はリーディングシステムにパッケージ文書.opfの位置を伝えるための重要なファイルとなっている。

container.xml

container.xmlを上記のディレクトリ構造のように作成する。META-INFとディレクトリを作成しその中にcontainer.xmlを作成してください。

<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>
        <rootfile full-path="EPUB/package.opf" media-type="application/oebps-package+xml" />
    </rootfiles>
</container>

当然.xmlファイルなので行頭に<?xml version="1.0" encoding="UTF-8"?>と記述。XML宣言のencoding="UTF-8"は、仕様上省略してもデフォルトでUTF-8とみなされるため必須でなくてもよい。

<container>

<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">

</container>

<container>container.xmlにルート要素になる。このファイルを作成するにはEPUBの仕様上xmlns="urn:oasis:names:tc:opendocument:xmlns:container"という名前空間を使用しないとルートファイルが見つからないエラーになるので注意。

<rootfiles>

<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>

    </rootfiles>
</container>

<rootfiles>要素はEPUB内で利用可能なパッケージドキュメント.opfを格納するために記述します。

もし<rootfile>が複数に増えたとしても<rootfiles>要素は1つでそのタグ内に収めること。

最初の<rootfile>要素がデフォルトのパッケージドキュメントになるので互換性があるパッケージドキュメントを最初に記述しておく。

<rootfile>

<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>
        <rootfile full-path="EPUB/package.opf" media-type="application/oebps-package+xml" />
    </rootfiles>
</container>

<rootfile>にはパッケージドキュメントの位置を示す必要がりfull-path="EPUB/package.opf"package.opfのファイル場所を記述します。EPUBpackage.opfのファイル名は任意で固定のファイル名ではないのと、.opfの位置は自由に決められる。full-path="package.opf"でも問題ない。

media-typeこちらも必須でこの属性の値は"application/oebps-package+xml"でなければならない。基本的にはrootfileは一つで問題ないがパッケージドキュメントを増やしたい場合は下記のように複数追加することも可能。

<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>
        <rootfile full-path="EPUB/package.opf" media-type="application/oebps-package+xml" />
        <rootfile full-path="EPUB/package.opf" media-type="application/oebps-package+xml" />
    </rootfiles>
</container>

基本的にはリフロー型を採用する場合が多いので一つのrootfileで問題ないが、ユーザーリビリティを意識したEPUBを作成したい場合パッケージを増やすことで実現できる例えば、幅1500ピクセル以上の画面向けに最適化したデザインを作成したい場合や多言語化にしたい場合はrendition:属性を指定してあげることで自動的にパッケージドキュメントの読み込みを選定することができる(対応しているリーディングシステムに限るので最初のrootfileが読まれるので注意)。

参考文献