ePub中的mimetype、container.xml、content.opf和toc.ncx

KuaiKan 1月前 38

mimetype和container.xml

这两个文件在ePub电子书中都是必须要有的文件,必不可少。

mimetype(此文件放在根目录)

它的内容较为简单,仅对压缩包的打开方式进行了说明,其文件内容为「application/epub+zip」,表示出版物的压缩包文档可以用epub和zip两种方式来进行解析使用。实事上ePub格式的出版物将扩展名由.epub改为.zip后,可以使用相应的解压缩软件解压或打开,并且不影响文件内容。此文件在Sigil中创建一本书时,软件会自动生成。

container.xml(此文件在META-INF文件夹下)

ePub阅读系统首先解析和查看该文件,<rootfile>标签代码里指明了包文件的文件名、路径和媒体类型,其中full-path="..."指定了包文档的文件名和路径,可根据实际修改。默认包文件名为content.opf。

container.xml
  
<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
   <rootfiles>
        <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
   </rootfiles>
</container>

container.xml文件存放在META-INF文件夹下。该文件同样由Sigil创建,制作者不需要做任何处理。

content.opf(此文件在OEBPS文件夹里)

每个ePub都有一个单一的包文件,它的扩展名必须.opf,内部文件格式采用XML标准,通过包文件可以准确识别整个数字出版物的结构及阅读顺序,是解析出版物及显示ePub出版物的主要信息来源。包文件放置在名为「OEBPS」的文件夹下,导航文件及其他媒体文件同样存储在此文件夹中(例如书籍内容文本、CSS样式表、图像音频等)。

我们先来看一下content.opf里的内容(部分)

<?xml version="1.0" encoding="utf-8"?>
<package version="2.0" unique-identifier="BookId" 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:identifier>978-7-5470-0865-2</dc:identifier>
    <dc:title>刘备不是传说</dc:title>
    <dc:creator>剑眉枉凝</dc:creator>
    <dc:language>zh</dc:language>
    <meta name="Sigil version" content="0.9.9" />
    <dc:date opf:event="modification" xmlns:opf="http://www.idpf.org/2007/opf">2018-02-25</dc:date>
    <dc:identifier opf:scheme="UUID" id="BookId">urn:uuid:8206bd5c-7d4c-4317-8f0a-2b8cbac49791</dc:identifier>
  </metadata>
  <manifest>
    <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
    <item id="cover.xhtml" href="Text/cover.xhtml" media-type="application/xhtml+xml"/>
    <item id="cover.jpg" href="Images/cover.jpg" media-type="image/jpeg"/>
    <item id="Section0001.xhtml" href="Text/Section0001.xhtml" media-type="application/xhtml+xml"/>
    <item id="Section0002.xhtml" href="Text/Section0002.xhtml" media-type="application/xhtml+xml"/>
                      ……
                      ……
    <item id="Section0113.xhtml" href="Text/Section0113.xhtml" media-type="application/xhtml+xml"/>
    <item id="Section0114.xhtml" href="Text/Section0114.xhtml" media-type="application/xhtml+xml"/>
    <item id="Style0001.css" href="Styles/Style0001.css" media-type="text/css"/>
    <item id="biaoti.png" href="Images/biaoti.png" media-type="image/png"/>
    <item id="xiaoyu.png" href="Images/xiaoyu.png" media-type="image/png"/>
    <item id="tno4.png" href="Images/tno4.png" media-type="image/png"/>
    <item id="tno3.png" href="Images/tno3.png" media-type="image/png"/>
    <item id="tno2.png" href="Images/tno2.png" media-type="image/png"/>
    <item id="tno1.png" href="Images/tno1.png" media-type="image/png"/>
    <item id="tno5.png" href="Images/tno5.png" media-type="image/png"/>
    <item id="copyright.xhtml" href="Text/copyright.xhtml" media-type="application/xhtml+xml"/>
    <item id="tno6.png" href="Images/tno6.png" media-type="image/png"/>
    <item id="tno7.png" href="Images/tno7.png" media-type="image/png"/>
    <item id="note.png" href="Images/note.png" media-type="image/png"/>
  </manifest>
  <spine toc="ncx">
    <itemref idref="cover.xhtml"/>
    <itemref idref="copyright.xhtml"/>
    <itemref idref="Section0001.xhtml"/>
    <itemref idref="Section0002.xhtml"/>
                   ……
    <itemref idref="Section0112.xhtml"/>
    <itemref idref="Section0113.xhtml"/>
    <itemref idref="Section0114.xhtml"/>
  </spine>
  <guide>
  </guide>
