zoukankan      html  css  js  c++  java
  • 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文件(但是要翻墙到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基础知识介绍

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

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

      OCF( Open Container Format )规范

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

      后记:

        打包epub书籍时候一定要把文件夹打包成zip格式, 然后把文件后缀zip改为epub就可以打开( zip格式和rar格式并不是一样的,虽然他们都是压缩格式); 

      感想:

        今天去上了韩国popper -- hozin大师的课, 技术上没有什么长进, 但是也知道hozin为poppin付出了那么多, 8岁开始学舞,12岁开始学习poppin, 到现在已经跳了18年了, 他研究乐器, 他研究如何用身体表达各种音乐, 一个鼓点在他脑袋里面有5,6种表达方式, 他也说韩国赚钱不好赚, 中国比较好赚钱,有学生问他中国和韩国poppin的区别, 他期间也说道:韩国popper很认真, 经常白天上课或者白天上班, 晚上有人跳舞, 跳到4,5点, 他以前一天都是练习12小时的,现在少了, 他很谦虚, 很认真,  我想人和人的区别就在这儿: 多坚持一点。

        很多牛逼的人又那么低调 one day  -- --  matisyahu。

      

    作者: NONO
    出处:http://www.cnblogs.com/diligenceday/
    QQ:287101329 

  • 相关阅读:
    多表关联查询(ORACLE版)
    开发中可能会用到的几个 jQuery 小提示和技巧 (转)
    让jquery easyui datagrid列支持绑定嵌套对象
    java图片处理工具类
    如何为Myeclipse手工添加dtd支持
    二进制与运算
    彻底卸载MYSQL,windows版
    Win7系统安装MySQL5.5.21图解教程
    Rust 资源整理
    【译】我的阅读习惯
  • 原文地址:https://www.cnblogs.com/diligenceday/p/4999315.html
Copyright © 2011-2022 走看看