《EPUB 3.0规范》之2/5:《 出版物》

EPUB Publications 3.0
规范(推荐),2011年10月11日,版权所有©:IDPF™
目录

Overview 概述

Purpose and Scope 目的与范围

本节是说明信息

本规范,即EPUB出版物3.0规范,为EPUB®3定义出版级语义和合规要求,包括包文件格式、以及该文件与其它出版物资源为了创建一个合规的EPUB出版物该如何进行关联的规则。

本规范是构成EPUB3的一组相关规范中的一个,EPUB3是用于以XML和Web标准为基础的数字出版物进行交换和传递格式的第三次重大修订。它的阅读、理解不能离开构成EPUB3的其它规范:

  •      EPUB 3.0 概述 EPUB3Overview),提供关于EPUB的信息概述以及到其它三个EPUB文件的路线图。应首先阅读EPUB3概述。
  •      EPUB 3.0 开放容器格式(OCF)( OCF3),为了封装一组相关的资源到一个单一文件(ZIP)的EPUB容器,对格式和处理模型进行定义。

本规范取代开放包格式2.0.1。请参阅 EPUB3Changes了解本规范及其前身之间的差异。

Terminology 术语

EPUB Publication,EPUB出版物

包含一组相关 资源且打包在 EPUB容器的逻辑文件实体,由本规范及其 EPUB3 配套规范定义。

Publication Resource,出版物资源

包含内容或指示的资源,用于EPUB出版的逻辑和渲染。缺了这些资源,出版物的处理有可能不是作者所打算的。出版物资源的例子有包文件(Package Document)、EPUB内容文件(Content Documents)、 EPUB 样式表(Style Sheets)、音频、视频、图像、嵌入字体和脚本 。

除了包文件本身,出版物资源都应该列在manifest,且必须——除非在 Publication Resource Locations另有规定——捆束在EPUB容器文件。

不是出版物资源的资源例子包括: Package Document link元素所指定的,以及在向外打开的超链接里指定、在EPUB容器外面落实的资源
(例如,由 HTML5 a元素的href属性引用的)。

Foreign Resource,外来资源

核心媒体类型之外的资源。外来资源至少需要一个fallback(备选方案),定义见 Restrictions and Fallbacks

Core Media Type Resource,核心媒体类型资源

核心媒体类型的出版物资源,可以不加fallbacks就放入EPUB出版物。

EPUB Content Document,EPUB内容文件

符合EPUB内容文件定义之一( XHTML SVG)的出版物资源。
EPUB内容文件是核心媒体类型资源,因此可以不加 fallbacks就放入EPUB出版物。

XHTML Content Document,XHTML内容文件

符合 HTML5描述,定义在 XHTML Content Documents的EPUB内容文件。

XHTML内容文件使用 HTML5 XHTML syntax语法。

SVG Content Document,SVG内容文件

符合 SVGContent Document里所列明之限制的EPUB内容文件。

EPUB Navigation Document,EPUB导航文件

专门的XHTML内容文件,内含人、机可读的全球导航信息,符合 EPUB Navigation Documents里面所写的限制。

Scripted Content Document,脚本内容文件

包含脚本的EPUB内容文件,或包含 HTML5 forms元素的XHTML内容文件。

更多信息请参 Scripted Content Documents

Top-level Content Document,顶级内容文件

直接由spine引用的EPUB内容文件

Core Media Type,核心媒体类型

一组不需要fallback的 Publication Resource类型。更多信息请参 Publication Resources

Package Document,包文件

Package Documents所定义,带有关于EPUB出版物的书目、结构元数据的出版物资源。

Manifestation,布置

知识内容著作的数字(物理)体现。对内容所作的诸如重要更改、节选、翻译、或者是将内容按照另一种电子或物理形式加以实现,都会导致一个新的布置 (manifestation)。一个布置可以有许多个体化、却相同的副本,称之为实例(instances)或项(items)。ISBN(国际标准书 号)就是一个布置(manifestation)识别符例子,它为此布置的所有实例所共享。
一个布置(manifestation)的不同实例没必要逐字逐句都相同,原因是不为小修小改产生新的布置或作品。

Unique Identifier,唯一识别符

唯一识别符是EPUB出版物的主要识别符,由unique-identifier属性所定义. 唯一识别符可以为同一个作品的一个或多个Manifestations所共有。它们符合EPUB标准、且体现同样的内容。不同布置之间的差异仅限于那些为了照顾不同的阅读系统EPUB Reading Systems之间的差异而做的改变。 (不同的阅读系统的差异本身可能需要修改ISBN)。
唯一识别符比ISBN粗线条。然而,对内容的显著修改、删节等等需要新的独特识别符。

Package Identifier,包识别符

包识别符允许EPUB出版物的任何实例能够和其它的相对比,以确定它们是否完全相同,还是同一个布置的不同版本,抑或不相干。
更多信息请参Package Identifier。

Manifest,仓单

构成EPUB出版物的所有出版物资源列表。
更多信息请参 Manifest

Spine,脊柱

出版物资源的有序列表,代表出版物的默认阅读顺序,EPUB内容文件就是典型。

Media Overlay Document,媒体叠加文件

属于XML文件,它把XHTML内容文件与事先录制的旁白声频相关联,以便同步播放,定义在 MediaOverlays30

Text-to-Speech (TTS),文本到语音

使用合成声音对EPUB出版物的文本内容进行处理。

EPUB Style Sheet (or Style Sheet),EPUB样式表

是符合 EPUB Style Sheets所定义的CSS样式表。

Viewport,视口

EPUB阅读系统的一个区域,通过它EPUB出版物可视化地呈现给用户。

CSSViewport,CSS视口

能够显示CSS样式内容的视口。

EPUB Container (or Container),EPUB容器

用于EPUB出版(Publication)、基于ZIP的打包与发行格式,定义在 OCF3.

Author,作者

负责生成EPUB出版物的人或组织,不一定是所含内容或资源的创作者。

User,用户

使用EPUB阅读系统消费EPUB出版物的个体。

EPUB Reading System (or Reading System),EPUB阅读系统

按照与EPUB3本规范及其相关规范相符的方式将EPUB出版物呈现给用户的系统。

合规声明

本文件的关键字”MUST”、”MUST NOT”、”REQUIRED”、”SHALL”、”SHALL NOT”、”SHOULD”、”SHOULD NOT”、”RECOMMENDED”、”MAY”和”OPTIONAL”(“必须”,“不可”,“要求”,“应该”,“不要”,“应该”,“不应该”,“推荐”,“可能”,和“可选”)应该按照 RFC2119的描述进行解读。。

本规范的所有章节,除标有“本节为说明内容”的,都是规范性的。给章节、附录加的说明状态适用于它们包含的所有内容和小节。

本规范的所有例子都是说明性质的。

EPUB Publication EPUB出版物

本节为EPUB出版物和EPUB阅读系统定义出版物级别的合规要求。具体出版物资源的合规要求以及内容的处理,位于本节引用的规范。

内容合规条件

一个EPUB出版物必须满足以下所有指标:

所有的出版资源

它包含的所有出版资源都必须在包文件里加以列明(按照 manifest里面的定义),符合对核心媒体类型和备选的约束( constraints for Core Media Types and Fallback),并按照 出版物资源位置(Publication Resource Locations)的规定加以定位。

包文件

它必须包含正好一个包文件,符合 Package Document — Content Conformance定义的内容要求。

内容文件

它必须至少包含一个EPUB内容文件,与定义在 EPUB Content Documents的内容要求相符。

EPUB导航文档

它必须至少包含一个EPUB导航文件,与定义在 EPUB Navigation Documents — Content Conformance的内容要求相符。

EPUB的样式表

它可能包含零个或多个EPUB的样式表,与定义在 EPUB Style Sheets — Content Conformance的内容要求相符。

EPUB语音词典

它可能包含零个或多个PLS文件,与定义在 PLS Documents — Content Conformance的内容要求相符。

媒体叠加文件

它可能包含零个或多个媒体叠加文件,与定义在 Media Overlay Documents的内容要求相符。

额外的出版资源

除了上面列出的,它可能还包含零个或更多的出版资源,其中每一个必须符合 All Publication Resources的要求。

容器

它必须按照 OCF3的定义打包在一个EPUB容器里面。

Reading System Conformance 阅读系统合规条件

一个阅读系统必须满足以下所有指标:

EPUB3处理

注意:建议阅读系统至少支持H.264和VP8视频编解码器其中的一个,但是这不作为合规的要求。
内容创作者和阅读系统开发人员在决定按照某个(或二个)格式来采用或实施视频的时候,应考虑带宽、播放质量、技术使用版税要求等因素。

向后(Backward)兼容

应该按照 OPF2 OPS2 OCF2定义的处理EPUB2出版物。
必须对版本低于3,或没有版本号的所有出版物包尝试进行处理。

向前兼容

必须对版本高于3,或没有版本号的所有出版物包尝试进行处理。

