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