この記事ではEPUB 3.3 (https://www.w3.org/TR/epub-33/) のパッケージ文書について説明します。
基本
EPUB文書は少なくとも1つのパッケージ文書を含んでいる必要があります。複数のパッケージ文書を持っている場合は https://www.w3.org/TR/epub-multi-rend-11/ で規定されているメカニズムによってパッケージ文書を使い分けることができます。
パッケージ文書の名前は任意ですが、拡張子には.opf
(Open Packaging Format) を使うことが多いようです。パッケージ文書を配置するフォルダーも (META-INF
の外であれば) どこでも構いません。
パッケージ文書の概形は大抵次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf"
xmlns:dc="http://purl.org/dc/elements/1.1/"
version="3.0" unique-identifier="pub-id">
<metadata> <!-- [...] --> </metadata>
<manifest> <!-- [...] --> </manifest>
<spine> <!-- [...] --> </spine>
</package>
-
version
(必須) の値は (EPUB 3規格のマイナーバージョンによらず)3.0
です -
unique-identifier
(必須) の値は後述のdc:identifier
のIDです -
metadata
とmanifest
とspine
(すべて必須) はこの順番である必要があります
metadata
metadata
には書誌情報などのメタデータが記述されます。メタデータの記述にはDublin CoreやEPUB独自の語彙が使われます。
<metadata>
<dc:title>サンプル電子書籍</dc:title>
<dc:language>ja-JP</dc:language>
<dc:identifier id="pub-id">
urn:uuid:d2ba8739-4bf9-4ab3-80de-a43aec20f2ac
<!-- or urn:isbn:XXX-XXX-X-XXXXX-X -->
</dc:identifier>
<meta property="dcterms:modified">
2024-07-20T03:00:00Z
</meta>
<!-- [...] -->
</metadata>
- 名前空間
http://purl.org/dc/elements/1.1/
に属する語彙はmetadata
直下に直接記述されます - 名前空間
http://purl.org/dc/terms/
に属する語彙はmeta
要素を使って記述されます - 必須メタデータは次の4つです
dc:identifier
dc:title
dc:language
dcterms:modified
- その他の語彙については以下のページを参照してください
manifest
manifest
では書籍に含まれるすべてのリソースが列挙され、メディアタイプが関連付けられます。ここで列挙されていないリソースへのアクセスは拒否される可能性があります。
<manifest>
<item id="toc-main" href="toc/main.xhtml" media-type="application/xhtml+xml"
properties="nav"/>
<item id="preface-main" href="preface/main.xhtml" media-type="application/xhtml+xml"/>
<item id="preface-illust" href="preface/illust.png" media-type="image/png"/>
<!-- [...] -->
</manifest>
-
id
、href
、media-type
は必須です -
properties
に記述できる語彙は以下の通りです (https://www.w3.org/TR/epub-33/#app-item-properties-vocab)名前 説明 cover-image
表紙 mathml
MathMLを含むリソース nav
EPUBナビゲーション文書 remote-resources
リモートに存在するリソース scripted
スクリプトを含むリソース svg
SVGを含むリソース
spine
spine
はEPUB内容文書の読書順序を指定します。EPUB内容文書への参照をそれが読まれる順番に列挙します。
<spine page-progression-direction="ltr">
<itemref idref="toc-main"/>
<itemref idref="preface-main"/>
<!-- [...] -->
<itemref idref="notes-main" linear="no"/>
</spine>
-
page-progression-direction
はページ送りの方向を指定します - 通常の読書順序から外れているリソース (注釈や解答例など) は
linear
の値をno
に設定します -
properties
にEPUB内容文書のプレゼンテーションに関する情報を記述することができます (https://www.w3.org/TR/epub-33/#app-rendering-vocab)