XML处理

必须是 conformant non-validating processor(合规的非验证处理器) XML

必须是按照 XMLNS定义的合规处理器( conformant processor);

必须支持xml-stylesheet处理指令 ASSOCSS,有可能支持其它的处理指令;

必须是由 XML Base定义的合规应用。

注意:一个合规的阅读系统不必是一个专门的程序或设备,但可以作为一个发布的系统存在。

Package Documents 包文件

引言

本节是说明性的

包文件携带关于EPUB出版物的书目和结构方面的元数据,因此是如何处理和显示出版物信息的主要来源。

包文件是一个由一组容器元素组成的XML文档,每个元素用来放置关于出版物某一方面的信息。这些容器把出版物的元数据有效地集中起来、落实组成它的个体资源、向用户提供阅读顺序和渲染出版物的其它信息。

下面的清单小结包文件所含的信息:

  • 出版物元数据(Publication metadata)——元数据的收录和/或引用机制,适用于整个出版物和其内的特定资源;
  • 出版物仓单(Publication manifest)——确定(通过IRI)和描述(通过MIME媒体类型)共同组成出版物的一组资源;
  • 脊柱(spine)——对顶级资源引用的ID序列,通过它可以访问或利用组中所有其它资源。spine 定义出版物的默认阅读顺序。
  • 备选链(fallback chains)—— 为出版物定义顶级资源有序列表的备选措施,可以看作是阅读系统能够选来用于渲染的内容等价物。
  • 绑定(bindings)—— 将基于脚本的实施与常用媒体类型进行关联的可选手段。

内容合规要求

一个包文件必须满足以下所有指标:

文件(Document)属性

它必须满足在 XML Conformance里为XML文档定义的合规约束;

它必须适用于包文件方案 Appendix A, Package Document Schema, 并符合 Package Document Definition里列出的关于内容合规的全部约束。

文件(File)属性

包文件的文件名应该使用.opf扩展名。

包文件具有MIME媒体类型application/oebps-package+xml RFC4839

阅读系统合规条件

阅读系统必须满足下来指标:

处理

它对包文件的处理必须与 Package Document Definition里说明的所有约束相一致。

包文件定义

除非另外有说明,本节定义的所有元素 [XML]都在http://www.idpf.org/2007/opf 命名空间 [XMLNS]。

package元素

package元素是包文件的根容器,它封装出版物元数据和资源信息。

元素名称

package

用法
package元素是包文件的根容器。

属性

version (要求)

指定出版物所符合的EPUB规范版本。

属性必须有3.0的值以表明满足本规范。

unique-identifier(要求)

指定dc:identifier元素的IDREF XML,提供包的优先或首要识别符。

详情请看 Publication Identifiers

prefix (可选)

本规范没有保留对前缀的声明机制。

详情请看 The prefix Attribute

xml:lang(可选)

指定使用内容的语言和运载元素以及子元素的属性值,见 XML的2.12节的定义 Language Identification

dir (可选)

指定内容的基本文本方向和运载元素以及子元素的属性值。

Unicode确定的固有方向优先级高于本属性。

许可值为ltr(从左到右)或rtl(从右到左)。

id (可选)

本元素的ID XML,在全文内部必须唯一。

内容模式

按照这个次序: metadata(要求), manifest(要求), spine(要求), guide(可选/弃用), bindings(可选)

metadata元素

metadata元素封装出版物元数据信息。

元素名称

metadata

用法

package要求的第一个子元素。

属性

本规范没有定义metadata元素的属性。

内容模式:

按如下次序: dc:identifier (1或多个),dc:title(1或多个), dc:language (1或多个) DCMES Optional Elements (0或多个), meta (1或多个), OPF2 meta(0或多个), link (0或多个)

要求出版物必须包含的最少元数据,其构成是 DCMES(Dublin Core Metadata Element Set)的三个元素—— title, identifier language——以及 DCTERMS(DCMI Metadata Terms)的 modified属性。一个最小元数据组、但完整的出版物实例请看节尾的 例子

另外的可选元数据使用 DCMES optional elements meta元素加以表达。

例子:

下面的例子是所有出版物必须包含的最小元数据组。
<XML>
<package … unique-identifier=”pub-id”>

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:identifier id=”pub-id”>urn:uuid:A1B0D67E-2E81-4DF5-9E67-A64CBE366809</dc:identifier>
<dc:title>Norwegian Wood</dc:title>
<dc:language>en</dc:language>
<meta property=”dcterms:modified”>2011-01-01T12:00:00Z</meta>
</metadata>

</package>
</XML>

DCMES identifier元素

DCMES的identifier元素含有与EPUB出版物相关的单个识别符,例如:UUID、DOI、ISBN或ISSN。

元素名称

dc:identifier

命名空间

http://purl.org/dc/elements/1.1/

用法

metadata要求的子元素,可重复。

属性

id (可选)
本元素的ID XML,必须全文唯一。
id是包含唯一识别符的identifier元素所要求的。见下文。

内容模式:

文本

每个metadata段都必须含有至少一个identifier元素,元素内含出版物明确的标识符。允许使用多重identifier元素,但只有一个可以通过package元素的 unique-identifier属性标记为 Unique Identifier(唯一识别符)

下面的例子说明出版物的唯一识别符元素。
<XML>
<package … unique-identifier=”pub-id”>

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:identifier id=”pub-id”>urn:uuid:A1B0D67E-2E81-4DF5-9E67-A64CBE366809</dc:identifier>

</metadata>

</package>
</XML>

本规范把EPUB出版物的唯一标识符与唯一指定其某个版本的标识符加以区分(即,能够区分相同 Manifestation(布置)EPUB出版物的不同版本)。一个EPUB的两个字字相同的拷贝是同一个版本,必须保留相同的 last modified date(最后修改日期)。如果他们不是字字相同的,就是不同的版本,必须有不同的最后修改日期。

要确定一个打包出版物的特定版本,可以通过结合唯一识别符和最后修改日期的方法构造一个包标识符( Package Identifier)。版本之间的变化可包括小的排版或标记修改,而不影响唯一标识符。生成了新版本的显著内容修改,则需要改变唯一标识符。关于包标识符的语义和要求的详细信息,请参阅 Package Identifier

除了必须至少一个字符长度,本规范对标识符没有加其它的限制或要求。不过,还是强烈建议让所有的标识符都是完全合格的URI。

阅读系统在处理元素值之前,必须按照XML规范的定义去掉值前后的空白。

要确定一个identifier是否符合某个建立的系统,或者已获发行人的许可,阅读系统应该解析属性的值。如果从这个值不能确定构造,或可能导致模糊的结果,作者可以通过加 identifier-type属性来增加精度,以便于阅读系统识别。加过之后,identifier-type属性优先级高于identifier解析值。

下面的例子说明怎样利用identifier-type属性把identifier另标为一个DOI。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:identifier id=”pub-id”>urn:doi:10.1016/j.iheduc.2008.03.001</dc:identifier>
<meta refines=”#pub-id” property=”identifier-type” scheme=”onix:codelist5″>06</meta>

</metadata>

本规范不要求或背书各标识符必须使用何种具体的构造,也不在属性定义之外对identifier-type标识符强加限制或要求。

当EPUB出版物来自另一个出版物的时候,源出版物的标识符可以放在出版物的元数据,而且必须用 DCMES source元素加以表明。

DCMES title元素

DCMES的title元素代表为EPUB出版物命名的实例。

元素名称

dc:title

命名空间

http://purl.org/dc/elements/1.1/

用法

metadata要求的子元素,可重复。

属性

id(可选)

本元素的ID XML,必须全文唯一。

xml:lang(可选)

XML的2.12节 Language Identification所定义的,为内容、为携带元素及子元素的属性值指定语言。

dir(可选)

为内容、为携带元素及子元素的属性值指定基本文本方向。

本属性让位于使用 Unicode确定的固有方向。

许可值为ltr(从左到右)或rtl。

内容模式:
文本

每个metadata部分都必须有一个含有出版物名称的title元素。允许有多个title元素,但要 附上title-type 属性以指明title的类型(例如,作品的主标题、小标题等等)。

下面的例子说明如何指明各种不同的标题。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:title id=”t1″>A Dictionary of Modern English Usage</dc:title>
<meta refines=”#t1″ property=”title-type”>main</meta>

<dc:title id=”t2″>First Edition</dc:title>
<meta refines=”#t2″ property=”title-type”>edition</meta>

<dc:title id=”t3″>Fowler’s</dc:title>
<meta refines=”#t3″ property=”title-type”>short</meta>

</metadata>

当添加title-type属性的时候,作者应该只将一个title元素指定为包含出版物的主标题。如果没有提供确定标题类型的手段,或是不理解,阅读系统将第一个title元素作为主标题。在此情况下,本规范没有定义如何处理其它的title元素。

可选的display-seq属性也可以添加给每个title,用于指定它们的显示优先级和其它渲染效果。

