epub3文件就是一个符合epub3标准,以epub为扩展名的zip压缩文件。epub3标准则是基于html5、css3、svg等web标准以及mathML等来展示内容。下图就是一个简单epub3文件的大致结构。

  

  epub3规范使用OCF(open container format)标准规定的文件结构,根目录当中必须有一个mimetype文件和一个META-INF文件夹。其中,mimetype文件中只有一个行内容application/epub+zip,而META-INF中存放的则是表述整个文档的元数据。在META-INF文件夹内必须有一个container.xml文件(除该文件以后,标准还定义了一些可选文件,用于处理加密、混淆字体等问题)用来描述文档内容。container.xml的内容比较简单,下面是一个container.xml文件的例子:

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

  在epub3标准当中,rootfile的full-path所指定的opf文件,是一个xml文件,用于描述文档内容(默认的阅读顺序,出版物信息,作者、标题等,资源文件信息等)。这里已经涉及到了两处用来描述文档内容的文件,需要明确的是META-INF/container.xml文件使是用来描述一个符合open container format规范的文件的具体内容的,任何采用该规范的文件都必须包含这个xml文件,而一个符合epub3标注的文件除了该文件以外还需要一个opf文件来描述关于epub3文档的具体内容。下面是一个opf文件的例子:

<?xml version="1.0" encoding="UTF-8"?>

<package xmlns="http://www.idpf.org/2007/opf" version="3.0" unique-identifier="id">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
...
</metadata>
<manifest>
<item href="css/epub.css" id="css01" media-type="text/css"/>
...
</manifest>
<spine toc="ncx">
...
</spine>
</package>

  其中的metadata标签用来描述一些文档的基本信息,如作者、标题等。manifest节点则用来陈列文档的相关的资源,spine的节点用来设置默认的阅读顺序。

  以上描述的就是一个epub3文件的大致结构,一个真正的epub3文件要比以上所描述的内容复杂的多。

epub3 in action: epub3文件格式简介的更多相关文章

  1. HDR文件格式简介及其读写函数

    转自:http://blog.csdn.net/lqhbupt/article/details/7828827 1.HDR简介HDR的全称是High-DynamicRange(高动态范围).在此,我们 ...

  2. Contextual Action bar(2) 简介,启动,各函数介绍

    一.Context Action Bar简介 它是一个ActionBar,有各种操作项,但它不是始终显示的ActionBar,它需要上下文才显示.样式如下: 二.Context Action Bar的 ...

  3. YAML文件格式简介

    一.yaml简介   yaml是一种用来写配置文件的序列化语言,跟json有些像,yaml又称作json的超集,yaml的设计则是为了友好可读性,主要用于配置信息的书写,而json设计的目的则是为了简 ...

  4. HDF5 文件格式简介

    三代测序下机的原始数据不再是fastq格式了,而是换成了hdf5 格式,在做三代数据的分析之前,有必要先搞清楚hdf5 这种文件格式; 官网的链接如下:https://support.hdfgroup ...

  5. 26、HDF5 文件格式简介

    转载:庐州月光 http://www.cnblogs.com/xudongliang/p/6907733.html 三代测序下机的原始数据不再是fastq格式了,而是换成了hdf5 格式,在做三代数据 ...

  6. 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)

    上一章聊到在车联网或物联网中对数据库的需求,以及 IoTDB 的整体架构,详情请见: 时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 ...

  7. Spring in Action --- 第一章 简介

    简化java开发 基于POJO的轻量级和最小入侵性编程 通过依赖注入和面向接口实现松耦合 基于切面和管理进行声明式编程 通过切面和模板减少样板式代码 bean的生命周期 Spring对bean进行实例 ...

  8. .yaml 文件格式简介

    命名 YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)的缩写. 功能 YAML的语法和其他高阶语言类似,并且可以简单表达清单. ...

  9. Action 语法的简介

    https://www.cnblogs.com/LipeiNet/p/4694225.html https://www.cnblogs.com/Gyoung/archive/2013/04/04/29 ...

随机推荐

  1. HTML5之图像处理

    --- 内嵌图像 - drawImage可以绘制图像context.drawImage(image,dx,dy)context.drawImage(image,dx,dy,dw,dh)context. ...

  2. svn 项目转移

    http://www.cnblogs.com/techMichaelLee/p/3193197.html (参考) svnadmin dump /home/svn/project > /home ...

  3. hdu 2594 Simpsons’ Hidden Talents KMP应用

    Simpsons’ Hidden Talents Problem Description Write a program that, when given strings s1 and s2, fin ...

  4. 关于Mysql数据库longblob格式数据的插入com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V问题分析

    当数据库字段为blob类型时 ,我们如果使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法需要注意 在向blob字段类型中插入数据时 ...

  5. javascript debut trick, using the throw to make a interrupt(breakpoint) in your program

    console.log('initialize'); try { throw "breakPoint"; } catch(err) {} when I debug the extj ...

  6. Oracle登陆及修改用户密码

    16:20 2013/7/7 Oracle 登陆 管理员登陆 sqlplus sys/root as sysdba (密码认证)这个root是安装数据库最初你输入的口令 sqlplus     /as ...

  7. Automotive Security的一些资料和心得(7):AUTOSAR和Security

    1. 密码模块[1] 密码模块在Services Layer Configurable and common access to 密码子程序 硬件支持密码模块 2. 应用 应用和密码子程序分离 Cry ...

  8. C#如何控制方法的执行时间,超时则强制退出方法执行

    转自:http://outofmemory.cn/code-snippet/1762/C-how-control-method-zhixingshijian-chaoshi-ze-force-quit ...

  9. Tomacat服务器的安装和配置

    一, Tomcat服务器的下载地址(Apache Tomcat的官网):  http://tomcat.apache.org/download-70.cgi 这里为了稳定性安装的版本为7.0. 截止目 ...

  10. C++ new operator, delete operator, operator new, operator delete, new placement

    http://www.younfor.com/cpp-new-placement-new-operator-new.html http://www.cnblogs.com/luxiaoxun/arch ...