</package>

  package标签

  <package>是包文件的根标签,它封装出版物元数据和资源信息。

  <package>标签有versionunique-identifierdiridprefixxml:lang等六个属性,其中versionunique-identifier是必须定义的。version属性值表明ePub文件所采用ePub规范的版本,unique-identifier属性值设定了对文件内<dc:identifier>标签的引用,以获取作品的唯一标识符,如UUID、DOI、ISBN 或ISSN等。

  <package>标签内按照顺序依次包含<metadata><manifest><spine><guide>等四个标签。其中<metadata>、<manifest>和<spine>三个为必备的标签。<metadata>标签提供出版物基本信息和内容布局的显示信息,便于检索书目信息和访问控制。

  metadata标签

  <metadata>标签是用来储存电子书元数据的,简要介绍以下几种属性:

  • language:中文版Sigil默认使用的zh-CN(简体中文),可以根据图书的语言自己修改;

  • title:电子书的标题,一般指书名;

  • author:电子书的作者;

  • date:事件日期,可以设置三个内容。creation(制作日期,制作该电子书的日期)、modification(软件会自己记录最新的修改日期)、publication(出版日期,纸质出版物的出版日期);

  • identifier:识别符,在Sigil中创建一个ePub文件时,会自动生成一个识别符——UUID;也可以再增加一个ISBN属性用来记录纸质书的国际标准书号,如果有的话;

  • subject:主题词或关键字;

  • description:电子书的内容介绍;

  • contributor:贡献者或其它次要责任者;

  • source:图书资源或素材的来源;

  • rights:版权描述;

以上信息可以在Sigil的「元数据编辑器」中直接添加。

  manifest标签

  <manifest>标签提供出版物内容资源的列表,每一个资源由一个<item>标签来表示。在Sigil中,该信息由软件自动生成,不需要制作者再修改。需要说明的是,<manifest>标签里<item>的顺序不重要。

content.opf中的<manifest>信息(部分):

<manifest>
    <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
    <item id="cover.xhtml" href="Text/cover.xhtml" media-type="application/xhtml+xml"/>
    <item id="cover.jpg" href="Images/cover.jpg" media-type="image/jpeg"/>
    <item id="Section0001.xhtml" href="Text/Section0001.xhtml" media-type="application/xhtml+xml"/>
    <item id="Section0002.xhtml" href="Text/Section0002.xhtml" media-type="application/xhtml+xml"/>
    <item id="Section0003.xhtml" href="Text/Section0003.xhtml" media-type="application/xhtml+xml"/>
                     ……
                     ……
    <item id="Section0114.xhtml" href="Text/Section0114.xhtml" media-type="application/xhtml+xml"/>
    <item id="Style0001.css" href="Styles/Style0001.css" media-type="text/css"/>
    <item id="biaoti.png" href="Images/biaoti.png" media-type="image/png"/>
    <item id="xiaoyu.png" href="Images/xiaoyu.png" media-type="image/png"/>
    <item id="tno4.png" href="Images/tno4.png" media-type="image/png"/>
    <item id="tno3.png" href="Images/tno3.png" media-type="image/png"/>
    <item id="tno2.png" href="Images/tno2.png" media-type="image/png"/>
    <item id="tno1.png" href="Images/tno1.png" media-type="image/png"/>
    <item id="tno5.png" href="Images/tno5.png" media-type="image/png"/>
    <item id="copyright.xhtml" href="Text/copyright.xhtml" media-type="application/xhtml+xml"/>
    <item id="tno6.png" href="Images/tno6.png" media-type="image/png"/>
    <item id="tno7.png" href="Images/tno7.png" media-type="image/png"/>
    <item id="note.png" href="Images/note.png" media-type="image/png"/>
  </manifest>

  id表示文件的ID号;href指文件的路径信息;media-type指文件的媒体类型。

  spine标签

  ePub的一个关键概念是人或者程序可按某种特定的顺序对构成出版物的多个资源进行完全导航和加以使用。

  许多出版物都有明显的阅读顺序或遍历内容的逻辑进程。一本小说是高度顺序化文件的例子,它通常有开始、中间和结尾。但不是所有的出版物都这样有序:一本烹饪书或影集可能被认为是更像数据库的。然而,所有文件在顶级内容项都至少有一个逻辑顺序,不论是按照日期、主题、地点或一些其它标准(例如,烹饪书通常是按照菜谱类型排列)。

  <spine>标签的toc属性内容必须与<manifest>标签列出来的id="ncx"一致。<spine>标签提供书出版物内容资源的顺序列表,通过<itemref>子标签的顺序定义默认阅读顺序。content.opf中的阅读顺序(部分):