下面的例子说明如何指明显示顺序。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:title id=”t1″>The Red and the Black</dc:title>
<meta refines=”#t1″ property=”title-type”>main</meta>
<meta refines=”#t1″ property=”display-seq”>1</meta>

<dc:title id=”t2″>A Chronicle of the Nineteenth Century</dc:title>
<meta refines=”#t2″ property=”title-type”>subtitle</meta>
<meta refines=”#t2″ property=”display-seq”>2</meta>

<dc:title id=”t3″>A Chronicle of 1830</dc:title>
<meta refines=”#t3″ property=”title-type”>subtitle</meta>
<meta refines=”#t3″ property=”display-seq”>3</meta>

</metadata>

除了必须至少一个字符长度,本规范对于标题没有强加另外的限制或要求。

阅读系统在处理元素值之前,必须按照XML规范中定义的去掉值前后的空白。

例子

下面的例子说明如何将标题”THE LORD OF THE RINGS, Part One: The Fellowship of the Ring”分类。
<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:title id=”t1″>The Fellowship of the Ring</dc:title>
<meta refines=”#t1″ property=”title-type”>main</meta>

<dc:title id=”t2″>The Lord of the Rings</dc:title>
<meta refines=”#t2″ property=”title-type”>collection</meta>
<meta refines=”#t2″ property=”group-position”>1</meta>

<dc:title id=”t3″>THE LORD OF THE RINGS, Part One: The Fellowship of the Ring</dc:title>
<meta refines=”#t3″ property=”title-type”>extended</meta>

</metadata>

下面的例子显示如何分类复杂标题”The Great Cookbooks of the World: Mon premier guide de cuisson, un Mémoire. The New French Cuisine Masters, Volume Two. Special Anniversary Edition”

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:title id=”t1″ xml:lang=”fr”>Mon premier guide de cuisson, un Mémoire</dc:title>
<meta refines=”#t1″ property=”title-type”>main</meta>
<meta refines=”#t1″ property=”display-seq”>2</meta>

<dc:title id=”t2″>The Great Cookbooks of the World</dc:title>
<meta refines=”#t2″ property=”title-type”>collection</meta>
<meta refines=”#t2″ property=”display-seq”>1</meta>

<dc:title id=”t3″>The New French Cuisine Masters</dc:title>
<meta refines=”#t3″ property=”title-type”>collection</meta>
<meta refines=”#t3″ property=”group-position”>2</meta>
<meta refines=”#t3″ property=”display-seq”>3</meta>

<dc:title id=”t4″>Special Anniversary Edition</dc:title>
<meta refines=”#t4″ property=”title-type”>edition</meta>
<meta refines=”#t4″ property=”display-seq”>4</meta>

<dc:title id=”t5″>The Great Cookbooks of the World:
Mon premier guide de cuisson, un Mémoire.
The New French Cuisine Masters, Volume Two.
Special Anniversary Edition</dc:title>
<meta refines=”#t5″ property=”title-type”>extended</meta>

</metadata>

DCMES language元素

DCMES的language元素定义出版物的语言。

元素名称

dc:language

命名空间

http://purl.org/dc/elements/1.1/

用法

metadata要求的子元素。

属性

id (可选)

本元素的ID XML,必须全文唯一。

内容模式

文本

每个metadata部分都必须有至少一个language元素,其值符合 RFC5646

下面的例子表示出版物是美式英语。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:language>en-US</dc:language>

</metadata>

对多国文字的出版物,可以有另外的language元素,但是每个元素的值必须符合 RFC5646

阅读系统在处理元素值之前,必须按照XML规范中的定义去掉值前后的空白。

DCMES 的可选元素

DCMES元素组除前面定义的identifier、language和title之外的所有其它元素,划定为可选。这些元素全部符合下面的一般规定。

元素名称

contributor | coverage | creator | date | description | format | publisher | relation | rights | source | subject | type

命名空间

http://purl.org/dc/elements/1.1/

用法

metadata的可选子元素,可重复。

属性

id (可选)

本元素的ID XML,必须全文唯一。

xml:lang* (可选)

指定使用内容的语言和运载元素以及子元素的属性值,见 XML的2.12节定义 Identification

dir* (可选)

指定内容的基本文本方向和运载元素以及子元素的属性值。

Unicode确定的固有方向优先级高于本属性。

许可值为ltr或rtl。

内容模式

文本

.* xml:lang和dir属性只允许加于下列元素: contributor, coverage, creator, description, publisher, relation, rights 和subject.

所有的 DCMES可选元素的值必须至少一个字符长度。

阅读系统在处理元素值之前,必须按照XML规范中定义的去掉值前后的空白。

除了下面的,本规范对这些元素的 DCMES 定义不做修改。

DCMES contributor元素

contributor元素用于表示人、机构等的名称,他们对出版物内容的生成起的是次要作用。

contributor元素的使用在所有其它方面和下面描述的creator元素完全一样。

DCMES creator元素

creator元素用于表示人、机构等的名称,他们对出版物内容的生成起的是主要作用。可以为该元素添加role属性,以表示creator在生成内容方面其的作用。

下面的例子说明如何用MARC relators术语把creator表示为作者。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:creator id=”creator”>Haruki Murakami</dc:creator>
<meta refines=”#creator” property=”role” scheme=”marc:relators” id=”role”>aut</meta>

</metadata>

creator元素应该包含作者的名称,因为阅读系统将把它显示给用户。可以添加file-as属性来包括正规化的名称,并且用 alternate-script属性来表示在另外一语言或脚本里的作者名称。

下面的例子说明作者名称的可以用来处理或渲染不同方式。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:creator id=”creator”>Haruki Murakami</dc:creator>
<meta refines=”#creator” property=”role” scheme=”marc:relators” id=”role”>aut</meta>
<meta refines=”#creator” property=”alternate-script” xml:lang=”ja”>村上 春樹</meta>
<meta refines=”#creator” property=”file-as”>Murakami, Haruki</meta>

</metadata>

如果出版物超过一个作者,每个作者应该单独放在creator元素里。作者们名称的渲染顺序应该说明在display-seq属性里。

下面的例子说明如何为creator元素指定显示顺序。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:creator id=”creator01″>Lewis Carroll</dc:creator>
<meta refines=”#creator01″ property=”role” scheme=”marc:relators”>aut</meta>
<meta refines=”#creator01″ property=”display-seq”>1</meta>

<dc:creator id=”creator02″>John Tenniel</dc:creator>
<meta refines=”#creator02″ property=”role” scheme=”marc:relators”>ill</meta>
<meta refines=”#creator02″ property=”display-seq”>2</meta>

</metadata>

如果没有提供作者顺序,阅读系统必须使用creator元素的顺序。

次要贡献人应该使用DCMES的contributor元素。

DCMES date元素

date元素只能够用于定义EPUB出版物的出版日期。出版日期不同于last modified date(最后修改的时间), 后者应该使用 DCTERMS的modified属性。

为了符合EPUB2的阅读系统,date字符串应该符合 Date and Time Formats

下面的例子说明出版物日期。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:date>2000-01-01T00:00:00Z</dc:date>

</metadata>

其它的日期应该用 DCTERMS词汇里面的专门日期属性进行表达。

出版物日期对出版物的所有实例有可能是共同的,也有可能随实例改变(例如,出版物按照需要生成)。

只允许一个date元素。

DCMES source元素

source元素只能够用来指定出版物源的识别符,本EPUB出版物由它而来。

下面的例子说明出版物的ISBN标识符以及它所出源的ISBN标识符。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:identifier id=”isbn-id”>urn:isbn:9780101010101</dc:identifier>
<meta refines=”#isbn-id” property=”identifier-type” scheme=”onix:codelist5″>15</meta>

<dc:source id=”src-id”>urn:isbn:9780375704024</dc:source>
<meta refines=”#src-id” property=”identifier-type” scheme=”onix:codelist5″>15</meta>

</metadata>

source元素允许确定出版物的打印源分页(allows the print source of the pagination of a Publication to be determined)。

只允许一个source元素。

DCMES type元素

type元素用于表明给定的出版物是某个特殊类型(例如:EPUB格式打包的注释或字典)。

不过,本规范不规定该元素的值。开发特殊出版物类型,以及为表达它们而赋予规范的标识符,将独立于本规范。

只允许一个type元素。

meta元素

meta元素提供包含包元数据的一般手段,对包、内容,以及该元数据细化的主元数据进行表达是允许的。

元素名称

meta

用法

metadata的子元素,可重复。

属性

