EPUB3フォーマットって?―電子書籍を作る(3)

3030itoEPUB3について調べてみる。

EPUB3フォーマットはInternational Digital Publishing Forum (IDPF:国際電子出版フォーラム)が提唱しているフォーマット。
中身は、XML文書とウエブで使われているコンテンツ―テキスト(xhtml、css)、画像、音声、フォント―の集まり。それらをEPUB3の仕様でコンテナにおさめてzipで圧縮したファイルが電子書籍としてのEPUB3。

IDPFのEPUB 3 Overviewにある、1.2 Roadmapによれば、最小のEPUB3は4つのファイルで作ることができるということらしい。

mimetype
 ┃
META-INF
 ┣ container.xml
Content
 ┣ HelloWorld.opf
 ┗ HelloWorld.xhtml

mimetypeの内容は
application/epub+zip
この一行だけ。ただしEPUBコンテナ(zipファイル)の先頭に未圧縮の状態で置かなくてはならない。ファイル名と内容は固定。必須。

META-INFディレクトリは、EPUBコンテナの情報を入れておく。ディレクトリ名は固定。必須。
container.xmlファイルはxml文書で、EPUBコンテナのルート要素(package要素)が入っているパッケージ文書(.opfファイル)の場所とメディアタイプを指定する。ファイル名は固定。必須。

<?xml version=”1.0″?>
<container version=”1.0″ xmlns=”urn:oasis:names:tc:opendocument:xmlns:container”>
<rootfiles>
<rootfile full-path=”Content/HelloWorld.opf”
media-type=”application/oebps-package+xml” />
</rootfiles>
</container>

Contentディレクトリは、パッケージ文書(.opfファイル)やコンテンツを格納する。ディレクトリ名は任意。
HelloWorld.opfファイルは、EPUBとしての電子書籍情報が書き込まれているファイル。拡張子.opfは固定。必須。

<?xml version=”1.0″?>
<package version=”3.0″
xml:lang=”en”
xmlns=”http://www.idpf.org/2007/opf”
unique-identifier=”pub-id”>
<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:identifier id=”pub-id”>
urn:uuid:B9B412F2-CAAD-4A44-B91F-A375068478A0
</dc:identifier>
<dc:language>en</dc:language>
<dc:title>HelloWorld</dc:title>
<meta property=”dcterms:modified“>
2013-02-06T12:00:00Z
</meta>
</metadata>
<manifest>
<item id=”HelloWorld”
href=”HelloWorld.xhtml”
media-type=”application/xhtml+xml”/>
</manifest>
<spine toc=”ncx”>
<itemref idref=”HelloWorld”/>
</spine>
</package>

  • package要素には、version、unique-identifier属性が必須。
  • metadata要素には、identifier、language、title、dcterms:modifiedが必須。
  • identifierのuuidはMicrosoft Exchange Server GUID Generatorなどを利用して作成。
  • manifest要素には、EPUBが利用するコンテンツ一覧を示す。各コンテンツごとにitem要素で指定する。item要素には、id、href、media-type属性が必須。
  • spine要素には、コンテンツを読む順番を指定する。

HelloWorld.xhtmlファイルは電子書籍の内容そのもの。HTML5で記述。

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html>
<html xmlns=”http://www.w3.org/1999/xhtml”
lang=”en”
xml:lang=”en”>
<head>
<title>HelloWorld</title>
</head>
<body>
HelloWorld!
</body>
</html>

取りあえずこれだけでEPUB3仕様の電子書籍になる。
はずでしたが・・・・