
今回は強烈な腰痛に耐えながら書いてます。腰大事。。。前回はEPUBの全体の構成要素を書き出してみました。今回は各ファイルをもう少し細かく見ていきましょう。
mimetype(必須):「俺はEPUBファイルだ」と宣言するファイル
[js]
application/epub+zip
[/js]
これだけ。これでEPUBファイルだと認識してくれます。何も考えずに設置しましょう。
META-INF(必須)
これも何も考えずに設置。
container.xml(必須):content.opfの位置を指定
先ほど設置したMETA-INFディレクトリ内に作成します。次に記すcontent.opfへのファイルパスを記述します。
[js]
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
[/js]
EPUBコンテンツの直下に設置すると仮定すると上記のような記述になります。ファイルのパスだけを気にしておきましょう。
content.opf(必須):epubファイルを構成するファイルへのパスとファイル名を記述。
先ほどのcontainer.xmlで指定したファイルです。大きく下記の要素で構成されています。
[js]
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="issue" version="2.0">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:hogehoge>hogehogehogehoge</dc:hogehoge>
<dc:hogehoge>hogehogehogehoge</dc:hogehoge>
</metadata>
<manifest>
<item id="hogehoge" href="hogehoge" media-type="hogehoge"/>
<item id="hogehoge" href="hogehoge" media-type="hogehoge"/>
</manifest>
<spine toc="ncx">
<itemref idref="hogehoge"/>
<itemref idref="hogehoge"/>
</spine>
<guide>
<reference type="hogehoge" title="hogehoge" href="hogehoge"/>
</guide>
</package>
[/js]
<metadata>,<manifest>,<spine>,<guide>を<package>タグで括っている形です。
<metadata>内に出版物のタイトル、著者、出版日、記述した言語、コンテンツの識別子となる文字列とidなどを記載します。使用できる代表的な要素は以下。
- <dc:title>⇒出版物のタイトル
- <dc:creator opf:role=”aut”>⇒出版物の一次の作成者または著者
- <dc:publisher>⇒出版社
- <dc:date opf:event=”publication”>⇒出版日/eventに使用できるのは「creation」「publication「modification」など
- <dc:language>⇒出版物の知的内容を記述した言語/「ja」など
- <dc:identifier id=”issue” opf:scheme=”IRD”>⇒リソースを一意に識別するための文字列や数字/id 属性は必須
<manifest>内には出版物内で使用されているすべての画像ファイルやxhtmlを記述し、すべてにidを割り振ります。次に説明するtoc.ncxもここで指定します。使用できる要素は<item>。
- id=”hoge”⇒その構成ファイルを表すid
- href=”hoge”⇒その構成ファイルへのパス
- media-type=”hoge”⇒その構成ファイルのファイル形式/”image/jpeg”,”image/gif”,”application/xhtml+xml”など
<spine>内には実際のxhtmlファイルの表示順を記載するようです。<spine>で指定するidは<manifest>で指定したidと対になります。使用できる要素は<itemref>。
- idref=”hoge”⇒そのファイルの<item>で指定したid
<guide>は表紙になるxhtmlを指定するようです。
toc.ncx(必須):epubファイルの目次を設定
出版物の目次を記述します。おそらくですがEPUBリーダーの目次機能で利用されるのではないかと想像しています。
[js]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
<head>
<meta name="dtb:uid" content="hogehoge"/>
<meta name="dtb:depth" content="1"/>
</head>
<docTitle>
<text>hogehogehogehoge</text>
</docTitle>
<navMap>
<navPoint id="hogehoge" playOrder="1">
<navLabel>
<text>hogehogehogehoge</text>
</navLabel>
<content src="hogehogehogehogehogehoge"/>
</navPoint>
<navPoint id="hogehoge" playOrder="2">
<navLabel>
<text>hogehogehogehoge</text>
</navLabel>
<content src="hogehogehogehogehogehoge"/>
</navPoint>
</navMap>
</ncx>
[/js]
<head>,<docTitle>,<navMap>を<ncx>でタグで括っている形です。
<head>内のdtb:uidはcontent.opfで指定したidを設定します。dtb:depthはコンテンツ階層の深さを表すようです。(あるページの下に別のページがあるようなWebサイト的な構造の時に値を変える必要があるということ?調査不足。すいません。)
<docTitle>は<text>要素を使って出版物のタイトルを記述します。
<navMap>は出版物の目次となる内容を記述します。使用できる要素は以下。
- <navPoint>⇒その目次の項目にidを付与し、playOrderで目次の連番を振るようです。
- <navLabel>⇒<text>を使ってその目次のタイトルを記述します。
- <content>⇒その目次のページへのパスを記述します。
これで基本的なEPUBの形式が整うのではないでしょうか。制作の順で行くと、まずコンテンツをつくってしまってから、最後にこれらのファイルをつくると効率的っぽいですね。