property (要求)
一个属性( property

详情请看词汇关联机制( Vocabulary Association Mechanisms

refines (取决于上下文)

确定由本元素增加的表达或资源。本属性的值必须是相对的IRI RFC3987,指向它所描述的资源或元素。

refines元素视被表达的元数据类型是可选的。如果被省略,meta元素定义主表达式 (primary expression)

id (可选)

本元素的ID XML,必须全文唯一。

scheme(可选)

property数据类型的值,表明元素值所出之源。

内容模式

文本

每个meta元素定义一个metadata表达式,其中property属性定义该表达式里所作的声明,而元素的文本内容表达断言。

本规范定义了两类可以用meta元素来定义的metadata表达式:

  •    主表达式,由meta元素定义的表达式建立EPUB出版物的某个方面。省略掉refines属性的meta元素定义主表达式。
  •    次表达式,由meta元素定义的表达式增加表达式的意义,或其refines属性引用的资源。例如,次表达式可以通过表达一个媒体剪辑的时长来细化它,或通过定义人的角色来细化作者或贡献人。

次表达式不限于细化主表达式和资源;它们可以用来细化其它的次表达式,由此生成信息链。

注意:
所有的 DCMES元素都是主表达式,并且允许用meta元素次表达式进行细化。

本规范为property属性保留了一组词汇 reserves a set of vocabularies,但是任何词汇表的术语,只要是为词汇声明了前缀 prefix is declared,都可以使用。

scheme属性可以用来识别meta元素值取值的系统或方案。

下面的例子说明怎样把subexpression加到creator来指明它代表作者。scheme指明值取自MARC relators术语。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:creator id=”creator”>Haruki Murakami</dc:creator>
<meta refines=”#creator” property=”role” scheme=”marc:relators” id=”role”>aut</meta>

</metadata>

如果不认识scheme的属性值,阅读系统就应该把元素的值处理为字符串。

如果meta元素的property属性定义了阅读系统不认识的表达式,就应该忽略所有的meta元素。遇到不认识的表达式的时候,阅读系统不得崩溃。
为了保证 Package Identifier能够构造,metadata元素必须正好包含一个meta元素,为出版物定义一个 DCTERMSmodified属性。

还可以另外加modified属性,但是它们必须具有不同的主体(也就是说,它们必须包含refines属性,指向某个元素或资源)。

每个meta元素都必须表达一个值,其长度在空格规范化之后至少是一个字符。

除非某个单独属性明确定义空格规范化的算法,阅读系统在进一步处理meta元素值之前,必须按照 XML规范裁剪它们前后的空格。

例子

下面的例子代表一组更完整的、典型的出版物将包含的metadata组。
<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>

<dc:identifier id=”pub-id”>urn:uuid:A1B0D67E-2E81-4DF5-9E67-A64CBE366809</dc:identifier>
<meta refines=”#pub-id” property=”identifier-type” scheme=”xsd:string”>uuid</meta>

<dc:identifier id=”isbn-id”>urn:isbn:9780101010101</dc:identifier>
<meta refines=”#isbn-id” property=”identifier-type” scheme=”onix:codelist5″>15</meta>

<dc:source id=”src-id”>urn:isbn:9780375704024</dc:source>
<meta refines=”#src-id” property=”identifier-type” scheme=”onix:codelist5″>15</meta>

<dc:title id=”title”>Norwegian Wood</dc:title>
<meta refines=”#title” property=”title-type”>main</meta>

<dc:language>en</dc:language>

<dc:creator id=”creator”>Haruki Murakami</dc:creator>
<meta refines=”#creator” property=”role” scheme=”marc:relators” id=”role”>aut</meta>
<meta refines=”#creator” property=”alternate-script” xml:lang=”ja”>村上 春樹</meta>
<meta refines=”#creator” property=”file-as”>Murakami, Haruki</meta>

<meta property=”dcterms:modified”>2011-01-01T12:00:00Z</meta>

</metadata>

下面的例子显示metadata当局发布的一个标识符。

<package version=”3.0″
unique-identifier=”pub-id”
xmlns=”http://www.idpf.org/2007/opf”>
<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:identifier id=”pub-id”>urn:uuid:1234-5678</dc:identifier>
<dc:identifier id=”isbn-id”>urn:isbn:9780101010101</dc:identifier>

<meta refines=”#isbn-id” property=”meta-auth” id=”meta-authority-01″>Metadata Authority Inc.</meta>
<link refines=”#meta-authority-01″ rel=”xml-signature” href=”../META-INF/Signatures.xml#MAI-Signature”/>

</metadata>
</package>

<!– in Signatures.xml –>
<signatures>
<Signature Id=”MAI-Signature” xmlns=”http://www.w3.org/2000/09/xmldsig#”>

</Signature>
</signatures>

meta元素 (OPF2) (废弃)

OPF2定义的meta元素已经废弃、被新的meta元素所取代,但可以加为metadata的备选、可重复子元素,用作向前兼容。

EPUB3阅读系统必须忽略此元素。

link元素

link元素用于关联资源和出版物,比如元数据记录。

元素名称

link

用法

metadata的子元素,可重复。

属性
href (要求)

对资源的绝对或相对IRI引用 RFC3987

rel (要求)

空格隔开的属性值列表。

id(可选)

本元素的ID( XML),必须全文唯一。

refines (可选)

识别本元素添加的表达或资源。本属性的值必须是指向它所描述的资源或元素的相对IRI RFC3987

如果refines元素被省略了,表达式用于整个EPUB出版物。

media-type (可选)

媒体类型 RFC2046,指定本链接所引用的资源类型、格式。

内容模式

metadata元素可以包含0或多个link元素。

link元素的href属性确定资源的位置——在容器文件里可选——rel属性定义资源的性质(即它与定义在refines属性的出版物或属性的关系)。不需要阅读系统获取这些资源的位置。要了解本规范承认的资源类型清单,请参看 Metadata link Properties

link元素的href属性确定的资源不得表达为 manifest里面的item。

link元素引用metadata记录时,如果有冲突,优先级必须给予定义在包文件的metadata元素。

当引用的资源应用到另一个metadata项,可以附上refines可选项(也就是把XML签名 XML DSIG Core附加到一个metadata)。在没有这个属性的时候,资源应用到整个出版物。

如果不认识rel属性所定义的资源关系,阅读系统应该忽略这个link元素。

例子

下面的例子说明link元素用于关联出版物的三个metadata资源:一个ONIX记录、一个XMP记录和一个到信息网页的link。注意,由于foaf不是 预先定义的前缀predefined prefix,使用了metadata扩展机制 metadata extensibility mechanism来联系词汇表。

<package … prefix=”foaf: http://xmlns.com/foaf/spec/”>
<metadata>

<link rel=”onix-record” href=”http://example.org/onix/12389347″/>
<link rel=”xmp-record” href=”http://example.org/xmp/12389347″/>
<link rel=”foaf:homepage” href=”http://example.org/book-info/12389347″ />

</metadata>

</package>

manifest元素

manifest元素为构成EPUB出版物的出版物资源提供一个详细清单,每个资源一个item元素。

元素名称

manifest

用法

package要求的二级子元素,位于metadata之后。

属性

id (可选)

本元素的ID XML,必须全文唯一。

内容模式

一个或多个item元素

注意
本规范支持国际化的资源命名,所有引用出版物资源的元素和属性都接受IRI和它们的值。为了兼容旧的只接受URI的阅读系统,资源名称只限于ASCII字符组。

item元素

item元素表示出版物资源

元素名称

item

用法

metadata的子元素,可重复。

属性

id (要求)

本元素的ID XML,必须全文唯一。

href(要求)

指定本item所描述的出版物资源位置的IRI RFC3987

media-type (要求)

指定本item所描述出版物资源的资源类型、格式 RFC2046

fallback (有条件的要求)

为非核心媒体类型定义备选的IDREF XML
更多信息请看 Manifest Fallbacks

properties (可选)

空格隔开的 property值列表。
本规范的属性组: Manifest item Properties.

media-overlay(可选)

IDREF XML,指定本item所描述资源的 (Media Overlay Document)媒体叠加文件.
更多信息请看 Packaging
内容模式

manifest里面的每个item元素通过自己的href属性提供的IRI指定一个出版物资源。IRI可以是绝对的,也可以是相当的。对相对IRI,阅读系统在把它们变成绝对IRI时,必须用包文件的IRI作为基础。因此产生的绝对IRI在整个manifest范围内必须是唯一的。

所有的出版物资源,不论是EPUB容器所含的,还是远程的,都必须引自manifest。关于具体媒体类型资源的位置要求,请参看 Publication Resource Locations

由item元素指定的出版物资源,必须符合由media-type属性提供的MIME媒体类型推定出来的适用规范。核心媒体类型( Core Media Type Resources)必须使用 EPUB Core Media Types指定的媒体类型。

所有的外来资源 Foreign Resources都必须按照 Restrictions and Fallbacks定义的提供fallback。

所有资源都必须按照 Manifest item Properties里面的定义,通过item元素 properties属性来声明适用的元数据。用nav属性声明正好一个item,作为出版物导航文件( EPUB Navigation Document)。

阅读系统必须忽略所有它们不认识的描述性元数据属性。

manifest不是自引用的:它不能够包含指向包文件自己的item。

注意
manifest里item的次序不重要。内容文件的表达顺序由spine提供。

例子

下面的例子说明只含有核心媒体类型资源的manifest。

<manifest>
<item id=”nav”
href=”nav.xhtml”
properties=”nav”
media-type=”application/xhtml+xml”/>
<item id=”intro”
href=”intro.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c1″
href=”chap1.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c1-answerkey”
href=”chap1-answerkey.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c2″
href=”chap2.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c2-answerkey”
href=”chap2-answerkey.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c3″
href=”chap3.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”c3-answerkey”
href=”chap3-answerkey.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”notes”
href=”notes.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”cover”
href=”./images/cover.svg”
properties=”cover-image”
media-type=”image/svg+xml”/>
<item id=”f1″
href=”./images/fig1.jpg”
media-type=”image/jpeg”/>
<item id=”f2″
href=”./images/fig2.jpg”
media-type=”image/jpeg”/>
<item id=”css”
href=”./style/book.css”
media-type=”text/css”/>
<item id=”pls”
href=”./speech/dict.pls”
media-type=”application/pls+xml”/>
</manifest>

下面的例子说明含有两个外来资源的manifest,因此需要使用 chain mechanism来提供备选内容。fallback链以核心媒体类型结束。
chain mechanism

<manifest>
<item id=”item1″
href=”chap1_docbook.xml”
media-type=”application/docbook+xml”
fallback=”fall1″/>
<item id=”fall1″
href=”chap1.xml”
media-type=”application/z3986-auth+xml”
fallback=”fall2″ />
<item id=”fall2″
href=”chap1.xhtml”
media-type=”application/xhtml+xml”/>

</manifest>


properties属性的使用也可以参考 Manifest item properties的例子。

spine元素

通过定义manifest item引用( references)的序列化清单,spine元素定义出版物内容的默认阅读顺序。

元素名称

spine

用法

package要求的三级子元素,在manifest后面。

属性

id(要求)

本元素的ID XML,必须全文唯一。

toc (可选)

IDREF XML,为manifest定义取代NCX的item。
更多信息请参看 NCX Superseded

page-progression-direction (可选)

出版物内容流动的全局方向。
许可的值所ltr(从左到右)、rtl和default.
当指定值为default的时候,作者不说明优先级,阅读系统可以选择渲染方向。当该属性没有确定的时候,要假定值为default。

内容模式

多个 itemref元素(要求)

spine表示manifest所列出版物资源的有序子集,没有引用的内容项目是有引用项目的补充。

阅读系统必须提供手段按照spine定义的顺序渲染出版物,包括:1)将spine里面的第一个主要(linear=’yes’) item作为出版物主阅读顺序的开始;且,2)按照spine所给的顺序渲染接下来的项目。

