epub电子书--目录结构介绍

转载:https://www.cnblogs.com/diligenceday/p/4999315.html

阅读目录

修改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>

  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基础知识介绍

  epub格式电子书剖析之一:文档构成 

  DC(Dublin Core)数字图书馆中使用的一组简单的包括15个“核心元素”的元数据元素集合

  OCF( Open Container Format )规范

  OPF(Open Packaging Format)开放包装格式( 开放包装格式(OPF)2.0 v1.0 )

 

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值