Hatena::ブログ(Diary)

このブログは証明できない。

2010-07-17

[]Kindle形式で目次を表示する。epubとの違い。

元気ですかー!?私は寝不足気味なので、元気ですかー!?などと聞かれるとウザイです。一昨日書いた記事が大反響ですね。こんな私でも世の中の役に立ってよかったです。生きててよかったです。


上の記事で、目次が使えないと書いていました。やっと原因がわかりました。epubの場合、toc.ncxファイルを読んで目次として使ってくれます。一方、Kindle形式では、目次もHTMLで作らなければならないようです。content.opfで、作った目次を指定します。

<guide>
  <reference href="cover.html" type="cover" title="Cover"/>
  <reference href="toc.html" type="toc" title="Table of Contents"/>
</guide>

さて、困りました。オライリーiPhoneアプリから取り出したepubには、目次のHTMLファイルが入っていません。自力で作らなければなりません。toc.ncxを見てみると、スクリプトを書けばHTMLを生成できそうです。チキンラーメンを自力で作っている私ならできます。

<navPoint id="id2906151" playOrder="32">
  <navLabel>
    <text>1. Getting Started</text>
  </navLabel>
  <content src="ch01.html"/>
  <navPoint id="id2906177" playOrder="33">
    <navLabel>
      <text>Your Haskell Environment</text>
    </navLabel>
    <content src="ch01.html#starting_ghc"/>
  </navPoint>
  <navPoint id="id2899376" playOrder="34">
    <navLabel>
      <text>Getting Started with ghci, the Interpreter</text>
    </navLabel>
    <content src="ch01s02.html"/>
  </navPoint>

これをHTMLにすればOK。




って書いておけば、誰かがスクリプトを書いて公開してくれるはず。

名無し名無し 2010/07/18 02:42 $ cat ncx2html.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/ncx:ncx">
<html>
<body>
<h1><xsl:value-of select="ncx:docTitle/ncx:text"/>: Contents</h1>
<p>
<xsl:if test="ncx:navMap/ncx:navPoint">
<ul>
<xsl:apply-templates select="ncx:navMap/ncx:navPoint"/>
</ul>
</xsl:if>
</p>
</body>
</html>
</xsl:template>

<xsl:template match="ncx:navPoint">
<li>
<a href="{ncx:content/@src}">
<xsl:value-of select="ncx:navLabel"/>
</a>
<br/>
<xsl:if test="ncx:navPoint">
<ul>
<xsl:apply-templates select="ncx:navPoint"/>
</ul>
</xsl:if>
</li>
</xsl:template>

</xsl:stylesheet>

$ xsltproc -o toc.html ncx2html.xsl toc.ncx

yabukiyabuki 2010/07/20 11:18 書いて公開しました。
http://www.unfindable.net/~yabuki/blog/2010/07/600kindle.html

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証