はじめてのEPUB:その3 メタデータについて
一度書きかけの記事を吹っ飛ばして以来、更新が止まっていましたが、気を取り直して続きです。
今回は、文書のメタデータについて扱ってみます。
EPUBでは、メタデータはOPFファイル内にあるmetadata要素に記述することになっています。ただし、実際に記入するのは、OPFの定義する要素というよりは、Dublin Coreのボキャブラリを使い、さらにOPF独自の属性も追加したり、といった構成になります。Dublin CoreはRDF(Resource Description Framework)などでも使われるので、すでに親しまれている方も多いかと思います。
前回のOPFファイルを少し修正したものを以下に。
<?xml version="1.0"?> <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookID" version="2.0"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>サンプルその3</dc:title> <dc:creator opf:role="aut">高橋征義</dc:creator> <dc:publisher>達人出版会</dc:publisher> <dc:subject>EPUB</dc:subject> <dc:subject>電子書籍</dc:subject> <dc:subject>HOWTO</dc:subject> <dc:description>EPUBの作り方を、実際に作りながら説明する。</dc:description> <dc:date opf:event="publication">2010-03-27</dc:date> <dc:date opf:event="modification">2010-04-02</dc:date> <dc:identifier id="BookID" opf:scheme="URL">http://example.com/epub/sample/sample3.epub</dc:identifier> <dc:language>ja</dc:language> </metadata> <manifest> <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/> <item id="c001" href="text/content001.xhtml" media-type="application/xhtml+xml"/> <item id="c002" href="text/content002.xhtml" media-type="application/xhtml+xml"/> <item id="c002b" href="text/content002b.xhtml" media-type="application/xhtml+xml"/> <item id="c003" href="text/content003.xhtml" media-type="application/xhtml+xml"/> <item id="c004" href="text/content004.xhtml" media-type="application/xhtml+xml"/> </manifest> <spine toc="ncx"> <itemref idref="c001"/> <itemref idref="c002"/> <itemref idref="c002b" /> <itemref idref="c003"/> <itemref idref="c004"/> </spine> </package>
metadata要素の中身以外は前回のままです。
dc:title、dc:creator要素は前回もありましたが、dc:creator要素を整理して、出版社名はdc:publisher要素を使うようにしてみました。他にも訳者等はdc:contributerを使って記述します。
dc:subject要素は複数あります。このように、いくつかの題材を扱っている場合、並列して書けばよいようです。リーダでもちゃんと認識してくれます。
dc:date要素は、複数ありながらも、event属性を使ってその意味を明示しています。これがどこまでリーダ側で把握してくれるのかは不明です。
ではリーダに読み込ませてみた結果を見てましょう。まずはCalibreです。
ちゃんとそれっぽく表示してますね。日付の表記がアレですが。やはり日付の日本語対応って地味にはまりやすいですね。
続いてStanzaです。
こ、これは……。ちょっと残念すぎる表示です。validateも通ってるし(検証済み)、他のリーダでも問題ないのでこの点に関してはStanzaが壊れてると思いたいところです。
気を取り直してbookwormです。
いい感じですね。最後はibisreaderです。
なんかそっくりですね。いいですけど。
この辺りは各リーダがちゃんと認識してくれる(Stanza以外)ようなので、コンテンツを作る時でも用意しておくとよい項目なのでしょう(Stanza以外)。それにしてもStanza対策はどうしたものか。ちょっと困りものです。