epub3文件就是一个符合epub3标准,以epub为扩展名的zip压缩文件。epub3标准则是基于html五、css三、svg等web标准以及mathML等来展现内容。下图就是一个简单epub3文件的大体结构。css
epub3规范使用OCF(open container format)标准规定的文件结构,根目录当中__必须__有一个mimetype文件和一个META-INF文件夹。其中,mimetype文件中只有一个行内容<code>application/epub+zip</code>,而META-INF中存放的则是表述整个文档的元数据。在META-INF文件夹内必须有一个container.xml文件(除该文件之后,标准还定义了一些可选文件,用于处理加密、混淆字体等问题)用来描述文档内容。container.xml的内容比较简单,下面是一个container.xml文件的例子:html
<?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文件的例子:html5
<?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的节点用来设置默认的阅读顺序。css3
以上描述的就是一个epub3文件的大体结构,一个真正的epub3文件要比以上所描述的内容复杂的多。web