<spine toc="ncx">
    <itemref idref="cover.xhtml"/>
    <itemref idref="copyright.xhtml"/>
    <itemref idref="Section0001.xhtml"/>
                  ……
    <itemref idref="Section0113.xhtml"/>
    <itemref idref="Section0114.xhtml"/>
  </spine>

  guide标签

  content.opf内容文件的最后一部分是<guide>标签,<guide>可以为ePub阅读系统提供语义信息。(一般情况下,epub电子书中的该元素对你阅读无影响。epub电子书可以不用该元素。)OPF2的<guide>标签被废弃了,代之以nav.xhtml的landmarks特性。为了向前兼容ePub 2阅读系统,制作者可以在包文件里包括<guide>标签。

  在Sigil软件中,打开「图书浏览器」窗口,选择Text文件夹下的网页文件,根据网页的内容选择相应的语义,步骤:选择要添加语义的网页,然后点击鼠标右键,选择「添加语义」菜单项,从语义列表中选择相应的条目。增加语义的内容文档,会在guide标签中显示如下(示例):

<guide>
   <reference type="cover" title="封面" href="Text/Cover.xhtml"/>
   <reference type="foreword" title="前言" href="Text/Foreword.xhtml"/>
</guide>

  以下代码显示了链接的cover.xhtml、Copyright.xhtml、Foreword.xhtml文件所代表的结构语义:

<nav epub:type="landmarks" id="landmarks" hidden="">
<h1>Landmarks</h1>
<ol>
<li><a epub:type="toc" href="#toc">目录</a></li>
<li><a epub:type="cover" href="../Text/Cover.xhtml">封面</a></li>
<li><a epub:type="copyright-page" href="../Text/Copyright.xhtml">版权页</a></li>
<li><a epub:type="foreword" href="../Text/Foreword.xhtml">前言</a></li>
</ol>
</nav>

  在ePub 3标准中,当你为XHTML文件添加结构语义之后,可以在nav.xhtml文件中,查看landmarks属性(如上)。关于epub:type属性,看这里。

toc.ncx(同上,也在OEBPS文件夹)

  ncx文件是epub电子书的又一个核心文件,用于制作电子书的目录,其文件的命名通常为toc.ncx。

  NCX的<head>标记中包含四个meta标签:

  • uid:数字图书的惟一ID。该标签应该和OPF文件中的dc:identifier对应。

  • depth:反映目录表中层次的深度。

  • totalPageCount和maxPageNumber:仅用于纸质图书,保留0即可。

以上内容了解即可,因为这些个文档文件在用sigil制作电子书的时候sigil软件会自动生成。

最新回复 (0)
返回