(2)パッケージドキュメント(opfファイル)

(2)パッケージドキュメント(opfファイル)
OSBPS直下に、パッケージドキュメントcontent.opfファイルがあることがmanifest.xmlで記載されています。
content.opfファイルは、たとえば、次のようになっています。

-------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="ja"
unique-identifier="book-id">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:identifier id="book-id">
urn:uuid:4d0a72f0-f26e-b20f-f937-5c327937561b
</dc:identifier>
<dc:title id="title">こんにちは世界</dc:title>
<meta refines="#title" property="title-type">main</meta>
<meta refines="#title" property="file-as">こんにちわせかい</meta>
<dc:title id="subtitle">電子書籍入門</dc:title>
<meta refines="#title" property="title-type">subtitle</meta>
<dc:creator id="creator">鷲田豊明</dc:creator>
<meta refines="#creator" property="file-as">わしだとよあき</meta>
<dc:language>ja</dc:language>
<meta property="dcterms:modified">2013-11-22T22:27:04Z</meta>
<dc:subject>文学、フィクション</dc:subject>
<meta name="ネット書房TONBO" content="1.0.1" />
</metadata>
<manifest>
<!-- manifest start -->
<item id="text.nav.xhtml" href="text/nav.xhtml"
media-type="application/xhtml+xml" properties="nav" />
<item id="style.nsepub.css" href="style/nsepub.css" media-type="text/css" />
<item id="style.nav.css" href="style/nav.css" media-type="text/css" />
<item id="text.hello.tonbo" href="text/hello.tonbo"
media-type="application/xhtml+xml" />
<!-- manifest end -->
</manifest>
<spine page-progression-direction="rtl">
<!-- spine start -->
<itemref idref="text.nav.xhtml" linear="yes" />
<itemref idref="text.hello.tonbo" linear="yes" />
<!-- spine end -->
</spine>
</package>
-------------------------------------------------------

このcontent.opfファイルは、ユーザーが直接書き換えられないようになっています。

弊社のTONBOの場合は、ユーザーがファイルを加えたり、文章を変更したり、カバーをつけたり、設定を変えたりするたびに、このcontent.opfファイルの中身を自動的に書き換えますので、いちいちユーザーが書き換えなくてもよいことになっています。逆に、ユーザーがこのファイルを書き換えると、TONBOは、このファイルを書き換えられなくなってしまうので、ユーザーの書き換えを禁止しているのです。万が一、このcontent.opfファイルと、ユーザーの実際に編集している内容の整合性がとれなくなったら、tonboテキストファイルや画像ファイルなどを全て別な形で保存して、最初から作り直さなければならなくなります。

このcontent.opfファイルも、xmlファイルとして書かれていますが、xmlファイルは、基本的に、
<名前 属性>値</名前>
という構造(タグ)の形で、データないしは情報を表現するものだと理解してください。
第1行目は、特殊で、このファイルがxmlファイルであること、そのバージョン、文字コードが示されていているものです。それ以下が、実際のxmlファイルの内容になっています。
第2行目は、名前がpackageであることが示されていています。そして、この情報の終わりである、/packageはopfファイルの最後にありますから、packageという名前に関する値が、このファイルの内容の全てであることがわかります。
packageの属性には、xmlnsという記述がありますが、これは「名前空間:name space」といって、このpackageの中に入っている名前が、他のシステムの名前と混同しないように区別するための記述です。
version特性は、このファイルがepubのバージョン3.0で記載されていることを示しています。
lang属性は、ja、すなわち日本語を基本とすることを示しています。
unique-identifier属性には、この電子書籍を他の電子書籍から区別するユニークなIDがpackageの中の、book-idという属性をもったタグで与えられていることを示しています。
以上を前提に、package の中身を見てみましょう。package には、直下に、metadata、manifest、spineという名前をもった三つのタグ/情報があることがわかるでしょう。