OPF Package Document
是一个格式良好的 XML 1.0 文档;
UTF-8 或 UTF-16 编码;
可以通过
Appendix A 中的 XML Schema 验证;
可以由一个或者多个 XML 文件组成,但是只有一个文件可以以 .opf 作为扩展名;
OPF Package Document 的 media-type 是 application/oebps-package+xml。
OPF Publication
包含一个 OPF Package Document;
带 .opf 扩展名的那个 Package Document 必须作为 Package Document 的根文件(root file);
包含且只包含一个 manifest 元素,该元素中包含许多 item 元素,每个元素对应 OPS Publication 中的一个文件,但 OPF Package Document 文件本身不包含其中;
spine 元素中列出的每个文件都必须遵守
OPS Content Document requirements
每个 item 元素指明了文件所属的 MIME mdeia type,OPS Core Media Types:
http://idpf.org/epub/20/spec/OPS_2.0.1_draft.htm#Section1.3.7;
必须包含一个 UTF-8 或者 UTF-16 编码的 NCX 文件;
metadata 元素中必须包含至少1个 identifier, title 和 language 元素;
根元素 package 的 unique-identifier 属性必须是正确的某个 identifier 元素的 id;
任何 creator 和 contributor 元素的 OPF role 属性的扩展值必须取自
MARC Relator Code 列表或者以 oth. 开头;
任何 guide 元素的 type 属性的扩展值必须以 other. 开头;
package 元素的 version 属性必须是 2.0;
package 元素的 namespace 必须是:http://www.idpf.org/2007/opf,而且必须声明在 OPF Package Document 的根部;
(fallback? 是啥)
Dublin Core Metadata
metadata 中必须包含至少一个 identifier, title 和 language 元素,并且至少有一个 identifer 被 package 的 unique-identifier 引用;
Dublin Core 没有为 Metadata 定义任何属性,In the above example, the specification of the OPF namespace on the metadata element is present to resolve the scheme and role attributes used in the identifier and creator elements, respectively.
规范没有定义如何选择最恰当的那个 title 元素作为标题显示,你可以根据可用的字体、title 元素的 xml:lang 属性或者其它方法试探。如果没有这样的一个算法,阅读系统可以把第一个 title 元素,或者所有的 title 元素当作最适当的标题;
creator 元素用于标示出版物的主要创建者或者作者,其它次要的贡献者使用 contributor 元素。每个作者使用一个 creator 元素。定义的顺序即显示的顺序。opf:file-as 属性是格式对机器友好的姓名,如:
<dc:creator opf:file-as="King, Martin Luther Jr." opf:role="aut">
Rev. Dr. Martin Luther King Jr.
</dc:creator>
creator 的显示和 title 一样,但是在没有选择算法的情况下,阅读系统要显示出所有的 creator 姓名,使用适当的空格和 / 或者标点。
subject, description, publisher 元素,没有具体的规范;
contributor 次要贡献者,阅读系统可以选择不显示或显示 contributor 信息。跟 creator 一样,contributor 也有 role 和 file-as 属性。其中 role 属性必须是小写字母。
date 元素的格式定义:
http://www.w3.org/TR/NOTE-datetime。如果不带时间信息,格式必须为:YYYY-MM-DD,其中月份和具体的日期是可选的。date 元素有一个可选的 OPF event 属性,具体的值没有在规范中作出限制,可能出现的值有:creation, publication, 和 modification.
type, format 没有具体的规范,最佳实践是从某一个受约束的词汇表中选值,例如 MIME media types;
identifier 元素有一个可选的 OPF schema 属性,用于给生成 identifier 的系统或者权威机构命名,例如:"ISBN", "DOI"。
Spine
itemref 的 linear 属性默认为 "yes",表示该内容为 EPUB 当中的主要(primary)内容,为 "no" 时表示该内容为次要(auxiliary)内容。It is important that the publication author include some kind of internal reference, such as a hypertext link, to any OPS Content Document that is declared to be auxiliary; it is recommended that references be added to NCX for all auxiliary content. 至少有1个 itemref 必须声明为 primary。Reading Systems may use "next-page" style functionality when moving from one primary OPS Content Document to the next primary one in spine. 例子:
<manifest>
<item id="intro"
href="intro.html"
media-type="application/xhtml+xml" />
<item id="c1"
href="chap1.html"
media-type="application/xhtml+xml" />
<item id="c1-answerkey"
href="chap1-answerkey.html"
media-type="application/xhtml+xml" />
<item id="c2"
href="chap2.dtb"
media-type="application/x-dtbook+xml" />
<item id="c2-answerkey"
href="chap2-answerkey.html"
media-type="application/xhtml+xml" />
<item id="c3"
href="chap3.html"
media-type="application/xhtml+xml" />
<item id="c3-answerkey"
href="chap3-answerkey.html"
media-type="application/xhtml+xml" />
<item id="note"
href="note.html"
media-type="application/xhtml+xml" />
<item id="f1"
href="fig1.jpg"
media-type="image/jpeg" />
<item id="f2"
href="fig2.jpg"
media-type="image/jpeg" />
<item id="f3"
href="fig3.jpg"
media-type="image/jpeg" />
<item id="ncx"
href="toc.ncx"
media-type="application/x-dtbncx+xml" />
</manifest>
<spine toc="ncx">
<itemref idref="intro" />
<itemref idref="c1" />
<itemref idref="c1-answerkey" linear="no" />
<itemref idref="c2" />
<itemref idref="c2-answerkey" linear="no" />
<itemref idref="c3" />
<itemref idref="c3-answerkey" linear="no" />
<itemref idref="note" linear="no" />
</spine>
spine 元素必须有一个 toc 属性,值为 NCX document 在 manifest 中声明的 id 值。
分享到:
相关推荐
OPF (Open Packaging Format) 转换工具,支持 epub 和 mobi 格式文件。目前只支持繁体到简体的转换 (欢迎提交 patch 加入其他转换模式)。 使用方法 $ git clone https://github.com/jjgod/opf-cc.git $ cd opf-cc $ ...
首先,解析过程通常从读取OPF(Open Packaging Format)文件开始,这是一个XML文件,包含了关于EPUB包的所有元数据,如书名、作者、出版社等,以及文件的内部结构。通过DOM(Document Object Model)或SAX(Simple ...
它支持解码EPUB的OPF(OPF打包文件)和NCX(导航内容表)文件,这是EPUB文件中定义书籍结构的关键部分。 2. **内容处理**:类库可以处理EPUB中的HTML、CSS、图像和其他媒体文件,确保它们能够在目标平台上正确显示...
"OPF"是“最优潮流”(Optimal Power Flow)的缩写,这是一个数学优化问题,旨在在满足电力系统物理约束和安全运行条件的同时,最小化运行成本或最大化某些性能指标。在给定的“opf.rar”压缩包中,包含了一个MATLAB...
解压后,你可以访问到Epub的核心组件,如OPF(Open Package Format)文件和NCX(Navigation Control File for XML)文件。 OPF文件是Epub的元数据存储地,包含了书籍的标题、作者、章节信息等。解析OPF文件通常需要...
首先,Epub文件本质上是一个ZIP压缩包,包含了多个组成部分,如OPS(Open Package Structure)文件夹,包含了书籍的主要内容,OPF(Open Package Format)文件,它是元数据和内容目录的容器,以及NCX(Navigation ...
1. **文件结构解析**:Epub阅读器首先需要解析Epub文件的OPF(Open Package Format)文件,这是Epub的核心元数据文件,包含书籍的信息如标题、作者、内容目录等。此外,NCX(Navigation Control Document)文件用于...
1. **内容解析**:epub.js 能够解析 EPUB 文件的结构,包括 OPF(Open Packaging Format)文件,从中获取元数据和内容目录,以及 NCX(Navigation Container eXtension)或 TOC(Table of Contents)文件,用于构建...
这里我们关注的是三个关键的标准,这些标准在压缩包中的文件名称已经给出:OEBPS Container Format 1.0、Open Publication Structure (OPS) 2.0 v1.0以及Open Packaging Format (OPF) 2.0 v1.0。这些都是电子书和...
EPUB电子书基于OPF(Open Packaging Format)和OPS(Open Publication Structure)标准。其基本结构包括一个容器文件(container.xml)、元数据文件(metadata.opf)、样式表(CSS)以及内容文件(主要是HTML)。...
OPF(Open Packaging Format)文件是EPUB的核心组成部分之一,它使用XML格式定义书籍的结构和内容。OPF文件主要包括以下元素: - **package**:定义了OPF文件的基本属性,如版本号、名称空间等。 - **metadata**:...
EPUB是一种基于XML的文件格式,包含一个OPF(Open Package Format)文件,用来描述元数据,如书名、作者、出版日期等;多个内容文件,通常为HTML格式,包含书籍的实际文本;以及CSS样式文件和图像资源。dotnet-Epub...
EPUB是一种开放标准的电子书格式,广泛应用于数字出版领域,它允许书籍内容以结构化的XML文档形式存储,并通过OPF(Open Package Format)和OPS(Open Publication Structure)进行组织。Epublib库使得在Java应用中...
EPUB文件主要由三部分组成:OPF(OPS Package File)文件,这是元数据和内容目录的容器;OPF文件引用的OPS(Open Packaging Structure)文件,包括HTML、CSS、图像和其他媒体资源;以及NCX(Navigation Control ...
例如,FB2格式通常使用XML,而EPUB则是基于OPF(Open Package Format)的ZIP文件。 2. **文本渲染**:FBReaderJ包含了高效的文本渲染引擎,能够优化不同屏幕尺寸和分辨率下的显示效果。它可能使用了如FreeType库来...
- **XML解析**:EPUB中的内容是以OPF(Open Package Format)和NCX(Navigation Control File)等XML文件存储的,需要解析这些文件以获取书籍信息和导航结构。 - **CSS渲染**:EPUB内容通常包含CSS样式,用于定义...
1. `epublib-core.jar`:这是核心库,包含了处理EPUB文件的基本功能,如解析OPF和NCX文件,提取文本内容和资源等。 2. `tika-core.jar`:Tika是Apache的一个项目,它提供了对各种多媒体类型的内容解析。Epublib依赖...
EPUB文件通常包含XML文件、CSS样式表、图片和其他多媒体资源,以及一个OPF(OPF Package File)文件,它是一个XML文件,记录了电子书的元数据信息和文件结构。此外,还有NCX(Navigation Control File for XML)或...