epub電子書--目錄結構介紹
epub電子書簡介
epub全稱為Electronic Publication的縮寫,意為:電子出版, epub於2007年9月成為國際數位出版論壇(IDPF)的正式標準,以取代舊的開放Open eBook電子書標準,epub這種格式kindel目前不支援, 必須用相應的軟體開啟,比如PC端用calibre,(calibre可是kindle的好夥伴, 可以用來整理或者同步kindle的書架), 如下圖:
或者用 Adobe Digital Edition(這個軟體很小,解析純文字的epub就好, js和css沒有良好的支援)。
或者安裝firefox瀏覽器的外掛EPUBReader, 如下圖:
chrome瀏覽器的外掛Readium也可以用來開啟epub檔案(但是要FQ到google的應用中心去下載, 聽新聞說谷歌2016年要回歸了);
等各種方式開啟...
修改epub檔案的作者書名等相關資訊
epub檔案用壓縮軟體開啟以後直接可以看到原始碼, 所以這種格式的電子書開放性非常好, 我們可以更改它的原始碼, 比如你下載了了一本為“Rabbit, Run”epub書, 原來這本書的介紹是這樣的,
通過更改epub的配置檔案opf,我改了作者和書名, 再重新打包成epub檔案, 變成這樣了, 感覺自己萌萌噠是不是:
epub電子書的內部結構
epub格式電子書遵循IDPF推出的OCF規範,OCF規範遵循ZIP壓縮技術,即epub電子書本身就是一個ZIP檔案,我們將epub格式電子書的字尾.epub修改為.zip後,可以通過解壓縮軟體(例如winrar、winzip)進行瀏覽或解壓處理。一個未經加密處理的epub電子書以三個部分組成,其檔案結構如下圖所示:
1、檔案:mimetype
每一本epub電子書均包含一個名為mimetype的檔案,且內容不變,用以說明epub的檔案格式。檔案內容如下:
application/epub+zip
(註釋,表示可以用epub工具和ZIP工具開啟)
2、目錄:META-INF
依據OCF規範,META-INF用於存放容器資訊,預設情況下(即加密處理),該目錄包含一個檔案,即container.xml,檔案內容如下:
<?xml version="1.0"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container>
container.xml的主要功能用於告訴閱讀器,電子書的根檔案(rootfile)的路徑和開啟放式,一般來講,該container.xml檔案也不需要作任何修改,除非你改變了根檔案的路徑和檔名稱。
除container.xml檔案之外,OCF還規定了以下幾個檔案:
(1)[manifest.xml],檔案列表
(2)[metadata.xml],元資料
(3)[signatures.xml],數字簽名
(4)[encryption.xml],加密
(5)[rights.xml],許可權管理對於epub電子書而言,這些檔案都是可選的。
3、目錄:OEBPS
OEBPS目錄用於存放OPS文件、OPF文件、CSS文件、NCX文件, OEBPS這個名字是可變的,可以根據containter.xml進行配置。
OPF文件是epub電子書的核心檔案,且是一個標準的XML檔案,依據OPF規範,主要由五個部分組成:
例項XML程式碼:
<?xml version="1.0" encoding="UTF-8" ?> <package version="2.0" unique-identifier="PrimaryID" xmlns="http://www.idpf.org/2007/opf"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title> nono書名 </dc:title> <dc:identifier opf:scheme="ISBN"> </dc:identifier> <dc:language> zh-CN </dc:language> <dc:creator> nono </dc:creator> <dc:publisher> epub掌上書苑 </dc:publisher> <dc:description> </dc:description> <dc:coverage> </dc:coverage> <dc:source> http://www.cnepub.com </dc:source> <dc:date> 2015-11-26 </dc:date> <dc:rights> 本電子書由epubBuilder製作生成,歡迎訪問http://www.cnepub.com分享交流海量電子書。 epubBuilder僅供交流使用,未經授權,不得用於商業用途。 </dc:rights> <dc:subject> 專業書籍 </dc:subject> <dc:contributor> </dc:contributor> <dc:type> [type] </dc:type> <dc:format> </dc:format> <dc:relation> </dc:relation> <dc:builder> epubBuilder </dc:builder> <dc:builder_version> 3.1.08.28 </dc:builder_version> <meta name="cover" content="cover-image" /> </metadata> <manifest> <!-- Content Documents --> <item id="main-css" href="css/main.css" media-type="text/css" /> <item id="coverpage" href="coverpage.html" media-type="application/xhtml+xml"/> <item id="chapter1" href="chapter1.html" media-type="application/xhtml+xml"/> <item id="ncx" href="fb.ncx" media-type="application/x-dtbncx+xml" /> <item id="css" href="css/main.css" media-type="text/css" /> <item id="cover-image" href="images/cover.jpg" media-type="image/jpeg"/> </manifest> <spine toc="ncx"> <itemref idref="coverpage" linear="yes" /> <itemref idref="chapter1" linear="yes" /> </spine> <guide> <reference type="cover" title="封面" href="coverpage.html" /> </guide> </package>View Code
1、<metadata>,元資料資訊的組成有兩種 (1)dc-metadata和 (2)x-metadata:
<dc-metadata>,其元素構成採用dubline core(DC)的15項核心元素,包括: <title>:題名 <creator>:責任者 <subject>:主題詞或關鍵詞 <description>:內容描述 <contributor>:貢獻者或其它次要責任者 <date>:日期 <type>:型別 <format>:格式 <identifier>:識別符號 <source>:來源 <language>:語種 <relation>:相關資訊 <coverage>:履蓋範圍 <rights>:許可權描述 <x-metadata>,即擴充套件元素。如果有些資訊在上述元素中無法描述,則在此元素中進行擴充套件。
2、<menifest>,檔案列表,由於列出OEBPS文件及相關的文件,有一個子元素構成,
<item id="" href="" media-type="">,該元素由三個屬性構成:
id:表示檔案的ID號
href:檔案的相對路徑
media-type:檔案的媒體型別
例如:
<manifest> <item id="main-css" href="css/main.css" media-type="text/css" /> <item id="coverpage" href="coverpage.html" media-type="application/xhtml+xml"/> <item id="chapter1" href="chapter1.html" media-type="application/xhtml+xml"/> <item id="ncx" href="fb.ncx" media-type="application/x-dtbncx+xml" /> <item id="css" href="css/main.css" media-type="text/css" /> <item id="cover-image" href="images/cover.jpg" media-type="image/jpeg"/> </manifest>
3、<spine toc="ncx">,脊骨,其主要功能是提供書籍的線性閱讀次序。由一個子元素構成:
<itemref idref="">,由一個屬性構成:idref:即參照menifest列出的ID
例項程式碼:
<spine toc="ncx"> <itemref idref="coverpage" linear="yes"/> <itemref idref="chapter1" linear="yes"/> </spine>
4、<guide>,指南,依次列出電子書的特定頁面, 例如封面、目錄、序言等, 屬性值指向檔案儲存地址。一般情況下,epub電子書可以不用該元素。
例項程式碼:
<guide> <reference type="cover" title="封面" href="coverpage.html"/> </guide>
5、<tour>,導讀。可以根據不同的讀者水平或者閱讀目的, 按一定次序, 選擇電子書中的部分頁面組成導讀。一般情況下,epub電子書可以不用該元素。
ncx檔案是epub電子書的又一個核心檔案,用於製作電子書的目錄,其檔案的命名通常為toc.ncx。
ncx檔案是一個XML檔案,該標準由DAISY Consortium釋出(參見http://www.daisy.org)。
<?xml version='1.0' encoding='utf-8' ?> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1"> <head> <meta content="coay_307750" name="dtb:uid" /> <meta content="2" name="dtb:depth" /> <meta content="COAY.COM [http://www.coay.com]" name="dtb:generator" /> <meta content="0" name="dtb:totalPageCount" /> <meta content="0" name="dtb:maxPageNumber" /> </head> <docTitle> <text> 《再窮也要去旅行》 </text> </docTitle> <docAuthor> <text> 黃愛琳 </text> </docAuthor> <navMap> <navPoint class="chapter" id="article_307750_1" playOrder="1"> <navLabel> <text> Chapter_1 </text> </navLabel> <content src="article_307750_1.html" /> </navPoint> <navPoint class="chapter" id="article_307750_2" playOrder="2"> <navLabel> <text> Chapter_2 </text> </navLabel> <content src="article_307750_2.html" /> </navPoint> <navPoint class="chapter" id="article_307750_3" playOrder="3"> <navLabel> <text> Chapter_3 </text> </navLabel> <content src="article_307750_3.html" /> </navPoint> <navPoint class="chapter" id="article_307750_4" playOrder="4"> <navLabel> <text> Chapter_4 </text> </navLabel> <content src="article_307750_4.html" /> </navPoint> <navPoint class="chapter" id="article_307750_5" playOrder="5"> <navLabel> <text> Chapter_5 </text> </navLabel> <content src="article_307750_5.html" /> </navPoint> </navMap> </ncx>
NCX 和 OPF spine 有什麼不同?
兩者很容易混淆,兩者的區別:
opf檔案用來描述電子書章節的順序, 比如:第一章後是第二章,第二章後是第三章....
ncx檔案用來描述電子書的目錄結構, 就是紙質書的目錄;
一條法則是 ncx包含的 navPoint 元素通常比 OPF spine 中的 itemref 元素多。實際上,spine 中的所有項都會出現在 ncx中,但 ncx可能更詳細。
epub文件結構描述的有關部落格和知識:
後記:
打包epub書籍時候一定要把資料夾打包成zip格式, 然後把檔案字尾zip改為epub就可以開啟( zip格式和rar格式並不是一樣的,雖然他們都是壓縮格式);
感想:
今天去上了韓國popper -- hozin大師的課, 技術上沒有什麼長進, 但是也知道hozin為poppin付出了那麼多, 8歲開始學舞,12歲開始學習poppin, 到現在已經跳了18年了, 他研究樂器, 他研究如何用身體表達各種音樂, 一個鼓點在他腦袋裡面有5,6種表達方式, 他也說韓國賺錢不好賺, 中國比較好賺錢,有學生問他中國和韓國poppin的區別, 他期間也說道:韓國popper很認真, 經常白天上課或者白天上班, 晚上有人跳舞, 跳到4,5點, 他以前一天都是練習12小時的,現在少了, 他很謙虛, 很認真, 我想人和人的區別就在這兒: 多堅持一點。
很多牛逼的人又那麼低調 one day -- -- matisyahu。