注:
尽管page-progression-direction属性设定了出版物的全局流动方向,单个内容文件或内容文件的部分可以覆盖这个设置
(如通过CSS的direction和writing-mode属性)。阅读系统也可以提供覆盖默认方向的机制(例如,允许使用可选样式表的按钮和设置)。

NCX被取代

OPF2里定义的NCX为EPUB的导航文件所取代了。为了向前兼容的目的,EPUB出版物可以包含NCX,但是EPUB3阅读系统必须优选导航文件、舍弃NCX。

注:
由于EPUB2的NCX和EPUB3的导航文件采用不同的机制确定包文件(分别是toc属性和manifest清单里item元素的nav属性),它们可以在EPUB3出版物里不冲突地共存。

itemref元素

spine的itemref子元素表达出版物资源(典型的EPUB内容文件)的顺序列表。itemref元素的次序定义出版物的默认阅读顺序。

元素名称

itemref

用法

spine的子元素,可重复。

属性
idref (要求)

IDREF,定义manifest的item。

linear (可选)

确定引用的内容是否是主内容。
本属性的值必须是yes或no。默认值是yes。

id(可选)

本元素的ID,必须在整个文件范围内部唯一。

properties (可选)

空格隔开的property值列表。
请参看规范定义的属性组: Spine itemref Properties

内容模式

每个itemref元素必须通过它的idref属性引用manifest里的一个item。

每个被引用的manifest的item必须是
a)EPUB内容文件,或
b) 另一个类型的出版物资源,且不论它是核心媒体类型资源还是外来资源,
都必须在其fallback链里包含一个EPUB内容文件。


虽然EPUB出版物里要求有EPUB导航文件,在spine则是可选的。

itemref元素的linear属性说明spine里面所引用的项目被设置为主(yes)还是辅助(no)。本属性可用来使阅读系统把主体内容的表达从辅助内容区分开来。例如,辅助内容可以显示在弹出窗口,或者从有声渲染里省略掉。

所有可应用的描述性元数据属性,比如那些定义在 Spine itemref Properties里的,都应该通过properties属性加以声明。

阅读系统必须忽略所有在properties属性定义的、它们不认识的元数据。

例子

下面的例子说明spine元素和上面的manifest例子 example above

<spine page-progression-direction=”ltr”>
<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=”notes” linear=”no”/>
</spine>

guide元素 (废弃了)

OPF2的guide元素被废弃了,代之以EPUB导航文件的landmarks特性。更多信息请参看 The landmarks nav Element

为了向前兼容EPUB2阅读系统,作者可以在包文件里包括guide元素。如果EPUB导航文件含有landmarks特性,EPUB3阅读系统必须忽略EPUB3里面提供的guide元素。

bindings元素

对于本规范不支持的媒体类型,bindings元素为它们定义一组定制的操作(a set of custom handlers)。

元素名称

bindings

用法

package的可选第四、第五子元素,在spine或guide后面。

属性

内容模式
一个或多个 mediaType元素(要求)。

package元素最多可以包含一个bindings元素。

bindings元素给作者提供包含fallbacks的手段,否则只有靠 HTML5的object元素的内在fallback机制才能够实现。bindings实现的fallbacks更加复杂。有bindings元素的时候,阅读系统必须利用bindings元素来处理那些引用了不支持的媒体类型的object元素。

bindings元素的每个mediaType子元素为出版物的 XHTML Content Documents里面引用的外来媒体类型之一定义一个专有操作。

当在处理文件的过程中遇到不支持的媒体类型的时候,阅读系统为了找到相匹配的操作,必须在bindings元素里查找handler,检查每个mediaType元素的 media-type属性(在尝试进行任何fallback处理之前)。如果找到相配的,元素的 handler属性所指向的XHTML内容文件必须被实例化以取代所指向的资源。如果找不到相配的,阅读系统应该继续正常的fallback处理(例如,为object寻找内在的fallback)。

阅读系统必须实例化指定的操作,就仿佛它是用下面的参数从object元素的data属性引用的:

src

其值必须是指向资源的IRI RFC3987(就是object元素的data属性值)。
type

其值必须是资源媒体类型(就是object元素的media-type属性值)。

元素的其它所有子param都必须类似地加为参数:把param的name属性用作新的参数名,其value属性作为新的value。

例如,下面的object元素含有外来媒体类型:

<object data=”horse.ogg” media-type=”audio/ogg”/>
<param name=”autoplay” value=”false”>
</object>

将导致下面的查询字符串在处理后被发送给XHTML Content Document的操作:

src=horse.ogg&type=audio/ogg&autoplay=false

生成的查询字符串里面所有的IRI保留字符,包括<, >, “, 空格, {, }, |, \, ^ 和 `都必须根据 RFC3987来编码、解码。

引用交由bindings元素处理的媒体类型的object元素,只在spine引用的XHTML内容文件里对它们进行处理(也就是,在 container-constrained scripting contexts里忽略它们)。

例子

下面的部分例子表明怎样利用bindings来提供一个幻灯片。

考虑具有下面包文件的出版物:

<package …>

<manifest>
<item id=”pict1″
href=”images/Pict1.jpg”
media-type=”image/jpeg”/>

<item id=”content”
href=”content.xhtml”
media-type=”application/xhtml+xml”/>
<item id=”impl”
href=”impl.xhtml”
media-type=”application/xhtml+xml”
properties=”scripted”/>
<item id=”slideshow”
href=”slideshow.xml”
media-type=”application/x-demo-slideshow”/>
</manifest>

<bindings>
<mediaType handler=”impl”
media-type=”application/x-demo-slideshow”/>
</bindings>

</package>

以及content.xhtml文件里面下面的内容:

<html …>

<body>

<object data=”slideshow.xml”
type=”application/x-demo-slideshow”>
<img src=”images/Pict1.jpg”/>
<img src=”images/Pict2.jpg”/>
<img src=”images/Pict3.jpg”/>
<img src=”images/Pict4.jpg”/>
</object>

</body>
</html>

以及slideshow.xml文件里面下面的内容:

<slides>
<slide src=”images/Pict1.jpg” dur=”3″/>
<slide src=”images/Pict2.jpg” dur=”3″/>
<slide src=”images/Pict3.jpg” dur=”3″/>
<slide src=”images/Pict4.jpg” dur=”3″/>
</slides>

取决于用户的阅读系统的能力,它们将能够看见幻灯片下面的渲染之一:

  •     如果阅读系统支持本地的幻灯片格式,它将按slideshow.xml滚动渲染一组图片。
  •     如果阅读系统不支持幻灯片媒体类型,但支持脚本,它能够检查包文件里面的bindings元素,来寻找脚本化备选处理。在那里它将引用含有handler的文件(impl.xhtml)。阅读系统现在可以加载这个文件来渲染幻灯片的JavaScript化的对等物(未显示源代码)。
  •     如果阅读系统不支持幻灯片媒体类型,也不支持脚本,它将使用object元素所指定的备选图片来显示所有图片的静态组。

mediaType元素

mediaType元素将 外来资源媒体类型和 XHTML Content Document操作联系起来。

元素名称

mediaType

用法

bindings的子元素,可重复。

属性

media-type (要求)

媒体类型 (RFC2046),指定待操作资源的类型、格式。

handler 9要求)

IDREF ( XML),标识待调用的XHTML内容文件的manifest,以操作本元素所指定的类型的内容。

内容模式

bindings元素的每个子mediaType必须在其media-type属性里定义一个唯一的内容类型。而且所指定的媒体类型不得为核心媒体类型。

所要求的handler属性必须指向manifest里item的ID( XML),manifest是此媒体类型的默认实施。引用的item必须是XHTML内容文件。

所有指定为handler的XHTML内容文件,在 manifest item properties属性里,都必须设置 scripted属性。

Package Metadata 包元数据

出版物识别符

唯一识别符

包文件出版物的作者有责任包含一个基本标识符,它对某个具体EPUB出版物是独特且唯一的。该唯一标识符,不管是选择的还是赋值的,必须存放在包元素据的 dc:identifier元素里,并且在package元素的package element属性里被引用为Unique Identifier。

虽然不是静态的,应该尽量不要改动出版物的唯一识别符。在为出版物更新元素据、修理勘误表或其它小更改的时候,不要发新的标识符。

包识别符

EPUB出版物的唯一标识符通常不应该因为每个包或其内容的轻微修订就改变,希望唯一标识符为了引用和发行的缘故都尽量能够持久。然而,出版物每次发行一般都要求新版本可以唯一识别,这就导致了矛盾的需求,即可靠又可变的唯一标识符。

为了解决这个问题,就是不改变唯一标识符,而又识别小的修改和发布,本规范定义了包标识符的语义,也就是对具有相同唯一识别符的各出版物加以区分和按序排列的手段。包标识符不是包中metadata段的实际属性,而是一个可以从元数据要求的两个数据得到的值:唯一标识符和出版物的最后修改日期。

放在一起,合并后的值代表一个唯一的身份,可以用来区分某个EPUB布置的任一特定版本。为了确保包标识符可以构建,出版物必须包含正好一个含有最后修改日期(见 meta)的 DCTERMS modified属性。这个属性的值必须是一个XML Schema XSD-DATATYPES dateTime,符合下面的日期格式:

CCYY-MM-DDThh:mm:ssZ

修改日期必须表示为UTC(Coordinated Universal Time,世界标准时间),必须以时区符号Z结尾。

虽然不是包元数据的一部分,为了引用和其它用途,本规范要求使用@作为分隔(即“id@date”),来构建标识符的所有字符串。连接字符串时不得包含空格。

以下示例显示唯一标识符和修改日期如何结合起来,形成“包标识符”。

<metadata xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<dc:identifier id=”pub-id”>urn:uuid:A1B0D67E-2E81-4DF5-9E67-A64CBE366809</dc:identifier>
<meta property=”dcterms:modified”>2011-01-01T12:00:00Z</meta>

</metadata>

results in the Package ID:

urn:uuid:A1B0D67E-2E81-4DF5-9E67-A64CBE366809@2011-01-01T12:00:00Z

请注意,有可能分隔符出现在唯一标识符里,因为这些标识符可以是任何字符串值。因此,在把包标识符分解成组件的时候,必须在它的最后一个@处进行分开。

包标识符不取代唯一标识符,但它代表一个手段,通过它同一出版物的不同版本可以被区分,也可以为销售渠道和阅读系统所识别。所要求的时间戳以其固有的时间顺序,无需知道此前的确切标识符,即可把出版物按照顺序排列。

因此,包标识符允许对一套出版物进行检查,以确定它们是相同出版物的同一版本、单一出版物的不同版本,抑或相异和类似出版物的组合。

词汇关联机制

概述

本节为说明性文字。

property、properties、rel和scheme等属性使用 属性数据类型(property data type)来代表元数据词汇里的术语。和 [RDFa10]的CURIE相似,属性数据类型代表一个紧凑型的IRI [RFC3987],简化从标准词汇里创作元数据。

属性值是一个由前缀和引用组成的表达式,其中前缀——无论是字面的还是暗示的——是一个IRI的速记映射,此IRI通常落实到一个术语词汇。当前缀被转换为其IRI表达并且与引用结合的时候,所得到的IRI通常落实到该词汇内的一个片段,内含人机可读、有关该术语的信息。

为了帮助阅读系统在处理属性值,需要一个手段,把某个前缀映射的IRI建立起来,本规范定义了三个这样的机制:

  • 默认的词汇表——当属性值没有前缀的时候定义映射;
  • 一组保留的前缀——这些映射是预先定义的(即,所有的阅读系统都识别它们),不加声明即可使用;
  • prefix属性——在根package元素上创建新前缀映射的一个声明手段。

默认词汇

默认词汇就是不需要加前缀就能够将其术语用于包元数据的词汇,而且其术语必须始终没有前缀。

为了方便列入包元数据,本规范定义 Package Metadata Vocabulary为默认的包文件元数据词汇。

如果property 值不含前缀,则应该使用IRI( [RFC3987])柄http://idpf.org/epub/vocab/package/# 来生成IRI。

与Package Metadata Vocabulary相关的IRI,不得使用 prefix attribute加前缀。

保留词汇

本规范专门定义了下面一组前缀供包元数据之用:

元数据保留前缀

Prefix                    IRI

dcterms                   http://purl.org/dc/terms/

marc                      http://id.loc.gov/vocabulary/

media                     http://www.idpf.org/epub/vocab/overlays/#

onix                      http://www.editeur.org/ONIX/book/codelists/current.html#

xsd                       http://www.w3.org/2001/XMLSchema#

在上表中列出的前缀不得使用prefix属性声明机制进行重新声明。同样,和每个prefix关联过的IRI,不能被分配给另一个prefix 。

prefix属性

prefix属性定义本规范未 保留的其它前缀映射。

prefix属性的值是由空格隔开的表,有一个或多个如下格式的prefix-IRI映射:

(EBNF作品 ISO/IEC 14977)

prefixes = mapping , { whitespace, { whitespace } , mapping } ;

mapping = prefix , “:” , space , { space } , ? xsd:anyURI ? ;

prefix = ? xsd:NCName ? ;

space = #x20 ;

whitespace = (#x20 | #x9 | #xD | #xA) ;

下面的例子说明用prefix属性声明foaf(朋友的朋友)的前缀以及DBPedia(dbp)。

<package …

prefix=”foaf: http://xmlns.com/foaf/spec/

dbp: http://dbpedia.org/ontology/”>

</package>

不得使用prefix属性重新定义默认词汇或已经定义的前缀。

保留了’_’前缀用于将来和RDFa( [RDFa10])处理兼容,因此不得被定义。

property数据类型

句法

property数据类型是表达IRI( [RFC3987])的紧凑手段,含一个可选的前缀,被冒号与所引用的地址分开。

(EBNF作品 ISO/IEC 14977)

property    =     prefix , “:” , reference;

prefix    =    ? xsd:NCName ? ;

reference    =    ? irelative-ref ? ;    /* as defined in RFC3987 */

property数据类型,衍生自CURIE数据类型,是CURIE的子集。 CURIE定义在 [RDFa10]。

下面的例子显示由前缀dcterms和modified引用构成的属性值。

<meta property=”dcterms:modified”>2011-01-01T12:00:00Z</meta>

处理之后,属性应该扩展到下面的IRI:

http://purl.org/dc/terms/modified

理由就在于dcterms:prefix是保留前缀,映射到IRI http://purl.org/dc/terms/。

当一个前缀从属性值里被省略掉,所表达的引用表示来自默认词汇 default vocabulary的术语。

下面的例子显示属性值从 default vocabulary得到。

<meta … property=”role”>aut</meta>

当默认词汇的IRI和引用串接起来,该属性扩展到:

http://idpf.org/epub/vocab/package/#role

空字符串即使是符合上面的定义,也不代表合适的属性值。

处理

阅读系统必须使用下面的规则从某个属性来生成IRI( [RFC3987]):

  • 如果属性只由一个引用构成,IRI的获得方法是把与默认词汇相关的IRI柄串接到引用。
  • 如果属性由引用和前缀构成,IRI的获得方法是把与prefix相关的IRI柄串接到引用。如果没有定义相配的prefix,这个属性将不合法。

由此产生的IRI必须符合 [RFC3987]。不过,不要求阅读系统落实本IRI。

包元数据词汇

概述

本节是说明

下面各节既定义一组用于包元数据的属性,同时也构成可引用的词汇。这些词汇就是本规范保留的默认词汇,用于包元数据里无前缀的术语。

通过基础IRI http://idpf.org/epub/vocab/package/# 可以引用本词汇里定义的属性。

注:下面各节的属性用法例子取自metadat和meta例子。更完整的上下文请参考那些例子。

元数据meta的属性

meta元素的各属性,通过提供额外的细节来增强出版物元数据。

这些属性必须指向它们在refines(meta的子元素)属性里添加的表达式或资源。

下表详细列出可用的属性。

alternate-script属性

    alternate-script属性提供一个备用表达式,用于xml:lang属性确定的语言和脚本里的相关的属性值。

说明    :

    此属性通常附加到creator和title属性,用于国际化目的。

许可值  :   xsd:string

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    所有属性

例子    :    <meta refines=”#creator” property=”alternate-script” xml:lang=”ja”>村上 春樹</meta>

display-seq属性

    display-seq属性指示多个titles的渲染顺序。

说明    :    当一组成员不都是附有display-seq属性时,只对标记有顺序的进行渲染。

许可值  :   xsd:unsignedInt

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    所有属性

例子    :    <meta refines=”#t2″ property=”display-seq”>1</meta>

file-as属性

说明    :    file-as属性提供相关属性的规范化格式,用于排序。

许可值  :   xsd:string

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    所有属性

例子    :    <meta refines=”#creator” property=”file-as”>Murakami, Haruki</meta>

group-position 属性

    group-position属性指示出版物(无论是否都是EPUB)在同组作品中相对其它作品的数字位置。

说明    :    group-position属性可以附到任何生成新组的元数据属性(如系列的标题)。

    一个出版物可以属于不止一个group。

许可值  :   单个xsd:unsignedInt,或一系列小数点分开的数字(如1,2.2.1)。

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    所有属性

例子    :    <meta refines=”#t3″ property=”group-position”>2</meta>

identifier-type属性

    identifier-type属性指示identifier的形式或性质。

说明    :    当从代码清单或哈希提取identifier-type属性值的时候,应加上 scheme以确定其来源。

许可值  :   xsd:string

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    identifier

例子    :    <meta refines=”#src-id” property=”identifier-type” scheme=”onix:codelist5″>15</meta>

meta-auth属性

说明    :    meta-auth属性提供包元数据实例的作者名称。

许可值  :   xsd:string

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    identifier

例子    :    <meta refines=”isbn-id” property=”meta-auth” id=”meta-authority-01″>Metadata Authority Inc.</meta>

role属性

说明    :    role属性描述creator或contributor所进行的工作的性质(如,此人是作者还是编辑)。

    当从代码清单或哈希提取role属性的值的时候,应加上 scheme以确定其来源。

许可值  :   xsd:string

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

延伸    :    contributor, creator

例子    :    <meta refines=”#creator” property=”role” scheme=”marc:relators”>aut</meta>

title-type属性

    title-type属性指明title的性质或形式。

说明    :    当从代码清单或哈希提取title-type属性值的时候,应加上 scheme以确定其来源。

    在没有指定scheme的时候,阅读系统应该能识别下列title类型值:main、subtitle、short、collection、edition和expanded。

许可值  :   xsd:string

延伸    :    title

总数    :   在元数据段:0或多个

    附到其它元数据:0或多个

例子    :    <meta refines=”#title” property=”title-type”>main</meta>

metadata的link的属性

下表定义一些属性,以用于metadata的link元素的rel属性。

› marc21xml-record

说明    :    marc21xml-record属性说明引用的资源是MARC21记录 [MARC21XML]。

总数    :    0个或1个

延伸    :    仅仅适用于出版物。有 refines属性的时候不得使用。

例子    :    <link rel=”marc21xml-record” href=”pub/meta/nor-wood-marc21.xml”/>

› mods-record

说明    :    mods-record属性说明引用的资源是MODS记录 [MODS]。

总数    :    0个或1个

延伸    :    仅仅适用于出版物。有 refines属性的时候不得使用。

例子    :    <link rel=”mods-record” href=”pub/meta/nor-wood-mods.xml”/>

› onix-record

说明    :    onix-record属性说明引用的资源是ONIX记录 [ONIX]。

总数    :    0个或1个

延伸    :    仅仅适用于出版物。有 refines属性的时候不得使用。

例子    :    <link rel=”onix-record” href=”pub/meta/nor-wood-onix.xml”/>

› xml-signature

说明    :    xml-signature属性说明引用的资源含有对相关属性或出版物的XML签名 [XML DSIG Core]。

总数    :    0个或1个

延伸    :    所有的属性。

例子    :    <link refines=”#meta-authority-01″ rel=”xml-signature” href=”../META-INF/signatures.xml#MAI-Signature”/>

› xmp-record

说明    :    xmp-record属性说明引用的资源是XMP记录 [XMP]。

总数    :    0个或1个

延伸    :    仅仅适用于出版物。有 refines属性的时候不得使用。

例子    :    <link rel=”xmp-record” href=”pub/meta/nor-wood-xmp.xml”/>

Manifest的item的属性

下表定义一些属性,以用于Manifest的item元素的properties属性。

“应用于”:给定属性能够指定的出版物资源类型;

“基数”:在包文件范围内该属性能够出现的次数;

“用法”: 使用的条件。

› cover-image

说明    :    cover-image属性把所描述的资源识别为封面图像。

应用于  :     所有的 raster and vector image types

基数    :    0个或1个。

用法    :    可选

› mathml

说明    :    mathml属性表示所描述的出版物资源有一个或多个MathML标记实例。

应用于  :     EPUB内容文件( EPUB Content Documents)。

基数    :    0个或1个。

用法    :    当且仅当满足上面的“说明”时必须设定。

› nav

说明    :    nav属性表示所描述的出版物资源构成EPUB导航文件( EPUB Navigation Document)。

应用于  :     EPUB导航文件( EPUB Navigation Document)。

基数    :    0个或1个。

用法    :    要求

› remote-resources

说明    :    remote-resources属性表示所描述的出版物资源包含一个或多个对位于EPUB容器外的其它资源的内部引用。(详细情况请看 Publication Resource Locations)

应用于  :     所有具备内部引用能力的出版物资源(如HTML,SVG内容文件,EPUB样式表,媒体覆盖文件)。

基数    :    0个或1个。

用法    :    当且仅当满足上面的“说明”时必须设定。

› scripted

说明    :     scripted属性表示所描述的出版物资源为 Scripted Content Document(脚本内容文件)(即含有脚本文件和/或html5表单元素)。

应用于  :     EPUB内容文件。

基数    :    0个或1个。

用法    :    当且仅当满足上面的“说明”时必须设定。

› svg

说明    :     svg属性表示所描述的出版物资源有一个或多个SVG标记。

应用于  :     XHTML Content Documents,其值用于 SVG Content Documents

基数    :    0个或1个。

用法    :    当且仅当满足上面的“说明”时必须设定。

› switch

说明    :    switch属性表示所描述的出版物资源有一个或多个 epub:switch元素的实例。

应用于  :     XHTML Content Documents

基数    :    0个或1个。

用法    :    当且仅当满足上面的“说明”时必须设定。

只要是由item引用的资源与它们各自的定义相符合,就必须指定mathml, remote-resources, scripted, svg和switch属性。这些属性并不传递到加进资源的内容(如:通过HTML5的iframe元素)。 例如,如果非脚本化的XHTML内容文件入嵌脚本化的内容文件,仅仅是嵌入(有脚本的)文件的manifest的item properties属性才拥有scripted值。

例子:

下面的例子显示一个代表EPUB导航文件的manifest的item元素。

<item properties=”nav” id=”c1″ href=”c1.xhtml” media-type=”application/xhtml+xml” />

下面的例子显示一个代表出版物封面图像的manifest的item元素。

<item properties=”cover-image” id=”ci” href=”cover.svg” media-type=”image/svg+xml” />

下面的例子显示一个代表脚本化内容文件的manifest的item元素,内容文件也含有嵌入的MathML。

<item properties=”scripted mathml” id=”c2″ href=”c2.xhtml” media-type=”application/xhtml+xml” />

spine的itemref的属性

下表定义一些属性,以用于itemref的property属性。

“基数”指的是在包文件范围内必须出现的次数;“用法”指的是使用的条件。

› page-spread-left

说明    :    page-spread-left属性指示与item相关的EPUB内容文件的第一页是两页的左边。

基数    :    0个或1个。

用法    :    可选。不能将本属性指定给已经指定了page-spread-right属性的temref。

› page-spread-right

说明    :    page-spread-right属性指示与item相关的EPUB内容文件的第一页是两页的右边。

基数    :    0个或1个。

用法    :    可选。不能将本属性指定给已经指定了page-spread-right属性的temref。

例子:

下面的例子说明一副两页的地图如何在spine里进行指明。

<spine>
<itemref idref=”title”/>
<itemref idref=”ps-1-l” properties=”page-spread-left”/>
<itemref idref=”ps-1-r” properties=”page-spread-right”/>
<itemref idref=”toc”/>

</spine>

Publication Resources 出版物资源

核心媒体类型

下表列出了EPUB的3核心媒体类型。当出版资源符合核心媒体类型规范,它就是核心媒体类型的资源,可以不提供备选就直接用于出版物(更多信息请看 Restrictions and Fallbacks(限制和备选))。

表中各列代表以下信息:

媒体类型(Media Type)

MIME媒体类型 [RFC2046]用来表示在manifest给定的出版物资源。

内容类型定义(Content Type Definition)

给定核心媒体类型资源必须符合的规范。

适用于(Applies to)

媒体类型(Media Type)、内容类型定义(Content Type Definition)应用到的出版物资源类型。

EPUB核心媒体类型

媒体类型(Media Type)===内容类型定义(Content Type Definition)======适用于(Applies to)

图像类型
image/gif ===============(GIF)======================    GIF 图像
image/jpeg ==============(JPEG)=======================    JPEG 图像
image/png ===============(PNG) =======================    PNG 图像
image/svg+xml ===========SVG 内容文件=================== SVG文件

应用类型
application/xhtml+xml ======XHTML内容文件=========XHTML内容文件和EPUB导航文件
application/x-dtbncx+xml====(OPF2)===============被取代的NCX
application/vnd.ms-opentype=(OpenType0===========OpenType字体
application/font-woff=======(WOFF) ==============WOFF fonts
application/smil+xml =======(MediaOverlays30)====EPUB 媒体覆盖文件
application/pls+xml ========(PLS) ===============Text-to-Speech (TTS)发音词典

声频类型
audio/mpeg===================(MP3) ================MP3 audio
audio/mp4====================(AAC LC),(MP4) ========使用MP4容器的AAC LC 声频文件

文本类型
text/css======================EPUB样式表 ===========EPUB 样式表
text/javascript===============(RFC4329)=============脚本

注:
本规范没有将任何视频编解码器定义为核心媒体类型。请看上面的 note in EPUB Publications — Reading System Conformance以获取关于EPUB出版对视频编解码器支持的推荐信息。

限制与备选

外来资源限制

EPUB出版物的所有出版资源必须是核心媒体类型资源,或必须提供核心媒体类型备选。外来资源可以使用的情形、以及这些情形下提供核心媒体类型备选的要求和规则,详述如下。

EPUB内容文件的内在备选
>外来资源可从EPUB内容文档中那些有明确内在备选机制的元素进行引用(如HTML5的object、canvas、audio和video元素)。
在这些情况下,一个核心媒体类型资源必须通过给定元素的内在备选机制加以提供。
>对于HTML5的video元素,poster属性所引用的图像和嵌在video元素的文本内容,都可以和video元素的内在备选一样视为有效的核心媒体类型备选。
为了给不支持视频或给定视频格式的阅读系统提供一个可以最后诉求的备选,每出现一个video元素,都至少要提供一个这样的备选。
>对于HTML5的audio元素,元素内嵌入的文字内容也被认为是一个有效的核心媒体类型备选。
对于不支持音频的阅读系统,为了提供一个可以最后诉求的备选,每次出现audio元素,都应该包含文本内容的嵌入。
>在这个版本,HTML5的track元素是个例外,不受核心媒体类型规则的限制:外来资源可以不提供核心媒体类型备选,直接通过track引用。

EPUB样式表的内在备选
>使用@font-face机制嵌入内容文件或EPUB样式表的字体可能是国外资源。阅读系统在为不受支持的字体确定备选的时候,必须使用 字体样式匹配规则(CSS3Fonts)。

spine资源
>外来资源可直接从spine的itemref元素引用,在这种情况下,必须提供 Manifest fallbacks

Manifest备选

spine的itemref元素引用的每个出版物资源,只要不是EPUB内容文件,都应该为它们提供备选。

备选的提供用的是manifest里item元素的fallback属性,item元素代表出版物资源。fallback属性的IDREF [http://idpf.org/epub/30/spec/epub30-publications.html#refXML XML]值应该落实到manifest里的另一个item。这个备选item本身可能指定另一个备选item,如此等等。

从某个给定item的fallback属性开始的全部ID引用,它们按顺序排列的清单就是那个item的fallback链。备选链里面资源的顺序就是作者希望的备选顺序。

阅读系统,如果不支持给定出版物资源的媒体类型,就应该通读fallback链,直到找到至少一个支持的资源,可以代替不受支持的资源。如果阅读系统支持fallback链里面的多个出版物资源,它可以根据那个资源的具体属性来选择,否则就应该执行作者希望的fallback顺序。

fallback链必须包含至少一个EPUB内容文件,而且不得包含自循环,即不得自引用。

备选也可能提供给属于EPUB内容文件的顶级内容文件。阅读系统可以选择利用这些备选,以便找到一个内容文件的最佳版本,渲染在给定的上下文里面。何时可以利用此功能的一个例子,是为脚本内容 [ContentDocs30]提供备选的时候( fallbacks for scripted content)。

出版资源位置

所有出版资源都必须位于EPUB容器,除了以下的例外:

>音频资源可放在容器里面或远程。
>视频资源可放在容器里面或远程。

作者应该优先把音频和视频资源放在容器中,以允许用户没有网络也能够访问整个文稿。

注:
不论给定资源是核心媒体类型资源还是外来资源,上面关于出版物位置的规则都适用。

注:
EPUB出版物加进远程资源,是通过manifest里面item元素的remote-resources属性。

XML合规条件

所有基于XML的媒体类型出版物都必须满足下列限制要求:

不论所给的出版物资源是核心媒体类型资源,还是外来资源,都必须应用上面的限制。

A.  Package Document Schema 包文件架构

包文件的架构可以在 http://www.idpf.org/epub/30/schema/package-30.nvdl 得到。

该架构是规范性的。

注:
使用该架构来进行验证,需要支持 [NVDL]、 [RelaxNG]和 [ISOSchematron]的处理程序。
然而要注意,NVDL的架构层可以用嵌入的RELAX NG和单独的ISO Schematron schemas换成一个多关验证。

B. application/oebps-package+xml 媒体类型

本附录为EPUB包文件注册application/oebps-package+xml媒体类型。包注册取代 RFC4839

包文件是描述EPUB出版物的XML文件,它指定出版物里面的资源,也提供元数据信息。包文件及其相关标准由IDPF维护和定义。

MIME media type name媒体类型名称:
application

MIME subtype name子类名称:
oebps-package+xml

Required parameters要求的参数:Open Packaging Format 2.0.1规范,后者在:

Optional parameters可选参数:

Encoding considerations编码考虑:
包文件是UTF-8、UTF-1编码的XML。

<b>Security considerations安全考虑:</b>

包文件包含符合XML1.0规范、构造良好的XML。

显然,可以加塞恶意文件,比如包含异常数据。绝大部分XML解析器都通过强化规范来免受攻击。

所有读取包文件的处理程序都应该严格检查提取数据的大小和合法性。

EPUB出版物3.0标准目前没有在包文件格式里提供加密、签字或授权。

交互可操作性考虑:

已出版的规范:
本媒体类型注册是用于EPUB包文件,说明见 EPUB Publications 3.0 specification(EPUB出版物3.0标准)。
EPUB出版物3.0规范取代 Open Packaging Format 2.0.1规范,它也使用application/oepbs-package+xml媒体类型。

使用本媒体类型的应用程序:
本媒体类型广泛应用于EPUB格式的电子书的发行。下面的应用清单未囊括所有的。
Adobe Digital Editions
Aldiko
Azardi
Apple iBooks
Barnes & Noble Nook
Calibre
Google Books
Ibis Reader
MobiPocket reader
Sony Reader
Stanza

其它信息:

Magic number(s)魔术数字:

File extension(s)文件扩展名:
.opf

Macintosh文件类型码,Macintosh File Type Code(s):
TEXT

碎片识别符,Fragment Identifiers:
IDPF在http://idpf.org/epub/linking/对注册的连接方案进行维护。有些方案定义解决到application/oebps-package+xml文件的自定义碎片识别符。

更多信息的联系人和电子信箱:

William McCoy, bmccoy@idpf.org

用途:

普通

作者/变更控制人

International Digital Publishing Forum (http://www.idpf.org)

C. 致谢与贡献者

参考文献

(category:EPUB)

Leave a Reply

Your email address will not be published. Required fields are marked *