EPUB 3.3

W3C 推荐标准

关于此文档的更多详情
此版本:
https://www.w3.org/TR/2026/REC-epub-33-20260113/
最新发布版本:
https://www.w3.org/TR/epub-33/
最新编辑草案:
https://w3c.github.io/epub-specs/epub33/core/
历史:
https://www.w3.org/standards/history/epub-33/
提交历史
测试套件:
https://w3c.github.io/epub-tests/index.html
实现报告:
https://w3c.github.io/epub-specs/epub33/reports/
编辑:
Matt Garrish (DAISY 联盟)
Ivan Herman (W3C)
前任编辑:
Dave Cramer (W3C 特邀专家)
反馈:
GitHub w3c/epub-specs (拉取请求, 新建议题, 开放议题)
public-pm-wg@w3.org 主题行请使用 [epub-33] … 消息主题 …存档
勘误:
https://w3c.github.io/epub-specs/epub33/errata.html

另请参见 译文


摘要

EPUB® 3 定义了一种用于数字出版物和文档的分发与交换格式。EPUB 格式提供了一种表示、打包和编码结构化且语义增强的 web 内容(包括 HTML、CSS、SVG 和其他资源)的方式,以便在单文件 容器中分发。

本规范定义了EPUB 出版物的创作要求,并代表该标准的第三次 主要修订。

本文档状态

本节描述了本文档在其 发布时的状态。当前 W3C 出版物的列表以及本技术报告的最新修订版本可在 W3C 标准与草案 索引中找到。

本文档由出版物维护工作 组作为 使用 推荐标准轨道的推荐标准发布。

W3C 建议将本规范作为 Web 标准广泛部署。

W3C 推荐标准是一种规范,它在经过广泛 共识构建后,由 W3C 及其会员认可,并且 已获得工作组成员对实现的 免版税许可 承诺。 此推荐标准的未来更新可能会纳入 新特性

本文档由一个 按照 W3C 专利 政策运作的组织制定。 W3C 维护了一个 公开的专利披露列表, 列出与该组交付成果相关的任何专利披露; 该页面还包括 披露专利的说明。实际 知晓某项专利并认为该专利包含 必要权利要求的个人, 必须依照 W3C 专利政策第 6 节披露相关信息。

本文档受 2025年8月18日 W3C 流程文档管辖。

1. 介绍

1.1 概述

本节是非规范性的。

EPUB 3 已被广泛采用为数字图书(电子书)的格式,并且本次修订继续 增强该格式的能力,以便更好地支持更广泛的出版需求, 包括复杂布局、富媒体和交互性,以及全球排版特性。预期 出版商会将 EPUB 3 格式用于范围广泛的内容, 包括图书、杂志,以及教育、专业和科学出版物。

本规范代表 EPUB 3 的核心,并包含EPUB 出版物的一致性要求——即该标准的产物。组成 EPUB 3 的其他 规范如下:

这些规范代表被正式认可为属于 EPUB 3 的列表,并包含 作为该标准一部分进行规范性引用的功能。扩展 规范的开发会定期向 EPUB 出版物添加新功能。虽然在本 规范中未被正式认可,但在标准核心修订之外定义的特性和功能 仍可供 EPUB 创建者和 阅读系统开发者使用。

非规范性的 EPUB 3 概述 [epub-overview-33] 提供了 对 EPUB 3 的一般介绍。相对于上一版本的技术变更列表也可在 变更日志中找到。

1.2 组织结构

本节是非规范性的。

本节通过本规范所定义的核心产品来审视本规范的组织结构: EPUB 出版物

从最基本的意义上说,EPUB 出版物是一组资源的包,并带有关于如何 渲染这些资源以按逻辑顺序呈现内容的说明。EPUB 出版物中 允许的资源类型以及对其使用的限制,定义在 3. 出版物 资源中。

带有 .epub 文件扩展名的基于 ZIP 的归档文件会将 EPUB 出版物的 资源打包以供分发。作为符合要求的 ZIP 归档,EPUB 出版物可被许多 软件程序解压,从而简化其制作和使用。

该容器格式不仅提供一种确定压缩内容代表 EPUB 出版物的方式(mimetype 文件),还提供一个具有通用名称的 非规范资源目录(/META-INF)。这些资源中的关键文件是 container.xml 文件,它会指示阅读系统定位可用的 包文档。有关容器格式的更多信息, 请参阅 4. 开放容器格式 (OCF)

EPUB 出版物通常由一个包文档表示。该文档包含 阅读系统用于向用户呈现内容的元数据,例如用于 在书架中显示的标题和 作者,以及渲染元数据(例如,内容是 可重排的还是固定布局的)。它还提供资源的清单,并包含一个 spine,列出用户浏览 内容时渲染文档的默认顺序。有关包 文档的要求,请参阅 5. 包文档

EPUB 出版物的实际内容——用户开始阅读时所看到的内容—— 构建在开放 Web 平台之上,并有两种形式:XHTML 和 SVG。称为 EPUB 内容文档的这些文档,通常会 引用许多为正确渲染所需的附加资源, 例如图像、音频和视频剪辑、脚本以及样式表。

有关生成 EPUB 内容文档的规则和要求的详细信息,请参阅 6. EPUB 内容 文档,并参阅 [epub-a11y-11] 了解 可访问性要求。

EPUB 出版物还包括另一个称为 EPUB 导航文档的关键文件。该 文档提供关键的导航能力,例如目录,使用户能够 快速、轻松地浏览内容。导航文档是一种专门类型的 XHTML 内容文档,它还允许 EPUB 创建者 将其用于内容中(即,避免为机器处理准备一个 目录、又为用户使用准备另一个目录)。有关此文档的更多信息,请参阅 7. EPUB 导航文档

默认情况下,EPUB 出版物旨在重排以适应可用的屏幕空间。也 可以使用图像和/或 CSS 定位来创建具有像素精确固定布局的出版物。 控制布局的元数据定义在 8. 布局渲染控制中。

媒体叠加文档补充 EPUB 内容 文档。它们提供声明式标记,用于 将 EPUB 内容文档中的文本与预录音频同步。其结果是能够 创建一种朗读体验,其中 阅读 系统会在叙述时高亮文本。 有关媒体叠加文档的定义,请参阅 9. 媒体叠加

尽管从概念上看很简单,但 EPUB 出版物并不仅仅是这里所呈现的 ZIP 包中一组 HTML 页面和依赖资产的集合。关于 EPUB 出版物为增强 阅读体验而提供的主要特性和功能的更多信息, 可从所引用的规范中获得,而关于 EPUB 3 特性的更一般介绍 则见非规范性的 [epub-overview-33]。

有关阅读系统的处理要求,请参阅 [epub-rs-33]。虽然 EPUB 创建者不一定需要阅读该文档即可创建 EPUB 出版物,但 了解阅读系统如何呈现内容有助于制作出能为用户提供最佳呈现效果的 出版物。

1.3 与其他 规范的关系

本节是非规范性的。

注意

EPUB 3 所建立在其上的技术一直在不断演进。有些技术通常被称为 “现行”或“常青”标准,可能每天都会发生变化,而这些变化对 EPUB 出版物有效性的影响是即时的。其他技术更新频率较低,其变化可能在 EPUB 3 进行新一轮修订之前不会影响 EPUB 出版物

在所有情况下,以前有效的特性都有可能变得过时(例如,由于 缺乏支持或因为安全问题)。因此,EPUB 创建者 应谨慎使用任何没有广泛支持的特性,并保持其 EPUB 一致性检查器为最新状态。

1.3.1 与 HTML 的关系

[html] 标准在持续演进——它不再有 带版本号的发布。 该标准本身又引用了各种仍在继续演进的技术,例如 MathML、 SVG、CSS 和 JavaScript。

这种做法对 EPUB 的好处是,EPUB 出版物始终能够跟上 Web 的变化,而无需新的修订。然而,EPUB 创建者 必须跟踪 HTML 及其所引用技术的各种变化,以确保他们的 流程保持最新。

除非另有规定,本规范定义的 XHTML 配置文件继承 HTML 中关于 语义、结构和处理行为的所有定义。

此外,本规范还定义了一组扩展, 用于 [html] 文档模型,EPUB 创建者可在 XHTML 内容文档中包含这些扩展。

1.3.2 与 SVG 的关系

本规范不引用 [svg] 的特定版本,而是使用 不带日期的 引用。每当此引用存在任何歧义时,最新的推荐 规范即为权威引用。

这种做法确保 EPUB 始终能够跟上 SVG 标准的变化。EPUB 创建者仍必须跟踪 SVG 标准的变化,以确保他们的 流程保持最新。

1.3.3 与 CSS 的关系

EPUB 3 支持 CSS 工作组快照 [csssnapshot] 所定义的 CSS。EPUB 3 还 保留了一些带前缀的 CSS 属性,以确保对全球语言的一致支持。

1.3.4 与 MathML 的关系

EPUB 3 仅支持 表示 标记 [mathml3]。 内容 标记仅允许出现在结构化 标记注释中。

1.3.5 与 SMIL 的关系

本规范依赖 [smil3] 的一个子集, 9.2.2 媒体叠加文档定义中定义的媒体叠加元素和 属性均源自该子集。

1.3.6 与 URL 的关系

本规范引用 [url] 标准,用于与 EPUB 出版物中表示的 URL 相关的术语和处理。预计新的和 修订后的 Web 格式将采用该标准,但在此之前,这可能会使本规范与 某些格式的内部要求(例如,有效的相对路径)发生冲突,特别是在 国际化 URL 的使用方面。如果某个格式不允许国际化 URL(即 URL 必须符合 [rfc3986] 或更早版本), 则在这些资源内该要求优先。

1.4 术语

本规范定义了以下 EPUB 3 特有术语。

一个术语在某一节中只有第一次出现会链接到其定义。

编解码器

编解码器指具有内在二进制格式特性的内容,例如 为最佳压缩而设计的,或提供优化流式传输 能力的视频和音频媒体类型。

容器资源

一种位于 EPUB 容器内的 出版物资源,与 不在其中的远程资源相对。

有关资源位置的媒体类型特定规则,请参阅 3.6 资源 位置

容器根 URL

表示 OCF 抽象容器根目录URL [url]。它是实现 特定的,但 EPUB 创建者必须假定它具有 4.2.5 OCF 抽象容器中的 URL 中定义的属性。

内容 URL

URL,指 OCF 抽象容器中文件或目录的 URL,定义在 4.2.5 OCF 抽象容器中的 URL中。

核心 媒体类型资源

一种出版物资源,它符合 3.2 核心媒体 类型中列出的 MIME 媒体类型 [rfc2046] 之一,因此不需要提供 回退(参见 外来 资源)。

“核心媒体类型资源”这一称谓仅适用于在 EPUB 内容文档外来内容文档的渲染中使用的资源。例如, 核心媒体类型资源不能在 spine中使用而不提供回退, 除非它也具有 EPUB 内容文档的媒体类型。

EPUB 一致性检查器

一种应用程序,用于根据本规范的要求验证 EPUB 出版物并报告其一致性。

EPUB 容器
OCF ZIP 容器

EPUB 出版物定义的基于 ZIP 的打包与分发格式,定义在 4.3 OCF ZIP 容器中。

EPUB 容器和 OCF ZIP 容器是同义词。

EPUB 内容文档

一种出版物资源,它从 spinemanifest 回退链引用,并符合 XHTMLSVG 内容文档定义。

EPUB 内容文档包含 EPUB 出版物的全部或部分内容(即 文本、视觉和/或音频内容)。

EPUB 创建者可以在 spine 中包含 EPUB 内容文档, 而无需提供回退

EPUB 创建者

生产 EPUB 出版物的个人、组织或流程。

EPUB 出版物的创建通常涉及许多个人的工作,并且可能 被拆分到多个组织中(例如,当出版商外包全部或部分 工作时)。根据用于生产 EPUB 出版物的流程, 责任可能落在组织(例如,出版商)、准备出版物的个人 (例如,技术编辑)或自动化程序(例如,作为 出版流程的一部分)身上。因此,并非每个参与方或流程都可能 负责确保满足每一项要求,但始终存在一个 EPUB 创建者 对最终 EPUB 出版物的一致性负责。

本规范以前的版本将 EPUB 创建者称为 作者

EPUB manifest(或 manifest)

包文档中列出 出版物资源的节。

有关更多信息,请参阅 5.6.1 manifest 元素

EPUB 导航文档

XHTML 内容文档的一种专门形式, 其中包含可供人和机器读取的 全局导航信息。EPUB 导航文档符合 7. EPUB 导航 文档中表达的约束。

EPUB 出版物

一种逻辑文档实体,由一组相互关联的资源组成,并被打包在 EPUB 容器中。

EPUB 出版物通常代表一项单一的智力或艺术作品,但本 规范并不限制内容的性质。

EPUB 阅读系统(或阅读系统)

一种系统,它以符合本规范的方式处理 EPUB 出版物, 以便向用户呈现。

EPUB spine(或 spine)

包文档中定义 EPUB 内容文档外来内容文档的有序列表的节。该列表 表示 EPUB 出版物的默认阅读 顺序。

有关更多信息,请参阅 5.7.1 spine 元素

豁免资源

豁免资源是一类特殊的出版物资源,阅读系统并不被要求 支持其渲染,但 EPUB 创建者不必为其提供回退

有关更多信息,请参阅 3.4 豁免 资源

文件名

OCF 抽象容器内任何类型文件的名称,无论是目录还是 目录中的 文件。

文件路径

文件或目录的文件路径是其相对于 根目录的完整路径,如 4.2.4 派生文件路径中指定的算法所 定义。

固定布局文档

一种具有固定尺寸的 EPUB 内容文档,由 spine直接引用。 固定布局文档在 包文档中被标记为 pre-paginated,如 8.2 固定布局中所定义。

外来内容文档

任何从 spine itemref 元素引用,或从 manifest 回退链引用,且不是 EPUB 内容文档出版物资源

当外来内容文档从 spine itemref 元素引用时,它 需要一个至少包含一个 EPUB 内容文档的 manifest 回退链。

除 XHTML 和 SVG 外,所有核心媒体类型资源在从 spine 直接引用时都是 外来 内容文档。

外来资源

一种出版物资源,其 MIME 媒体类型 [rfc2046] 不匹配 3.2 核心媒体类型中列出的任何类型。外来资源受 3.3 外来资源中定义的 回退要求约束。

“外来资源”这一称谓仅适用于在 EPUB 内容文档外来内容文档的渲染中使用的资源。

外来资源和外来内容文档不是可互换的术语。在 spine 中使用时被视为外来的 资源类型,比在 EPUB 内容 文档中使用时被视为外来的资源类型更多。

链接资源

一种仅从 包 文档 link 元素引用的资源(即,不 同时用于渲染 EPUB 出版物)。

链接资源不是出版物资源,但 可以存储在 EPUB 容器中。它们不 需要回退。

媒体 叠加文档

一种 XML 文档,它将 XHTML 内容文档与预录音频 旁白关联起来,以提供同步播放体验,如 9. 媒体叠加中所定义。

非编解码器

非编解码器指由于其内部数据结构的性质而受益于压缩的内容类型, 例如基于字符串的文件格式(例如 HTML、 CSS 等)。

OCF 抽象容器

OCF 抽象容器为 OCF ZIP 容器的内容定义了一个文件系统模型,如 4.2 OCF 抽象 容器中所定义。

包文档

一种出版物资源,描述 EPUB 出版物的 渲染,如 5. 包 文档中所定义。包文档承载 EPUB 出版物的元信息,提供资源的 manifest,并定义默认阅读 顺序。

出版物资源

一种包含内容或指令的资源,这些内容或指令有助于 EPUB 出版物的逻辑和渲染。如果缺少该资源, 阅读系统可能无法 按 EPUB 创建者的意图渲染 EPUB 出版物。出版物 资源的示例包括 包文档EPUB 内容文档、CSS 样式表、 音频、视频、图像、嵌入字体和脚本。

EPUB 创建者必须在包文档的 manifest中列出出版物资源,并且通常将它们 全部打包在 EPUB 容器中(例外是他们 可以将 3.6 资源位置中列出的资源放置在 EPUB 容器之外)。

出站超链接中标识的 Web 上资源(例如,从 [html] a 元素的 href 属性引用的资源)不是出版物 资源。

Data URL 也不是出版物资源——它们被 视为其所嵌入资源的一部分。

远程资源

一种位于 EPUB 容器之外的 出版物资源,通常位于 Web 上。

EPUB 容器内的出版物资源称为 容器资源

有关资源位置的媒体类型特定规则,请参阅 3.6 资源 位置

根目录

根目录表示 OCF 抽象容器文件系统的基底。该 目录本质上是虚拟的

脚本化内容文档

一种包含脚本的 EPUB 内容文档,或一种 包含 [html] form 元素的XHTML 内容文档

有关更多信息,请参阅 6.3.2 脚本

SVG 内容文档

一种EPUB 内容文档,它符合 6.2 SVG 内容文档中表达的约束。

合成跨页

在设备屏幕上同时渲染两个相邻页面。

顶级内容文档

spine引用的 EPUB 内容文档外来内容文档,无论是直接引用还是通过 回退 链引用。

唯一标识符

EPUB 出版物的主要标识符。唯一 标识符是 ,即在 包文档中由 unique-identifier 属性指定的 dc:identifier 元素的值。

内容发生重大修订、删节等时,需要新的唯一标识符。

视口

EPUB 阅读系统中的一个区域, EPUB 出版物在该区域中以可视方式渲染 给用户。

XHTML 内容文档

一种EPUB 内容文档,它符合 6.1 XHTML 内容文档中定义的 [html] 配置文件。

XHTML 内容文档使用 [html] 中定义的 XML 语法

1.5 一致性

除了标记为非规范性的节之外,本规范中的所有创作指南、图表、示例和注释 均为非规范性内容。本规范中的其他所有内容均为规范性内容。

本文档中的关键词 MAYMUSTMUST NOTOPTIONALRECOMMENDEDREQUIREDSHOULDSHOULD NOT 应按 BCP 14 [RFC2119] [RFC8174] 中所描述的方式解释,但仅当它们以 此处所示的全大写形式出现时才如此。

所有算法说明都是非规范性的

1.6 创作简写

本节是非规范性的。

包文档元数据示例中, 保留 前缀会在不声明的情况下使用。

对 Dublin Core 元素 [dcterms] 的引用使用 dc: 前缀。该前缀 必须在包文档中声明,才能有效使用 (xmlns:dc="http://purl.org/dc/elements/1.1/"

epub 命名空间前缀 [xml-names] 也 会在元素和属性上使用,而并不总是显式声明 (xmlns:epub="http://www.idpf.org/2007/ops")。

2. EPUB 出版物一致性

EPUB 出版物

此外,所有出版物资源 MUST 遵守 3. 出版物 资源中的要求。

本规范的其余部分涵盖具体的一致性细节。

2.1 一致性检查

本节是非规范性的。

由于本规范的复杂性以及 EPUB 出版物中所使用技术的数量, 建议 EPUB 创建者使用 EPUB 一致性检查器来验证其内容的 一致性。

EPUBCheck 是出版行业使用的事实上的 EPUB 一致性 检查器,并且已随 EPUB 的每个新版本更新。它 集成在许多创作工具中,也提供替代接口和其他 语言版本(更多信息,请参阅其 应用和工具 页面)。

在验证其 EPUB 出版物时,EPUB 创建者应确保它们不违反 本规范的要求(由关键词 “MUST”、“MUST NOT” 和 “REQUIRED” 标识的实践)。这类问题通常会导致 EPUB 出版物无法 渲染或以不一致的方式渲染。这些问题通常会被报告为错误或严重错误。

EPUB 创建者还应确保其 EPUB 出版物不违反 本规范的建议(由关键词 “SHOULD”、“SHOULD NOT” 和 “RECOMMENDED” 标识的实践)。 不遵循这些实践不会导致 EPUB 出版物无效,但可能会导致 互操作性问题以及其他影响用户阅读体验的问题。这些问题 通常会被报告为警告。

EPUB 出版物的供应商、发行商和其他零售商,在根据 EPUB 一致性检查器的零问题结果来决定接受或拒绝之前,应考虑 推荐实践的重要性。EPUB 创建者在所有情况下无法遵循 推荐实践,会有正当理由。

3. 出版物资源

3.1 介绍

本节是非规范性的。

EPUB 出版物由许多不同类别的 资源组成,并非所有类别都 相互排斥。有些资源是出版物资源,有些不是。有些出版物 资源默认允许出现在 spine 中,而 其他所有资源都需要回退。 有些资源可用于渲染 EPUB 内容文档,而其他资源只能与回退一起使用。

通过阅读每类资源的技术定义来理解这些差异可能很复杂。 为了使分类更易于理解,本介绍使用 不同平面的概念来说明资源如何分组和引用。

这三个平面是:

同一资源可能存在于多个平面上,并且在本 规范中会根据所讨论的平面而被不同地称呼。例如, 用于渲染 EPUB 内容文档的核心媒体类型资源 (在内容平面上),如果也列在 spine 中(spine 平面),则也可能是外来 内容文档。

以下小节更详细地描述这些平面。

有关展示资源如何归入不同平面的详细示例,请参阅 H.1 资源

3.1.1 manifest 平面

manifest 平面定义 EPUB 出版物的所有资源。它类似于 包文档manifest, 但包括该列表中不存在的资源。

该组中的主要资源被指定为出版物资源,它们是用于向用户渲染 EPUB 出版物的所有 资源。EPUB 创建者 始终必须在 manifest 元素中列出这些资源。

出版物资源还会按照其在 spine 平面内容 平面中的用途进一步分类。

manifest 平面还包含一组链接 资源。这些资源与 直接渲染相关性较弱。例如,它们包括元数据记录以及指向外部内容的链接 (例如购买 EPUB 出版物的位置)。

与出版物资源不同,它们不会列在包文档 manifest 中(即,因为 它们对于渲染 EPUB 出版物不是必需的)。相反,它们在包文档元数据中的 link 元素中定义。这些元素定义其性质和目的, 类似于 manifest item 元素定义出版物资源的方式。(从这个意义上说,它们 就像 manifest 的扩展。)

有关链接资源的更多信息,请参阅 5.5.6 link 元素

manifest 平面中的资源有时也会按其所在位置进一步划分。 虽然大多数出版物资源必须位于 EPUB 容器中(称为 容器资源),但 EPUB 3 允许 音频、视频、字体和脚本数据 资源托管在容器之外。作出这些例外是为了加快 EPUB 出版物的 下载和加载,因为这些资源通常相当大,并且在 字体的情况下,对呈现并非必不可少。当远程托管时,这些出版物 资源称为远程资源

由于链接资源对于 EPUB 出版物的渲染并非必需,因此对其 所在位置没有要求,也因此不会根据其 位置进行特殊命名。它们可以位于 EPUB 容器内,也可以位于其外。

EPUB 容器外的超链接内容(例如网页)不是出版物 资源,因此不会列在 manifest 中。阅读系统通常会 在单独的浏览器实例中打开这些链接,而不是作为 EPUB 出版物的一部分打开。

3.1.2 spine 平面

spine 平面定义 由 spine 建立的 默认阅读顺序中使用的资源,其中 包括线性和非线性内容。spine 指示 阅读系统在用户浏览 EPUB 出版物时如何加载这些资源。虽然许多 资源可能被打包在 EPUB 容器中,但并非全部 默认允许出现在 spine 中。

EPUB 3 定义了一类称为 EPUB 内容文档的特殊资源,EPUB 创建者可在 spine 中无任何 限制地使用它们。EPUB 内容文档包括 XHTML 内容文档SVG 内容文档

要在 spine 中使用任何其他类型的资源,即所谓的 外来内容文档,需要 包含一个指向 EPUB 内容文档的回退。这种可扩展性模型允许 EPUB 创建者 尝试各种格式,同时确保阅读系统始终能够为用户渲染 可阅读的内容,因为外来内容 文档的支持并无保证。

一种称为manifest 回退的机制允许 EPUB 创建者 为外来内容文档提供回退。在此模型中,外来内容 文档的 manifest 条目必须包含一个 指向阅读系统在不支持其格式时可尝试的下一个 可能资源的 fallback 属性。虽然并不 常见,但一个回退资源可以指定另一个回退,从而形成许多资源 深度的链。唯一要求是 manifest 回退链中必须至少有一个 EPUB 内容文档。

虽然它们没有直接列在 spine 中,但回退链中的所有资源 都被视为 spine 的一部分,并进一步视为 spine 平面的一部分,因为其中任何资源都可能被 阅读系统使用。

有关更多信息,请参阅 3.5.1 Manifest 回退

注意

虽然 manifest 回退满足 EPUB 的技术要求, 但阅读系统对其实际支持很少。强烈 不建议使用它们,因为这可能导致出版物无法阅读。

可以为 EPUB 内容文档提供 manifest 回退,但这不是 必需的,也不常见。例如,脚本化内容文档可以为不支持脚本的阅读系统 回退到一个 非脚本替代方案。

3.1.3 内容平面

内容平面对用于渲染 EPUB 内容文档外来内容文档的资源进行分类。这些类型的 资源包括嵌入媒体、CSS 样式表、脚本和字体。这些资源根据阅读系统支持情况 分为三类:核心媒体类型资源外来资源豁免资源

核心媒体类型资源是阅读系统必须支持的资源,因此可在 EPUB 或外来内容文档中不受限制地使用。有关核心媒体 类型资源的更多信息,请参阅 3.2 核心媒体类型

作为核心媒体类型资源并不意味着阅读系统总会渲染该 资源,因为并非所有阅读系统都支持 EPUB 3 的所有特性。例如,没有 视口的阅读系统不会渲染图像等视觉内容。

核心媒体类型资源的相反类型是外来资源。这些资源 不保证会被阅读系统支持渲染。因此,类似于在 spine 中使用 外来内容文档需要回退以确保其渲染,在内容文档中使用 外来资源也需要回退。这些回退以两种方式之一提供: 使用宿主格式的能力,或通过 manifest 回退。

首选方法是使用宿主格式的回退能力。例如,许多 HTML 元素 具有内在回退能力。一个例子是 picture 元素 [html],它允许 EPUB 创建者 指定多个替代图像 格式。

如果没有可用的内在回退方法,也可以使用 manifest 回退, 但如上一节警告所述, 不建议使用这种方法。有关外来资源的更多信息,请参阅 3.3 外来 资源

介于核心媒体类型资源和外来资源之间的是豁免资源。这些资源 与外来资源最为接近,因为无法保证阅读系统 会渲染它们。但像核心媒体类型一样,它们不需要回退。

豁免资源往往用于处理一些特定情况,在这些情况下没有定义核心媒体类型, 但提供回退会显得繁琐或没有必要。这些情况包括 嵌入视频、添加可访问性轨道,以及从 [html] link 元素链接到资源。

有关这些例外的更多信息,请参阅 3.4 豁免 资源

核心媒体类型资源常见的一个混淆点,是 XHTML 和 SVG 被列为核心媒体类型资源,并要求其标记符合各自的 EPUB 内容文档定义。这允许 EPUB 创建者在 EPUB 内容文档中嵌入 XHTML 和 SVG 文档,同时保持创作和阅读系统支持的一致要求。

在实践中,这意味着 EPUB 创建者可以将 XHTML 和 SVG 核心媒体类型资源放入 spine 中,而无需任何修改或回退(它们也是符合要求的 XHTML 和 SVG 内容文档),但这是一个特殊情况。所有其他核心媒体类型资源在 spine 中使用时都会变成外来内容文档(即,外来内容文档包括 除 XHTML 和 SVG 之外的所有外来资源和所有核心媒体类型资源)。

3.2 核心媒体类型

EPUB 创建者 MAY 包含符合下表中定义的 MIME 媒体 类型 [rfc2046] 规范的出版物资源,当它们用于 EPUB 内容文档外来内容文档时无需回退。这些资源被 分类为 核心媒体类型资源

XHTML 内容文档SVG 内容文档外,EPUB 创建者 MUST 为从 spine 直接引用的核心媒体类型资源 提供 manifest 回退。在这种情况下, 它们是外来内容文档

表中的列表示以下信息:

媒体类型 内容类型定义 适用于
图像
image/gif [gif] GIF 图像
image/jpeg [jpeg] JPEG 图像
image/png [png] PNG 图像
image/svg+xml SVG 内容文档 SVG 文档
image/webp [rfc9649] WebP 图像
音频
audio/mpeg [mp3] MP3 音频
audio/mp4 [mpeg4-audio], [mp4] 使用 MP4 容器的 AAC LC 音频
audio/ogg; codecs=opus [rfc7845] 使用 OGG 容器的 OPUS 音频
样式
text/css CSS 样式表 CSS 样式表。
字体
  1. font/ttf
  2. application/font-sfnt
[truetype] TrueType 字体
  1. font/otf
  2. application/font-sfnt
  3. application/vnd.ms-opentype
[opentype] OpenType 字体
  1. font/woff
  2. application/font-woff
[woff] WOFF 字体
font/woff2 [woff2] WOFF2 字体
其他
application/xhtml+xml XHTML 内容文档 使用 XML 语法 的 HTML 文档 [html]。
  1. application/javascript
  2. application/ecmascript
  3. text/javascript
[rfc4329] 脚本。
application/x-dtbncx+xml [opf-201] 旧式 NCX。
application/smil+xml 媒体叠加 EPUB 媒体叠加文档

作为核心媒体类型资源纳入,并不意味着所有阅读系统都会支持 资源的渲染。阅读系统支持还取决于 应用程序的能力(例如,带有视口的阅读系统必须 支持图像核心媒体类型 资源,但没有视口的阅读系统则不支持)。有关哪些阅读系统渲染能力需要支持哪些核心 媒体类型资源的更多信息,请参阅 核心媒体类型 [epub-rs-33]。

工作组通常只在格式已获得 Web 浏览器核心——也就是 EPUB 3 阅读系统构建所依赖的 渲染引擎——广泛支持时,才将其纳入为核心媒体类型资源。 它们是阅读系统开发者和 EPUB 创建者之间的一项约定,用以确保 EPUB 出版物渲染的可预测性。

3.3 外来资源

核心媒体类型资源不同,外来资源是在 EPUB 内容文档外来内容文档中使用时,不保证会获得 阅读系统支持的资源。

EPUB 创建者 MUST 为外来资源提供回退, 其中回退采用以下形式之一:

有关其元素所提供的内在回退能力,请参阅 [html] 和 [svg] 规范。

3.5.2 内在 回退还提供了关于如何为特定元素解释回退的 补充信息。

3.4 豁免资源

豁免资源同时具有外来资源核心媒体类型资源的属性。它最类似于 外来资源,因为它不保证获得 阅读系统支持;但与核心媒体类型 资源一样,它不需要回退。

豁免资源只有少数特殊情况。例如,视频被豁免 回退,因为目前对于核心媒体类型视频格式还没有共识(即 没有可回退的格式)。类似地,音频和视频轨道也被豁免,以允许 EPUB 创建者使用阅读系统最佳支持的任何 格式来满足可访问性要求。

以下列表详细说明内容特定的豁免资源情况,包括对 EPUB 创建者可在何处使用它们的任何限制。

字体

所有尚未作为字体核心媒体类型涵盖的字体资源 都是豁免资源。

此豁免允许 EPUB 创建者使用任何字体格式而无需回退, 无论阅读系统支持预期如何,因为 CSS 规则会确保在不 支持的情况下使用回退字体。

有关更多信息,请参阅 字体的阅读系统 支持 要求 [epub-rs-33]。

轨道

从 [htmltrack 元素引用的所有音频和视频轨道(例如 [webvtt] 字幕、字幕说明和描述) 都是豁免资源。

视频

从 [html] video 引用的所有视频编解码器——包括任何子 source 元素 ——都是豁免资源。

虽然鼓励阅读系统至少支持 H.264 [h264] 和 VP8 [rfc6386] 视频编解码器之一, 但支持视频编解码器不是一致性 要求。EPUB 创建者在决定包含哪些视频格式时,必须考虑采用广度、播放 质量和技术版税等因素。

上述豁免不适用于 spine。如果豁免资源 用于 spine,并且它本身不是 EPUB 内容文档,则在该上下文中将需要 回退。

除内容特定的豁免外,如果满足以下条件, 资源也会被分类为豁免资源:

此豁免允许 EPUB 创建者在 EPUB 容器 中包含并非供 EPUB 阅读系统使用的 资源。此豁免的主要情况是允许数据文件随 EPUB 出版物一起传递,无论是供脚本在其组成的 EPUB 内容文档中使用, 还是供外部应用程序使用(例如,科学期刊可能会包含一个数据集,并附带 如何从 EPUB 容器中提取它的说明)。

它还允许 EPUB 创建者在外来内容文档中使用外来资源,而不需要阅读 系统或 EPUB 一致性检查器理解这些 资源的回退能力(即,对外来内容文档的回退要求会覆盖其中的任何 渲染问题)。由于该资源未从 EPUB 内容文档引用,它 自动免于回退要求。

3.5 资源回退

3.5.1 Manifest 回退

Manifest 回退是包 文档的一项特性,它为 出版物资源创建 manifest 回退链,允许 阅读系统 选择一种它们能够渲染的替代格式。

回退链通过 fallback 属性manifest item 元素上创建。该属性引用另一个 manifest itemID [xml],该 item 是当前 item 的 回退。从给定 itemfallback 属性开始,阅读系统能够到达的所有引用的有序列表 表示该 item 的完整回退链。该链也 表示 EPUB 创建者首选的回退 顺序。

Manifest 回退有两种情况:

Spine 回退

EPUB 创建者 MUST外来内容 文档指定回退链,以确保 阅读系统始终能够渲染该 spine 项。在这种情况下, 该链 MUST 至少包含一个 EPUB 内容文档

EPUB 创建者 MAY 为 EPUB 内容文档提供回退 (例如,为脚本化内容提供回退)。

当回退链包含多个 EPUB 内容文档时,EPUB 创建者可以使用 properties 属性来区分 每个文档的用途。

内容回退

内容回退的最初目的是为 [html] img 元素指定回退图像。由于 HTML 现在具有图像的内在回退机制, 强烈不建议使用内容回退。EPUB 创建者应始终 使用 [html] 和 [svg] 的内在回退能力来 提供回退 内容。

当引用外来资源的元素 没有内在回退能力时,EPUB 创建者 MUST 为其提供内容回退。在这种情况下, 回退链 MUST 至少包含一个 核心媒体类型 资源

EPUB 创建者 MAY 也为核心媒体 类型资源提供 manifest 回退(例如,允许阅读系统从多种图像格式中选择)。

无论指定哪种类型的 manifest 回退,回退链都 MUST NOT 包含 对链中 item 元素的自引用或循环引用。

由于无法对在 data URL 中表示的资源使用 manifest 回退,EPUB 创建者只能在存在内在回退机制时, 将外来资源表示为 data URL。

3.5.2 内在回退

以下小节提供关于特定元素的内在回退 要求的补充说明。

3.5.2.1 HTML audiovideo 回退

EPUB 创建者 MUST NOT 使用 媒体元素 (即 audiovideo)内嵌入的 [html流内容作为音频 外来资源的内在回退。只有子 source 元素 [html] 提供内在 回退能力。

只有不识别 audiovideo 元素的较旧 阅读系统 (例如 EPUB 2 阅读系统)会渲染嵌入的 内容。当阅读系统支持这些元素但不支持可用的媒体格式时, 它们不会为用户渲染嵌入内容。

回退要求仅适用于从 audiovideo 元素引用的音频外来资源。视频资源 不需要回退;它们是豁免资源

3.5.2.2 HTML img 回退

由于 EPUB 创建者 可以在 [html] img 元素中指定的来源种类繁多,因此以下回退条件适用于其 使用:

3.5.2.3 HTML script 元素

虽然数据块具有不同于其包含 XHTML 内容文档的单独 MIME 媒体类型 [rfc2046], 但无法提供内在回退,因为 [html] script 元素没有指定这样的 机制。也无法提供 manifest 回退,因为数据块不能在 EPUB 容器中定义为独立文件,而始终作为内联 script 元素嵌入。

但是,由于 script 元素不表示用户内容—— 数据块除非被脚本操纵,否则不会被渲染,并且由脚本渲染的内容已经具有 核心 媒体类型要求——要求原始数据提供回退并没有 实际用途。

因此,为确保 EPUB 创建者能够出于脚本 目的包含数据块,它们被免除回退要求。

此豁免使数据块与数据文件豁免保持一致。

截至发布时,[svg] 尚未定义数据块,但如果未来更新加入该概念, 同样的排除也会适用。

3.6 资源位置

EPUB 创建者 MAYEPUB 容器之外托管以下类型的 出版物资源

EPUB 创建者 MUST 将所有其他资源存储在 EPUB 容器内。

只要可能,强烈鼓励将所有资源存储在 EPUB 容器内部,因为这样 用户无论连接状态如何都能访问完整呈现。

当资源必须位于 EPUB 容器之外时,RECOMMENDED EPUB 创建者 通过安全的 https URI 方案 [rfc9110] 引用它们,以限制 使其出版物和用户暴露于网络攻击的威胁。阅读 系统可能不会加载 使用 http 等不安全方案引用的 远程资源

这些出版物资源定位规则适用,无论给定资源是 核心媒体类型资源还是 外来资源

有关如何指示 manifest item 引用 远程资源的更多信息,请参阅 remote-resources 属性

3.7 Data URL

data: URL 方案 [rfc2397] 用于将资源 直接编码到 URL 字符串中。该方案的优点是它允许 EPUB 创建者 将资源嵌入另一个资源中,从而避免需要外部文件。

EPUB 创建者 MUST NOT 在以下可能导致 顶级内容文档顶级浏览上下文 [html] 的场景中使用 data URL:

这些对 data URL 使用的限制是为了防止安全问题,并确保 阅读系统能够确定接下来将用户带到何处 (即,因为 data URL 不能从 spine 引用)。

随着允许使用 data URL 的相应标准不断演进,data URL 的禁止使用列表可能会发生变化。

嵌入带来的一个结果是,data URL 中的数据在 manifest 报告目的上不被视为其自身唯一的 出版物资源 (即,只有其包含的出版物 资源会被列出)。然而,由于这些数据具有自己的媒体类型,因此仍受 外来资源限制约束。因此,EPUB 创建者 MUST 将 data URL 编码为核心媒体类型资源,或 使用宿主格式的内在回退 机制提供回退。

3.8 File URL

file: URL 方案在 [rfc8089] 中被定义为 “标识存储在主机上的结构化对象命名和访问环境 (‘文件系统’)中的对象(‘文件’)。” 它通常用于从本地操作 系统检索文件。

在可在不同主机之间传输的 EPUB 出版物中使用 file URL, 表示存在安全风险,也不可互操作。因此, EPUB 创建者 MUST NOT 在 EPUB 出版物中使用 file URL。

3.9 XML 一致性

任何属于基于 XML 的媒体类型 [rfc2046] 的出版物资源

上述约束适用,无论给定出版物资源是 核心媒体类型资源还是 外来资源

[html] 和 [svg] 正在移除对 XML base 属性 [xmlbase] 的支持。 EPUB 创建者应避免使用此特性。

4. 开放容器格式 (OCF)

4.1 介绍

本节是非规范性的。

OCF 是 EPUB 出版物所必需的容器技术。OCF 可在 以下工作流中发挥作用:

本节定义了抽象层面上组织文件集合的规则:“抽象 容器”。它还定义了在 ZIP 归档中表示该抽象容器的规则: “物理容器”。ZIP 物理容器的规则建立在 [odf] 所使用的 ZIP 技术之上。

OCF 还为那些需要此功能的 EPUB 出版物定义了一种标准方法,用于 混淆嵌入字体

4.2 OCF 抽象容器

4.2.1 介绍

本节是非规范性的。

OCF 抽象容器文件系统模型使用一个 单一公共根目录。所有 容器资源都位于以根目录为首的目录 树内,但本规范并未强制要求它们采用任何特定的文件系统结构。

该文件系统模型还包括一个名为 META-INF 的强制目录,它是 根目录的直接子目录,并存储以下特殊文件:

container.xml [必需]

标识一个或多个定义 EPUB 出版物包文档

signatures.xml [可选]

包含各种资产的数字签名。

encryption.xml [可选]

包含关于出版物资源加密的信息。当 EPUB 创建者使用 字体 混淆时,此文件是强制性的。

metadata.xml [可选]

用于存储有关 OCF ZIP 容器的元数据。

rights.xml [可选]

用于存储有关数字权利的信息。

manifest.xml [可选]

Open Document Format [odf] 允许的容器内容清单。

有关 META-INF 目录中各文件的一致性要求,请参阅 4.2.6 META-INF 目录

4.2.2 文件和目录 结构

OCF 抽象容器的虚拟文件系统 MUST 为容器的所有内容具有一个单一公共根 目录

OCF 抽象容器 MUST 包括一个名为 META-INF 的配置文件目录,它是容器根目录的直接子目录。有关该 目录内容的要求,请参阅 4.2.6 META-INF 目录

根目录中的文件名 mimetype 保留供 OCF ZIP 容器使用,如 4.3 OCF ZIP 容器中所说明。

META-INF 目录中的文件和 mimetype 文件不是 出版物资源,因此 MUST NOT 列在 manifest 中。

EPUB 创建者 MAY 将 OCF 抽象容器内的所有其他 文件放置在根目录的任何后代位置, 但不得位于 META-INF 目录中。EPUB 创建者 MUST NOTEPUB 出版物中引用 META-INF 目录中的文件。

一些阅读系统不提供对 存储包文档的目录之外资源的访问。因此,EPUB 创建者 应将所有资源放置在包含包文档的目录处或 其下,以避免互操作性问题。

在为出版物创建多个呈现版本 [epub-multi-rend-11] 时, 更常遇到此问题。

4.2.3 文件路径和文件名

OCF 抽象容器的上下文中,文件路径文件名标量值字符串 [infra](即 其值区分大小写)。

此外,以下限制旨在允许文件路径和文件名在大多数操作系统上 无需修改即可使用:

  • 文件名 MUST NOT 超过 255 字节。

  • OCF 抽象容器内任何目录或文件的文件路径 MUST NOT 超过 65535 字节。

  • 文件名 MUST NOT 使用以下 [unicode] 字符,因为 常用操作系统可能无法一致支持这些字符:

    • 斜线:/ (U+002F)

    • 引号:" (U+0022)

    • 星号:* (U+002A)

    • 作为最后一个字符的句点:. (U+002E)

    • 冒号:: (U+003A)

    • 小于号:< (U+003C)

    • 大于号:> (U+003E)

    • 问号:? (U+003F)

    • 反斜线:\ (U+005C)

    • 竖线:| (U+007C)

    • DEL (U+007F)

    • C0 范围 (U+0000 … U+001F)

    • C1 范围 (U+0080 … U+009F)

    • 私用区 (U+E000 … U+F8FF)

    • 所有 Unicode 非字符,具体包括:

      • 基本多文种平面中的 32 个连续字符 (U+FDD0 … U+FDEF)

      • 基本多文种平面的最后两个码点 (U+FFFEU+FFFF)

      • 辅助平面末尾的最后两个码点 (U+1FFFE, U+1FFFF … U+EFFFE, U+EFFFF)

    • 特殊字符 (U+FFF0 … U+FFFF)

    • 辅助私用区-A (U+F0000 … U+FFFFF)

    • 辅助私用区-B (U+100000 … U+10FFFF)

    Unicode 字符数据库 [uax44] 还 包括一个已弃用字符列表。 也建议 EPUB 创建者避免使用这些字符, 因为预计 EPUB 一致性检查器会标记其 使用。

  • 为了兼容较旧的阅读系统,文件名 SHOULD NOT 包含 SPACE (U+0020) 字符。

  • 同一目录内的所有文件名 MUST 在经过 Unicode 规范等价归一化 [uax15] 然后进行完整大小写折叠 [unicode] 后保持唯一。(更多信息请参阅 Unicode 规范等价大小写折叠 归一化步骤 [charmod-norm]。)

如果 EPUB 创建者动态集成资源 (即命名超出其控制范围),他们应意识到,为使文件名保持在 255 字节限制内而自动截断文件名可能导致损坏。这是由于 UTF-8 等多字节编码中 字节和字符之间存在差异;因此,避免在字符中间截断非常重要。 更多信息请参阅 [international-specs] 中关于“截断或限制 字符串长度”的小节。

当内容的互操作性很关键时,EPUB 创建者应在文件命名方面格外谨慎。 受限字符列表旨在帮助避免一些已知的问题区域, 但它并不保证所有其他 Unicode 字符都受支持。虽然 Unicode 支持现在比 EPUB 的早期 迭代好得多,但仍可能遇到旧工具和工具链(例如,仅支持 [us-ascii] 的 ZIP 工具)。

4.2.4 派生文件路径

派生文件路径,给定 OCF 抽象容器中的一个文件或目录 file,应用以下步骤 (使用 [infra] 的术语表示):

  1. path 为一个空列表
  2. currentfile
  3. current 不是根 目录时:
    1. current文件名前置path
    2. current 设置为 current 的父目录。
  4. 返回使用 U+002F (/) 字符对 path 进行串联的结果。

4.2.5 OCF 抽象容器中的 URL

容器根 URLURL [url],对应于 根目录。它是实现特定的,但 EPUB 创建者 MUST 假定它具有 以下属性:

OCF 抽象容器中文件或目录的 内容 URL,是以容器根 URL 作为 base解析该文件的文件路径所得的结果。

容器根 URL 是阅读系统分配给 EPUB 容器根的 URL。它通常取决于阅读系统内部如何实现 容器文件系统。

但是,阅读系统不能任意使用任何 URL,而必须使用符合上述约束的 URL。 这些约束确保 EPUB 中出现的任何相对 URL 字符串始终会被解析为 容器内某个资源的 URL(该资源可能存在,也可能不存在)。 这些约束的主要原因,是为了避免解析后的 URL “泄漏”到容器文件之外 而导致潜在的运行时安全问题。

例如,https://localhost:12345/https://www.example.org:12345/ 这样的 URL 符合这些属性。但 https://localhost:12345/path/to.epub/file:///path/to.epub#path=/jar:file:/path/to.epub!/EPUB/ 这样的 URL 不符合(以这三个示例作为基准解析 URL 字符串“..”将分别 返回 https://localhost:12345/path/file:///path/ 和一个解析 错误)。为根目录分配符合上述属性定义的 URL,是阅读系统的责任。

解析可能会将文件路径中的某些字符替换为其百分号编码替代形式。例如, A/B/C/file name.xhtml 会变为 A/B/C/file%20name.xhtml

字符串 url 是一个valid-relative-ocf-URL-with-fragment string,如果 它是一个 path-relative-scheme-less-url string,可选地后跟 U+0023 (#) 和一个 url-fragment string,并且如果以下 步骤返回 true

  1. 容器根 URL设置为 https://a.example.org/A/

    说明

    该算法的目标是检测 url 是否可能被视为 “泄漏”到容器之外。为此,使用标准的 URL 解析算法和人工构造的根 URL; 对“泄漏”的检测通过比较解析结果与第一个测试路径 段(A)的存在情况来完成。(注意,为了此算法的目的, 人工容器根 URL 故意通过使用第一个测试 路径段而违反所要求的属性。)

  2. base 为必须用于解析 url基准 URL,该基准由使用 url 的上下文(文档或环境)定义,并根据 包文档的内容 URL 确定 (参见 5.2 解析 包文档中的 URL)。

    说明

    如果 URL 位于包文档中,则 base 变量设置为 包文档的内容 URL。如果文档位于 META-INF 目录中,则 base 变量设置为 容器根 URL(参见 4.2.6.2 解析 META-INF 目录中的 URL)。如果 URL 位于 XHTML 内容 文档中,用于解析的基准 URL 由 HTML 标准定义。通常,它会是内容文档的 内容 URL(除非使用了不建议使用的 base 元素)。

  3. testURLRecord 为以 baseurl 应用 URL parser 的结果。
  4. testURLStringA 为对 testURLRecord 应用 URL Serializer 的结果。
  5. 容器根 URL设置为 https://b.example.org/B/

    说明

    之所以使用不同且人工构造的容器根 URL 设置重复相同步骤两次, 是为了避免在 url 字符串也包含 /A/ 时可能发生的冲突。例如,考虑 url../../A/doc.xhtml 的情况。

  6. base 设置为必须用于解析 url基准 URL,该基准由使用 url 的上下文(文档或环境)定义,并根据包文档的内容 URL 确定(参见 5.2 解析 包文档中的 URL)。
  7. testURLRecord 设置为以 baseurl 应用 URL parser 的结果。
  8. testURLStringB 为对 testURLRecord 应用 URL Serializer 的结果。
  9. 如果 testURLStringA 不是以 https://a.example.org/ 开头,或 testURLStringB 不是以 https://b.example.org/ 开头, 则返回 true

    说明

    如果任何结果都不共享测试 URL 主机,则意味着 url 或其基准 URL(例如在 HTML 中,如果用 base 元素显式设置)是绝对的,并指向 容器之外。这是可接受的。

  10. 如果 testURLStringAhttps://a.example.org/A/ 开头,且 testURLStringBhttps://b.example.org/B/ 开头,则返回 true

    说明

    第一个测试路径段(分别为 AB)的存在表明 URL 没有泄漏到容器之外。

  11. 返回 false

在 OCF 抽象容器中,任何 URL 字符串 MUST 是一个 absolute-url-with-fragment string 或一个 valid-relative-ocf-URL-with-fragment string

此外,所有 relative-URL-with-fragment strings [url] 在解析后,MUST 等于 OCF 抽象容器中某个现有文件的内容 URL。

这些对 URL 字符串的约束意味着:

  • / (U+002F) 开头的相对 URL 字符串(例如 /EPUB/content.xhtml)是不允许的;
  • 包含的双点 URL 路径段数量 多于到达目标文件所需数量的相对 URL 字符串(例如 EPUB/../../../../config.xml)是不允许的;
  • 任何其他绝对或相对 URL 字符串都是允许的。

注意,在任何情况下,即使是上述不允许的 URL 字符串,在解析后也不会 “泄漏”到容器之外(如本节第一个注释中所解释)。然而,为了更好地 与不符合规范或旧式阅读系统和工具链实现互操作,它们仍然是不允许的。

4.2.6 META-INF 目录

4.2.6.1 纳入 OCF 抽象容器

所有 OCF 抽象容器 MUST 在其根目录中包含一个名为 META-INF 的目录。

该目录保留用于配置文件,特别是 4.2.6.3 保留文件中定义的那些文件。

4.2.6.2 解析 META-INF 目录中的 URL

要解析位于 META-INF 目录中的文件所使用的 URL 字符串 urlMUSTURL parser 应用于 url,并以 容器根 URL作为 base

4.2.6.3 保留文件
4.2.6.3.1 容器文件 (container.xml)

META-INF 目录中的 REQUIRED container.xml 文件 标识 OCF 抽象 容器中可用的包文档

除非另有规定,本节定义的所有 [xml] 元素都位于 urn:oasis:names:tc:opendocument:xmlns:container 命名空间 [xml-names] 中。

在移除所有来自其他命名空间的元素和属性(包括这些元素的所有属性和内容)后, 此文件的内容 MUST 对本节中的定义有效。

XML Schema 也非正式地定义了 此文件的内容。

4.2.6.3.1.1 container 元素

container 元素封装 container.xml 文件中的所有信息。

元素名称:

container

用法:

container.xml 文件的 REQUIRED 根元素 [xml]。

属性:
version [必需]
此属性 MUST 具有值 “1.0”。
内容模型:

按以下顺序:

4.2.6.3.1.2 rootfiles 元素

rootfiles 元素包含 EPUB 容器中可用 包文档的列表。

元素名称:

rootfiles

用法:

containerREQUIRED 第一个子元素。

属性:

内容模型:
4.2.6.3.1.3 rootfile 元素

每个 rootfile 元素标识 EPUB 容器中一个 包文档的位置。

元素名称:

rootfile

用法:

作为 rootfiles 元素的子元素。可重复。

属性:
full-path [必需]

标识包文档的位置。

该属性的值 MUST 是一个 path-relative-scheme-less-URL string [url]。该路径 相对于根目录

media-type [必需]

标识包文档的媒体类型。

该属性的值 MUST 是 “application/oebps-package+xml”。

内容模型:

如果 EPUB 创建者定义了多个 rootfile 元素,则每个元素 MUST 引用一个符合相同 EPUB 版本的包文档。每个包 文档表示 EPUB 出版物的一种呈现。

虽然 EPUB 容器提供了引用多个包文档的能力, 但本规范并未定义如何解释可用选项或如何从中选择。有关如何打包内容的多个呈现版本的 更多信息,请参阅 [epub-multi-rend-11]。

4.2.6.3.1.6 示例

本节是非规范性的。

4.2.6.3.2 加密文件 (encryption.xml)

META-INF 目录中的 OPTIONAL encryption.xml 文件保存 容器内容的所有加密信息。如果 EPUB 创建者加密容器内的任何资源,则他们 MUST 包含一个 encryption.xml 文件,以提供有关所用加密的信息。

4.2.6.3.2.1 encryption 元素
元素名称:

encryption

命名空间:

urn:oasis:names:tc:opendocument:xmlns:container

用法:

encryption.xml 文件的 REQUIRED 根元素 [xml]。

属性:

内容模型:

任意顺序:

  • EncryptedKey [一个或多个]
  • EncryptedData [一个或多个]

encryption 元素包含由 [xmlenc-core1] 定义的 EncryptedKeyEncryptedData 类型的子元素。

EncryptedKey 元素描述容器中使用的每个 加密密钥,而 EncryptedData 元素描述每个 加密文件。每个 EncryptedData 元素都会引用一个 EncryptedKey 元素,如 XML Encryption 中所述。

XML Schema 也非正式地 定义了 encryption.xml 文件的内容。

OCF 独立加密各个文件,以牺牲一部分安全性换取更好的 性能,使容器内容能够逐步解密。以这种方式加密会暴露整个 包的目录结构和文件命名。

OCF 使用 XML Encryption [xmlenc-core1] 来提供加密框架, 允许使用多种算法。XML Encryption 指定了加密任意数据并用 XML 表示 结果的过程。即使 OCF 抽象 容器可能包含非 XML 数据,EPUB 创建者也可以使用 XML Encryption 加密 OCF 抽象容器中的所有数据。OCF 加密 仅支持加密容器内的整个文件,不支持加密文件的部分内容。当 encryption.xml 文件存在时,EPUB 创建者 MUST NOT 对其加密。

加密数据会替换 OCF 抽象容器中的未加密数据。例如, 如果 EPUB 创建者加密名为 photo.jpeg 的图像,他们应 用加密后的内容替换 photo.jpeg 资源的内容。在 ZIP 目录中, EPUB 创建者 SHOULD 存储加密文件, 而不是对其进行 Deflate 压缩。

注意,在某些情况下,需要混淆 EPUB 出版物所引用的嵌入字体的存储, 使其更难被提取并无限制使用。虽然混淆不是加密,但阅读 系统会将 encryption.xml 文件与字体混淆算法结合使用,以识别要 去混淆的字体。

EPUB 创建者 MUST NOT 加密 以下文件:

  • mimetype
  • META-INF/container.xml
  • META-INF/encryption.xml
  • META-INF/manifest.xml
  • META-INF/metadata.xml
  • META-INF/rights.xml
  • META-INF/signatures.xml
  • [= package document =]

EPUB 创建者 MAY 随后使用 Decryption Transform for XML Signature [xmlenc-decrypt] 加密已签名的资源。此 特性使 阅读系统能够区分签名前加密的数据和 签名后加密的数据。

4.2.6.3.2.2 压缩和加密的顺序

当存储在 OCF ZIP 容器中时, EPUB 创建者 SHOULD 在加密之前压缩具有非编解码器内容类型的数据流。 EPUB 创建者 MUST 使用 Deflate 压缩。此做法确保 ZIP 容器中存储的文件条目具有较小的大小。

EPUB 创建者 SHOULD NOT 在加密之前压缩具有 编解码器内容类型的数据流。在这种情况下,额外压缩会在制作时引入不必要的 处理开销(尤其是对于大型资源文件),并在使用时影响音频/视频播放性能。在某些情况下, 压缩与某些加密方案的组合甚至可能破坏 阅读系统处理部分内容请求(例如 HTTP 字节 范围)的能力,这是由于在媒体播放之前无法确定完整资源长度(例如 HTTP Content-Length 标头)的技术不可能性。

当 EPUB 创建者在加密之前压缩数据流时,他们 SHOULD 提供 额外的 EncryptionProperties 元数据,以指定初始资源的大小 (即压缩和加密之前的大小),如下面定义的 Compression XML 元素所示。当 EPUB 创建者在加密之前不 压缩数据流时,他们 MAY 提供额外的 EncryptionProperties 元数据,以指定初始 资源的大小(即加密之前的大小)。

元素名称:

Compression

命名空间:

http://www.idpf.org/2016/encryption#compression

用法:

EncryptionPropertyOPTIONAL 子元素。

属性:
Method [必需]

标识所使用的压缩方法。

值为“0”(无压缩)或“8” (Deflate 算法)。

OriginalLength [必需]

表示初始资源的大小(字节数)。

值为正整数。

内容模型:

4.2.6.3.3 Manifest 文件 (manifest.xml)

META-INF 目录中的 OPTIONAL manifest.xml 文件 提供容器中文件的 manifest。

OCF 规范并不强制要求 manifest 的格式。

注意,包文档指定了用于处理 EPUB 出版物的唯一 manifest。阅读系统不使用 此文件。

此特性仅为兼容 [odf] 而存在。
4.2.6.3.4 元数据 文件 (metadata.xml)

META-INF 目录中的 OPTIONAL metadata.xml 文件 仅用于容器级元数据。

如果 EPUB 创建者包含 metadata.xml 文件,他们 SHOULD 仅在其中使用 命名空间限定的元素 [xml-names]。该文件 SHOULD 包含命名空间 http://www.idpf.org/2013/metadata 中的 根元素 [xml] metadata,但为了向后兼容,本规范允许使用其他根元素。

本规范的此版本并未定义用于 metadata.xml 文件的元数据。本规范的未来版本 MAY 定义 容器级元数据。

4.2.6.3.5 权利管理文件 (rights.xml)

本规范将 META-INF 目录中的 OPTIONAL rights.xml 文件保留用于权利持有人、中介和用户之间 对 EPUB 出版物进行可信交换。

EPUB 创建者未包含 rights.xml 文件时, OCF 抽象容器中没有任何部分在容器级受到权利 管理。权利表达式可能存在于 EPUB 出版物内部。

4.2.6.3.6 数字签名文件 (signatures.xml)

添加数字签名并不能保证恶意行为者无法篡改 EPUB 出版物,因为 阅读系统 不必检查签名。

META-INF 目录中的 OPTIONAL signatures.xml 文件 保存容器及其内容的数字签名。

4.2.6.3.6.1 signatures 元素
元素名称:

signatures

命名空间:

urn:oasis:names:tc:opendocument:xmlns:container

用法:

signature.xml 文件的 REQUIRED 根元素 [xml]。

属性:

内容模型:
  • Signature [一个或多个]

signature 元素包含 Signature 类型的子元素,如 [xmldsig-core1] 所定义。 EPUB 创建者可以 对整个 EPUB 出版物或其部分应用签名,并且可以指定对任何类型的数据进行签名 (即不限于 XML)。

XML Schema 也非正式地 定义了 signatures.xml 文件的内容。

当 EPUB 创建者未包含 signatures.xml 文件时,他们并未 在容器级对 OCF 抽象容器的任何部分进行签名。 EPUB 出版物内部可能存在数字签名。

当 EPUB 创建者为 OCF 抽象容器创建数据签名时, 他们 SHOULD 将该签名作为 signatures 元素的最后一个子 Signature 元素添加。

signatures.xml 文件中的每个 Signature 都使用 [xmldsig-core1] Manifest 元素及其 Reference 子元素,通过 URL [url] 标识该签名所适用的数据。 EPUB 创建者可以分别或一起签名单个容器文件。 单独签名每个文件会为资源创建一个摘要值, 阅读系统可以独立验证。此方法可能会使 Signature 元素变得更大。如果 EPUB 创建者一起签名文件,他们可以在单个 XML Signature Manifest 元素中列出已签名文件的集合,并由一个或多个 Signature 元素引用它们。

EPUB 创建者可以对 OCF 抽象容器中任何或所有文件的整体进行签名, 但 signatures.xml 文件除外,因为 该文件将包含计算出的签名信息。EPUB 创建者是否以及如何 签名 signatures.xml 文件,取决于其目标。

如果 EPUB 创建者希望允许向 OCF 抽象容器添加或移除签名而不使其签名失效,他们 SHOULD NOT 签名 signatures.xml 文件。

如果 EPUB 创建者希望任何签名的添加或移除都会使其 签名失效,他们可以使用 [xmldsig-core1] 第 6.6.4 节中定义的 Enveloped Signature 变换,签名整个预先存在的签名文件,但排除正在创建的 Signature。此变换会签名所有先前 签名,并且如果随后向该包添加签名,它将变为无效。

如果 EPUB 创建者希望移除现有签名会使其签名失效, 但同时希望允许添加签名,他们可以 使用 XPath 变换仅签名现有签名。不过,这种 变换的细节超出本规范的范围。

[xmldsig-core1] 规范未将任何语义与 签名关联;代理可以包含语义信息,例如通过向 Signature 元素添加描述签名的信息。 [xmldsig-core1] 规范描述了如何向 签名添加附加信息,例如通过使用 SignatureProperties 元素。

4.3 OCF ZIP 容器

4.3.1 介绍

本节是非规范性的。

OCF ZIP 容器OCF 抽象容器的物理单文件表现形式。该 容器允许:

  • 在不同个人和/或 不同组织之间交换制作中的EPUB 出版物

  • 将 EPUB 出版物从出版商或转换机构转交给 发行或销售渠道;以及

  • EPUB 阅读系统或用户交付 EPUB 出版物。

4.3.2 ZIP 文件要求

OCF ZIP 容器使用 [zip] 指定的 ZIP 格式,但具有以下 约束和说明:

  • OCF ZIP 容器的内容 MUST 是一个符合要求的 OCF 抽象容器

  • OCF ZIP 容器 MUST NOT 使用 ZIP 应用 注记 [zip] 中允许 ZIP 文件跨多个存储介质展开或 分拆为多个文件的特性。

  • OCF ZIP 容器 MUST 在 ZIP 归档内仅包含存储 (未压缩)和 Deflate 压缩的 ZIP 条目。

  • OCF ZIP 容器 MAY 使用应用注记 [zip] 第 V 节 G 小节中定义为 “Version 1”的 ZIP64 扩展,并且 SHOULD 仅在内容需要时使用这些 扩展。

  • OCF ZIP 容器 MUST NOT 使用 ZIP 格式定义的加密 特性;相反,加密 MUST 使用 4.2.6.3.2 加密文件 (encryption.xml)中描述的特性完成。

  • OCF ZIP 容器 MUST 使用 UTF-8 [unicode] 编码文件系统 名称。

以下约束适用于 OCF ZIP 容器归档中的特定字段:

  • 在本地文件头表中,EPUB 创建者 MUSTversion needed to extract 字段设置为值 102045,以匹配给定文件所需的最大版本级别 (例如,Deflate 为 20,ZIP64 为 45)。

  • 在本地文件头表中,EPUB 创建者 MUSTcompression 方法字段设置为值 08

4.3.3 OCF ZIP 容器媒体类型标识

EPUB 创建者 MUSTmimetype 文件作为 OCF ZIP 容器中的第一个文件包含进去。此外:

  • mimetype 文件的内容 MUST 是使用 US-ASCII [us-ascii] 编码的 MIME 媒体类型 [rfc2046] 字符串 application/epub+zip
  • mimetype 文件 MUST NOT 包含任何前导或尾随的 填充或空白。
  • mimetype 文件 MUST NOT 以 Unicode 字节 顺序标记 U+FEFF 开始。
  • EPUB 创建者 MUST NOT 压缩或加密 mimetype 文件。
  • EPUB 创建者 MUST NOT 在其 ZIP 头中包含额外字段。

有关 application/epub+zip 媒体类型的更多信息,请参阅 I.2 application/epub+zip 媒体类型

4.4 字体混淆

注意

存在更好的字体保护方法。例如,[woff] 和 [woff2] 字体都允许 嵌入许可信息,并通过字体表压缩提供一定保护。使用远程托管字体也允许 字体子集化。建议 EPUB 创建者 仅在没有其他可用选项时使用本节定义的字体混淆。另请参阅 混淆的限制

4.4.1 介绍

本节是非规范性的。

由于 OCF ZIP 容器本质上是 ZIP 文件,常见可用的 ZIP 工具可 用于从包中提取任何未加密的内容流。此外,ZIP 文件的性质意味着,在某些系统上,其内容可能看起来像任何其他原生容器 (例如文件夹)。

虽然 ZIP 文件的这种简单性非常有用,但当不加密字体所带来的易提取性 并非期望的副作用时,它也会造成问题。例如,希望 包含第三方字体的 EPUB 创建者 通常不希望该字体被他人提取并重复使用。更关键的是,许多商业字体允许嵌入, 但嵌入字体意味着使其成为 EPUB 出版物的组成部分,而不仅仅是将 原始字体文件随内容一起提供。

由于现代操作系统中集成的 ZIP 支持非常普遍,单纯将字体放在 OCF ZIP 容器中不足以表示该字体不能在其他 上下文中重复使用。这种不确定性可能削弱 EPUB 出版物原本有用的字体嵌入能力。

为了阻止字体被重复使用,一些字体供应商可能仅在字体以某种方式绑定到 EPUB 出版物时才允许在 EPUB 出版物中使用它们。也就是说,如果字体 文件不能使用该计算设备的内置工具直接安装在操作系统上使用, 并且不能被其他 EPUB 出版物直接使用。

为字体提供数字权利管理或 执行系统超出了本规范的范围。本节转而定义一种混淆方法, 该方法会要求最终 OCF 接收者付出额外工作,才能获得对任何 已混淆字体的一般访问。

4.4.2 限制

本节是非规范性的。

本规范并不声称混淆构成加密,也不保证 该资源能免受版权侵权。所希望的只是此 算法能够满足那些需要某种保证的供应商的要求,即其字体 不能仅通过解压 OCF ZIP 容器并复制资源就被提取。

与任何保护方案一样,混淆无法完全保护字体免于以其 去混淆状态被访问。该机制仅为不了解许可细节的人提供一道障碍。 它无法阻止有决心的用户通过以下替代方式获得对字体的完全访问:

  • 应用去混淆算法以提取原始字体文件;
  • 通过必须对字体去混淆以渲染内容的阅读系统访问去混淆字体 (例如,通过基于浏览器的阅读 系统访问资源);或
  • 通过提供内容视觉渲染的创作工具访问去混淆字体。

因此,这种混淆方法是否满足各个字体 许可证的要求,仍是许可方和被许可方需要回答的问题。EPUB 创建者 负责确保其对混淆的使用满足字体许可要求。

EPUB 创建者还应注意,混淆可能导致阅读系统中的互操作性问题, 因为阅读系统并不被要求对字体去混淆。因此, 其出版物的视觉呈现可能因阅读系统而异。

还要注意,该算法仅限于混淆字体。它并非作为 混淆 EPUB 容器中任何资源的通用机制。

4.4.3 混淆密钥

EPUB 创建者 MUST唯一 标识符派生混淆算法中使用的密钥。

XML 1.0 规范第 2.3 节 [xml] 所定义, 所有空白字符都 MUST 从此标识符中移除——具体而言,是 Unicode 码点 U+0020U+0009U+000DU+000A

EPUB 创建者 MUST 按 Secure Hash Standard [fips-180-4] 的规定, 生成所得字符串 UTF-8 表示的 SHA-1 摘要。他们随后可以将 此摘要用作算法的密钥。

4.4.4 混淆算法

用于混淆字体的算法包括修改字体文件的前 1040 字节(约 1KB)。 (如果字体文件小于 1040 字节——这种情况不太可能——此过程 将修改整个文件。)

要混淆原始数据,将对原始字体文件的第一个字节和 混淆密钥的第一个字节执行逻辑异或 (XOR) 的结果, 存储为嵌入字体的第一个字节。

对源和密钥的下一个字节重复此过程,并继续处理密钥中的所有字节。 此时,该过程从密钥的第一个字节和源的第 21 个字节开始继续。 一旦以这种方式编码了 1040 字节(或到达源末尾), 即将源中的任何剩余数据直接复制到目标。

EPUB 创建者 MUST 在压缩并添加到 OCF ZIP 容器之前混淆字体。注意,由于混淆不是加密,此要求并不违反 4.2.6.3.2 加密文件 (encryption.xml)中要求在 加密字体之前压缩字体的要求。

以下伪代码展示了混淆算法。

  1. set ocf to OCF ZIP container file
  2. set source to font file
  3. set destination to obfuscated font file
  4. set keyData to key for file
  5. set outer to 0
  6. while outer < 52 and not (source at EOF)
    1. set inner to 0
    2. while inner < 20 and not (source at EOF)
      1. read 1 byte from source (Assumes read advances file position)
      2. set sourceByte to result of read
      3. set keyByte to byte inner of keyData
      4. set obfuscatedByte to (sourceByte XOR keyByte)
      5. write obfuscatedByte to destination
      6. increment inner
      end while
    3. increment outer
    end while
  7. if not (source at EOF) then
    1. read source to EOF
    2. write result of read to destination
    end if
  8. Deflate destination
  9. store destination as source in ocf

4.4.5 指定混淆 字体

虽然从技术上说不是加密数据,但所有混淆字体 MUST 在 随 EPUB 出版物一起提供的 encryption.xml 文件中有一个条目(参见 4.2.6.3.2 加密文件 (encryption.xml))。

EPUB 创建者 MUST 为每个混淆字体指定一个 EncryptedData 元素。 每个 EncryptedData 元素 MUST 包含一个子 EncryptionMethod 元素,其 Algorithm 属性的值为 http://www.idpf.org/2008/embedding。此属性的存在表示使用 本规范中描述的算法。

EPUB 创建者 MUSTCipherData 元素的子 CipherReference 中列出混淆字体的路径。由于混淆算法仅限于字体, CipherReference 元素的 URI 属性 MUST 引用一个字体核心媒体类型资源

为防止将嵌入字体轻易复制到其他 EPUB 出版物中,EPUB 创建者 MUST NOTencryption.xml 文件中提供混淆密钥

5. 包文档

本节中定义的所有 [xml] 元素都位于 http://www.idpf.org/2007/opf 命名空间 [xml-names] 中,除非另有说明。

5.1 介绍

本节为非规范性内容。

包文档是一个 XML 文档,由一组元素组成, 每个元素封装有关 EPUB 出版物某个特定方面的信息。这些元素用于集中 元数据,详述各个资源,并提供阅读顺序以及渲染所需的其他信息。

以下列表概述了包文档中包含的信息:

一个 EPUB 出版物可以引用多个包文档,从而允许内容的替代 表示。更多信息请参阅 4.2.6.3.1 容器文件(container.xml

有关包文档的文件 属性的信息,请参阅 I.1 application/oebps-package+xml 媒体类型

5.2 解析 包文档中的 URL

要解析 包文档中使用的 URL 字符串 urlMUSTURL parser [url] 应用于 url, 并以包 文档的内容 URL作为 base

5.3 共享属性

本节提供共享属性(即允许出现在两个或更多 元素上的属性)的定义。

5.3.1 dir 属性(实现不足)

dir 属性被标记为实现不足, 因为阅读系统通常只支持一种 默认的文本显示方向。 仍强烈建议 EPUB 创建者设置 包文档中文本 值的正确方向性,以确保一旦这种情况 改善即可正确渲染。

指定承载元素及其后代的文本内容和 属性值的基方向 [bidi]。

允许的值为:

  • ltr — 从左到右的基方向;
  • rtl — 从右到左的基方向;以及
  • auto — 基方向使用 Unicode Bidi Algorithm [bidi] 确定。

当 EPUB 创建者省略该属性或使用无效值时, 阅读系统会假定其值为 auto

dir 属性中指定的基方向不会影响方向性文本段内部字符的顺序, 只影响这些文本段的相对顺序以及标点等弱方向性字符的 放置。

允许用于: collectionDublin Core 元素metapackage

5.3.2 href 属性

一个引用 资源的有效 URL 字符串 [url]。

该 URL 字符串 MUST NOT 通过包 文档中的元素引用资源(例如,通过 manifest item 或 spine itemref 声明)。

允许用于: itemlink

5.3.3 id 属性

元素的 ID [xml], 它 MUST 在文档 作用域内唯一。

允许用于: collectionDublin Core 元素itemitemreflinkmanifestmetapackagespine

5.3.4 media-type 属性

一个媒体类型 [rfc2046], 它指定所引用资源的类型和格式。

允许用于: itemlink

5.3.5 properties 属性

一个以空格分隔的属性值列表。

有关该属性的保留词汇表, 请参阅各元素的定义。

允许用于: itemitemreflink

5.3.6 refines 属性

在当前表达式与其值所标识的元素或资源之间建立关联。 EPUB 创建者 MUST 使用一个 path-relative-scheme-less-URL string 作为值,可选地后跟 U+0023 (#) 和一个 URL-fragment string,用于 引用其所描述的资源或元素。

refines 属性是否为 OPTIONAL 取决于所表达的 元数据类型。省略时,该元素定义一个主要表达式

当创建有关出版物资源的表达式时,refines 属性 SHOULD 指定一个片段标识符,引用该资源 manifest 条目ID [xml]。

细化链 MUST NOT 包含循环引用或自引用。

允许用于: linkmeta

5.3.7 xml:lang 属性

指定承载元素及其后代的文本内容和属性值的语言, 如 [xml] 的 2.12 Language Identification 一节中定义。每个 xml:lang 属性的值 MUST 是一个 格式良好的语言标签 [bcp47]。

允许用于: collectionDublin Core 元素metapackage

5.4 package 元素

package 元素封装包文档中表达的所有信息。

元素名称:

package

用法:

包文档的 REQUIRED 根元素 [xml]。

属性:
内容模型:

按以下顺序:

version 属性指定给定 EPUB 出版物所符合的 EPUB 规范 版本。该属性 MUST 具有值 “3.0”,以表示符合 EPUB 3。

本规范的更新并不代表 EPUB 3 的新版本(即每个新的 3.X 规范都是 EPUB 3 格式的延续)。工作组致力于 尽量减少会使现有内容失效的任何变更,从而允许 version 属性值保持不变。

unique-identifier 属性取一个 IDREF [xml],用于标识提供首选或主要 标识符的 dc:identifier 元素。

prefix 属性为未被本规范保留的 前缀提供一种声明机制。更多信息请参阅 D.1.4 prefix 属性

5.5 元数据节

5.5.1 metadata 元素

metadata 元素封装元信息。

元素名称:

metadata

用法:

packageREQUIRED 第一个子元素。

属性:

内容模型:

任意顺序:

包文档metadata 元素有两个 主要功能:

  1. 提供一组最小的元信息,供阅读系统用于在内部 编目 EPUB 出版物,并使 其可供用户使用(例如,在 书架中呈现)。

  2. 提供对控制内容布局和显示所需的所有渲染元数据的访问 (例如,固定布局属性)。

包文档不提供复杂的元数据编码能力。如果 EPUB 创建者需要提供更详细的信息, 他们可以使用 link 元素关联元数据记录(例如, 符合 [onix] 等国际标准的记录, 或为自定义目的创建的记录)。 这种方法允许阅读系统以元数据的原生形式处理它, 从而避免转换为最小包文档结构所可能带来的问题和信息丢失。

秉持这一理念,包文档只有以下 最小元数据要求:它 MUST 包含 [dcterms] dc:titledc:identifierdc:language 元素,以及 [dcterms] dcterms:modified 属性。所有其他元数据均为 OPTIONAL

meta 元素提供了一种通用机制,用于包含来自任何词汇表的元数据属性。 虽然 EPUB 创建者 MAY 将此机制用于任何元数据目的, 但他们通常会用它来包含 EPUB 规范中定义的渲染元数据。

有关无障碍元数据建议,请参阅 [epub-a11y-11]。

5.5.2 元数据值

Dublin Core 元素 [dcterms] 和 meta 元素具有强制的子文本内容 [dom]。在这些元素的描述中,本 规范将此内容称为 该元素的

这些元素在前导和尾随 ASCII 空白 [infra] 被去除后,MUST 具有非空值(即它们必须至少包含一个 非空白字符)。

这些元素值中的空白没有意义。在处理期间,一个或多个空白 字符序列会折叠为单个 空格 [infra]。

5.5.3 Dublin Core

5.5.3.1 必需元素
5.5.3.1.1 dc:identifier 元素

dc:identifier 元素 [dcterms] 包含一个 标识符,例如 UUIDDOIISBN

元素名称:

dc:identifier

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:
  • id [有条件地必需]

内容模型:

文本

EPUB 创建者 MUSTdc:identifier 元素中提供一个只唯一对应一个 EPUB 出版物的标识符——其唯一标识符。 此 dc:identifier 元素 MUST 指定一个 id 属性,其 值由 package 元素的 unique-identifier 属性引用。

虽然唯一标识符并非静态不变,但 EPUB 创建者应尽可能少地更改 EPUB 出版物的唯一标识符。唯一标识符在引用和分发目的上都应具有最大的 持久性。EPUB 创建者在进行更新元数据、修正 勘误或类似轻微变更等小修订时,不应 发布新的标识符。

EPUB 创建者 MAY 指定附加标识符。

建议 EPUB 创建者尽可能使用absolute-URL strings [url] 作为标识符。例如,包含 EPUB 创建者拥有的域名可以提高标识符的唯一性,而使用带有 命名空间 标识符的 URN [rfc8141] 可改善阅读 系统的处理。

EPUB 创建者 MAY 使用 identifier-type 属性来表明 dc:identifier 元素的值 符合某个既有系统,或由某个签发机构授予。

5.5.3.1.2 dc:title 元素

dc:title 元素 [dcterms] 表示 EPUB 出版物名称的一个 实例。

元素名称:

dc:title

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:
内容模型:

文本

文档顺序中的第一个 dc:title 元素是 EPUB 出版物的主 标题(即阅读系统呈现给用户的主要标题)。

EPUB 创建者应仅使用一个 dc:title 元素,以确保 标题在阅读系统中一致渲染。

虽然可以为多部分标题包含多个 dc:title 元素, 但阅读系统对附加 dc:title 元素的支持并不一致。阅读系统可能会忽略附加段落,或 以意外方式组合它们。

例如,以下示例展示了一个基本的多部分标题:

<metadata …>
   <dc:title>
      THE LORD OF THE RINGS
   </dc:title>
   <dc:title>
      Part One: The Fellowship of the Ring
   </dc:title></metadata>

同一标题也可以改用单个 dc:title 元素表示,如下所示:

<metadata …>
   <dc:title>
       THE LORD OF THE RINGS, Part One:
       The Fellowship of the Ring
   </dc:title></metadata>

本规范的先前版本建议使用 title-typedisplay-seq 属性来标识并 格式化多部分标题的各段(参见 Great Cookbooks 示例)。仍然可以添加这些语义,但它们 也未得到良好支持。

5.5.3.1.3 dc:language 元素

dc:language 元素 [dcterms] 指定 EPUB 出版物内容的 语言。

元素名称:

dc:language

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:

id [可选]

内容模型:

文本

每个 dc:language 元素的 MUST 是一个格式良好的语言标签 [bcp47]。

虽然 EPUB 创建者 MAY 为 多语言出版物指定附加的 dc:language 元素,但 阅读系统会将文档顺序中的第一个 dc:language 元素视为 EPUB 出版物的主要语言。

出版物 资源不会从 dc:language 元素继承其语言。EPUB 创建者必须使用该格式的内在方法设置 资源的语言。

5.5.3.2 可选元素
5.5.3.2.1 一般定义

dc:identifierdc:languagedc:title 之外的所有 [dcterms] 元素均被指定为 OPTIONAL。这些元素符合以下 通用定义:

元素名称:

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

命名空间:

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

用法:

metadataOPTIONAL 子元素。 可重复。

属性:
内容模型:

文本

除以下小节中说明的情况外,本规范不修改 [dcterms] 元素 定义。

5.5.3.2.2 dc:contributor 元素

dc:contributor 元素 [dcterms] 用于表示在内容创建中发挥次要作用的 个人、组织等的名称。

dc:contributor 元素的要求在所有其他方面均与 dc:creator 元素的要求相同。

5.5.3.2.3 dc:creator 元素

dc:creator 元素 [dcterms] 表示负责创建内容的 个人、组织等的名称。EPUB 创建者 MAYrole 属性关联到该元素,以表明创建者所发挥的 作用。

dc:creator 元素应包含 EPUB 创建者希望阅读系统向用户 显示的创建者名称。

EPUB 创建者 MAY 使用 file-as 属性 关联创建者名称的规范化形式,并使用 alternate-script 属性表示 另一种语言或文字中的创建者名称。

如果一个 EPUB 出版物有多个创建者, EPUB 创建者应在单独的 dc:creator 元素中指定每一个。

metadata 节中 dc:creator 元素的文档顺序 决定显示优先级,其中遇到的第一个 dc:creator 元素 是主要创建者。

EPUB 创建者应使用 dc:contributor 元素表示次要贡献者。

5.5.3.2.4 dc:date 元素

dc:date 元素 [dcterms] 定义 EPUB 出版物的出版日期。出版日期与 最后修改日期不同(后者是 EPUB 创建者最后一次更改 EPUB 出版物的时间)。

RECOMMENDED 日期字符串符合 [iso8601-1], 尤其是 W3C Date and Time Formats [datetime] 中表示的子集,因为此类字符串既便于人类阅读, 也便于机器读取。

EPUB 创建者应使用 [dcterms] 词汇表中可用的专用日期属性, 或类似属性来表示附加日期。

EPUB 出版物 MUST NOT 包含超过一个 dc:date 元素。

5.5.3.2.5 dc:subject 元素

dc:subject 元素 [dcterms] 标识 EPUB 出版物的主题。EPUB 创建者应将该元素的设置为 人类可读的标题或标签,但如果主题分类法没有 提供单独的描述性标签,则可以使用代码值。

EPUB 创建者 MAY 使用 authority 属性 标识其从中取得该元素的系统或方案。

当标识了方案时,EPUB 创建者 MUST 使用 term 属性关联主题代码。

term 属性 MUST NOT 关联到未指定方案的 dc:subject 元素

dc:subject 元素和 term 属性的仅在指定方案要求时 区分大小写。

5.5.3.2.6 dc:type 元素

dc:type 元素 [dcterms] 用于指示 EPUB 出版物属于某种专门类型 (例如,以 EPUB 格式打包的注释或词典)。

EPUB 创建者 MAY 使用任何 文本字符串作为

IDPF EPUB 3 工作组曾维护一个用于此元素的 专门 EPUB 出版物类型非规范性注册表。 本工作组不再维护该注册表,也不预期开发新的专门出版物类型。

5.5.4 meta 元素

meta 元素提供了一种通用方式,用于包含包元数据。

元素名称:

meta

用法:

作为 metadata 元素的子元素。可重复。

属性:
内容模型:

文本

每个 meta 元素定义一个元数据表达式。 property 属性取一个定义该表达式所作陈述的 property 数据类型值,而元素的文本内容 表示断言。(更多 信息请参阅 D.1 词汇表关联机制。)

本规范定义了两种元数据表达式类型,EPUB 创建者可以使用 meta 元素定义它们:

  • 主要表达式是指 meta 元素中定义的表达式确立了 EPUB 出版物某个方面的表达式。省略 refines 属性的 meta 元素定义一个主要 表达式。
  • 子表达式是指 meta 元素中定义的表达式使用 refines 属性与另一个表达式或资源关联,以增强其含义。子表达式可以细化一个 媒体片段,例如,通过表示其持续时间;或细化一个创建者或贡献者 表达式,通过定义该人的角色。

EPUB 创建者 MAY 使用子表达式来细化其他 子表达式的含义,从而 创建信息链。

所有 [dcterms] 元素都表示主要表达式, 并允许通过 meta 元素子表达式进行细化。

Meta Properties Vocabulary 是与 property 属性一起使用的默认词汇表

EPUB 创建者 MAYD.1 词汇表关联 机制中的定义,添加来自其他词汇表的术语。

scheme 属性标识 EPUB 创建者从中取得元素的系统或方案。该属性的值 MUST 是一个 property 数据类型 值,并解析为定义该方案的 资源。scheme 属性没有默认词汇表(即所有值都需要一个 前缀)。

5.5.5 最后修改日期

metadataMUST 恰好包含一个 dcterms:modified 属性 [dcterms], 其中包含最后修改日期。此属性的 MUST 是 [iso8601-1] 中日期和一天中时间的完整表示,并匹配扩展格式: YYYY-MM-DDThh:mm:ssZ

EPUB 创建者 MUST 以协调世界时 (UTC) 表示 最后修改日期,并且 MUST 以“Z”(Zulu)时区指示符结束。

EPUB 创建者每当对 EPUB 出版物进行更改时,都应更新最后修改日期。

EPUB 创建者 MAY包文档元数据中指定附加的 modified 属性, 但它们 MUST 具有不同的主语(即它们需要一个 refines 属性,用于 引用某个元素或资源)。

对最后修改日期的要求是为了确保与 EPUB 3 早期版本兼容, 这些早期版本为 EPUB 出版物定义了一个发布 标识符 [epubpackages-32]。

5.6 Manifest 节

5.6.1 manifest 元素

manifest 元素提供用于渲染内容的出版物资源的完整列表。

元素名称:

manifest

用法:

packageREQUIRED 第二个子元素,位于 metadata 之后。

属性:

id [可选]

内容模型:

item [一个或多个]

包 文档外, manifest MUST 列出所有出版物资源,无论它们是 容器资源还是远程资源

由于包文档已经由 container.xml 文件标识, manifest MUST NOT 为其指定 item 元素 (即,自引用没有任何作用)。

manifest 仅用于列出出版物资源。链接资源用于处理 OCF 容器的特殊文件(即 META-INF 目录中的文件,以及 mimetype 文件)被禁止包含其中。

未能提供完整的出版物资源 manifest 可能会导致渲染问题。 阅读系统可能不会解压此类 资源,或可能出于 安全原因阻止访问它们。

5.6.2 item 元素

item 元素表示一个出版物资源

元素名称:

item

用法:

作为 manifest 的子元素。 可重复。

属性:
内容模型:

每个 item 元素通过其 href 属性中的 URL [url] 标识一个出版物资源。该值 MUSTabsolute-path-relative-scheme-less-URL string [url]。EPUB 创建者 MUST 确保每个 URL 在解析后在 manifest 作用域内唯一。

item 元素所标识的出版物资源 MUST 符合由 media-type 属性中提供的 MIME 媒体类型 [rfc2046] 推断出的适用规范。对于核心媒体类型资源,EPUB 创建者 MUST 使用 3.2 核心媒体类型中指定的媒体类型。

fallback 属性指定被引用出版物资源的回退。 fallback 属性的 IDREF [xml] 值 MUST 解析为 manifest 中的另一个 item

一个 item 的回退 MAY 指定回退到另一个 item,依此类推,从而创建一条回退选项链。有关使用回退链的 附加要求,请参阅 3.5.1 Manifest 回退

media-overlay 属性取一个 IDREF [xml], 用于标识此 item 所描述资源的媒体叠加文档。 更多信息请参阅 9.3.5 媒体叠加打包

manifestitem 元素的顺序没有意义。 spine 元素提供内容文档的呈现序列。

5.6.2.1 资源属性

properties 属性阅读系统提供有关资源内容的信息。 此信息支持发现 关键资源,例如封面图像和 EPUB 导航文档。它还允许 阅读系统通过指示资源是否包含嵌入脚本、MathML 或 SVG 等,来优化渲染。

Manifest Properties Vocabularyproperties 属性的默认词汇表

每当 item 元素引用的资源符合相应定义时,EPUB 创建者 MUST 设置以下属性:

这些属性不会递归地应用于包含进某个资源的内容(例如,通过 [html] iframe 元素)。例如,如果一个非脚本化的 XHTML 内容文档 嵌入了一个脚本化内容 文档,则只有被嵌入文档的 manifest item properties 属性会具有 scripted 值。

EPUB 创建者 MUST 使用 nav 属性 将且仅将一个 item 声明为 EPUB 导航文档。

如果 EPUB 出版物包含封面图像,建议设置 cover-image 属性,但设置此属性 是 OPTIONAL

EPUB 创建者 MAYD.1 词汇表关联 机制中的定义,添加来自其他词汇表的术语。

5.6.2.2 示例

5.6.3 bindings 元素(已弃用)

bindings 元素定义一组用于本规范不支持的媒体类型的自定义处理器。

使用该元素已弃用

更多信息请参阅 [epubpublications-301] 中的 bindings 元素定义

5.7 Spine 节

5.7.1 spine 元素

spine 元素定义一个有序的manifest item 引用列表,用于表示默认阅读顺序。

元素名称:

spine

用法:

packageREQUIRED 第三个子元素,位于 manifest 之后。

属性:
内容模型:

itemref [一个或多个]

spine MUST 指定至少一个 EPUB 内容文档外来内容文档

EPUB 创建者 MUSTspine 中列出从 spine 中的出版物资源超链接到的所有 EPUB 和 外来内容文档,其中超链接包括任何要求 用户离开当前资源进行导航的链接机制。常见的超链接机制包括 [html] aarea 元素的 href 属性,以及脚本化链接(例如,使用 DOM 事件和/或表单元素)。列出被超链接资源的要求会 递归适用(即 EPUB 创建者必须列出从被超链接文档超链接到的 所有 EPUB 和外来内容文档,依此类推)。

EPUB 创建者还 MUSTspine 中列出从 EPUB 导航文档超链接到的所有 EPUB 和外来 内容文档, 无论 EPUB 创建者是否 将 EPUB 导航文档包含在 spine 中。

由于指向 EPUB 容器外部资源的超链接不是出版物资源,因此它们 不受必须包含在 spine 中这一要求的约束(例如,网页和托管在 Web 上的 资源)。

用于渲染 spine 项的出版物资源(例如,从 [html] 嵌入内容引用的资源)同样不必 包含在 spine 中。

page-progression-direction 属性设置内容流动的全局方向。允许的值为 ltr(从左到右)、rtl(从右到左)和 default。 当 EPUB 创建者指定 default 值时,表示他们没有偏好, 阅读系统可以选择渲染方向。

虽然 page-progression-direction 属性设置全局流动方向, 但单个 EPUB 内容文档以及 EPUB 内容文档的部分内容 MAY 覆盖此设置 (例如,通过 writing-mode CSS 属性)。阅读系统也可以提供 覆盖默认方向的机制(例如,允许应用 备用样式表的按钮或设置)。

旧版 toc 属性取一个 IDREF [xml], 用于标识 表示 NCX 的 manifest item。

5.7.2 itemref 元素

itemref 元素在默认阅读顺序中标识一个EPUB 内容文档外来内容文档

元素名称:

itemref

用法:

作为 spine 的子元素。 可重复。

属性:
内容模型:

每个 itemref 元素 MUST 通过其 idref 属性中的 IDREF [xml], 引用 manifest 中某个 itemID [xml]。 item 元素 ID MUST NOT 被引用超过一次。

每个被引用的 manifest item MUST 是以下二者之一:a) 一个 EPUB 内容文档,或 b) 一个在其 manifest 回退链中包含 EPUB 内容 文档的外来内容文档

虽然 EPUB 出版物需要 EPUB 导航 文档,但不强制要求将其包含在 spine 中。

linear 属性表示所引用的 item 是否包含有助于主要阅读顺序并且 阅读系统必须按顺序读取的内容 (“yes”),或辅助内容, 这些内容增强或补充主要内容,阅读系统可在顺序之外访问 (“no”)。辅助内容的示例包括注释、描述和 答案 键。

linear 属性允许阅读系统区分用户 应作为默认阅读顺序的一部分访问的内容与补充内容,阅读 系统可以例如在弹出窗口中呈现这些补充内容,或在听觉渲染中省略它们。

指定内容为非线性并不要求阅读系统以 特定方式呈现它;不过,它只是对目的的提示。阅读系统可以在 非线性内容出现在 spine 中的位置呈现它,例如,也可以跳过它,直到用户到达 spine 末尾。

EPUB 创建者应将非线性内容列在 spine 末尾,除非让用户在两个线性 spine 项之间遇到它 是有意义的。

线性 itemref 元素是指其 linear 属性值显式设置为“yes”,或省略该 属性的元素 — 阅读系统会为没有该属性的 itemref 元素假定值“yes”。spine MUST 包含 至少一个 线性 itemref 元素。

EPUB 创建者 MUST 提供一种 访问所有非线性内容的方式(例如,内容中的超链接,或来自 EPUB 导航文档的超链接)。

Spine Properties Vocabularyproperties 属性的默认词汇表

EPUB 创建者 MAYD.1 词汇表关联 机制中的定义,添加来自其他词汇表的术语。

5.8 集合

5.8.1 collection 元素

collection 元素定义一组相关资源。

元素名称:

collection

用法:

packageOPTIONAL 第六个元素。可重复。

属性:
内容模型:

按以下顺序:metadata [0 或 1],( collection [一个或多个] 或 ( collection [0 个或多个]link [一个或多个] ))

collection 元素允许 EPUB 创建者 将资源组装成逻辑 组,以用于各种潜在用途:将拆分在多个 EPUB 内容文档中的内容 重新组装为有意义的内容单元(例如, 分布在多个文档中的索引)、标识用于专门目的的资源(例如,预览内容),或 收集呈现有关 EPUB 出版物的附加信息的资源。

EPUB 创建者 MUST 在每个 collection 元素的 role 属性中标识其角色,该属性的值 MUST 是一个或多个 NMTOKEN [xmlschema-2] 和/或 absolute-URL-with-fragment strings [url]。

编写专门集合的要求由其各自的规范定义。

IDPF EPUB 3 工作 组曾同时维护角色 扩展注册表自定义 扩展角色列表。本工作组不再维护这些注册表。

5.8.2 定义 collection 类型(已弃用)

创建新的 collection 元素角色现已弃用

有关创建专门集合的更多 信息(包括其使用要求和 限制),请参阅 [epubpackages-32] 中的 collection 元素定义

5.9 旧版特性

5.9.1 介绍

包文档的 legacy 特性仅从 EPUB 2 保留下来,以允许 EPUB 创建者创作能够在一定 程度上在阅读系统中运行的内容, 这些阅读系统仅支持 EPUB 2 出版物。

这些特性主要是为了解决 EPUB 3 阅读系统开发期间的重叠时期而添加的, 因为当时用户仍有很高概率会在 EPUB 2 阅读系统上打开 EPUB 3 出版物。

由于现在仅处理 EPUB 2 出版物的阅读系统已经很少见,EPUB 创建者在投入精力 添加这些旧版特性之前,应考虑其出版物仍会在这类较旧设备上 打开的可能性。

5.9.2 支持

EPUB 创建者 MAY 为与 EPUB 2 阅读系统兼容 而包含本节中定义的旧版特性。

EPUB 3 阅读系统在向用户呈现出版物时不会使用这些特性。

EPUB 一致性检查器不应 因 EPUB 出版物中存在旧版 特性而提醒 EPUB 创建者,因为包含这些特性对于向后 兼容是有效的。如果旧版特性不 符合其定义或以其他方式违反使用要求,EPUB 一致性检查器必须提醒 EPUB 创建者。

5.9.3 meta 元素

meta 元素 [opf-201] 提供一种为 EPUB 2 阅读系统包含 通用元数据的方式。

更多 信息请参阅 [opf-201] 中的 meta 元素定义

EPUB 3 meta 元素使用不同的属性并要求文本内容, 它为 EPUB 3 阅读系统提供元数据能力。

[opf-201] meta 元素 还允许 EPUB 创建者为 EPUB 2 阅读系统标识封面 图像。在 EPUB 3 中,必须使用图像的 manifest item 上的 cover-image 属性来标识封面图像。

5.9.4 guide 元素

guide 元素 [opf-201] 为 EPUB 2 阅读系统中的关键结构提供机器可处理的 导航。

更多信息请参阅 [opf-201] 中的 guide 元素 定义

landmarks navEPUB 导航文档中 为 EPUB 3 阅读系统提供此功能。

5.9.5 NCX

NCX [opf-201] 为 EPUB 2 阅读系统提供目录。

更多信息请参阅 [opf-201] 中的 NCX 定义

EPUB 导航文档取代 EPUB 3 阅读 系统中的 NCX。

6. EPUB 内容文档

6.1 XHTML 内容文档

6.1.1 介绍

本节是非规范性的。

本节定义了用于创建XHTML 内容文档的 [html] 配置文件。符合此配置文件的 XML 文档实例是一个核心媒体类型资源,并在本规范中称为 XHTML 内容文档。

6.1.2 XHTML 要求

一个XHTML 内容文档

  • MUST 是一个符合 XML 语法的 [html] 文档。

  • MUST 符合 [html] 为所有 文档构造定义的一致性 标准,除非在 6.1.4 HTML 偏离和约束中被明确覆盖。

  • MAY 包含按 6.1.3 HTML 扩展中定义的 [html] 语法扩展,并且 MUST 符合其中定义的所有内容一致性约束。

除非另有规定,XHTML 内容文档继承 [html] 规范中关于语义、 结构和处理行为的所有定义。

建议 EPUB 出版物遵循 [epub-a11y-11] 中的无障碍要求,这同样适用于 XHTML 内容 文档。参见无障碍

6.1.3 HTML 扩展

本节定义 EPUB 3 XHTML 内容文档对底层 [html] 文档模型的扩展。

虽然 [html] 允许用户代理支持厂商中立扩展, 但除非这些扩展列在本节中,否则它们 不是 EPUB 3 的受支持特性。

6.1.3.1 结构语义

EPUB 创建者 MAYXHTML 内容文档中使用 epub:type 属性来 表达结构语义

该属性 MUST NOT 用在 head 元素或元数据内容 [html] 上。

6.1.3.2 RDFa

[html-rdfa] 规范定义了一组 属性,EPUB 创建者 MAYXHTML 内容文档中使用这些属性以在语义上 丰富内容。这些属性的使用 MUST 符合 [html-rdfa] 中定义的要求。

[html-rdfa] 规范定义了作者 使用 RDFa 属性时对 [html] 内容模型的更改。此修改后的内容模型在 XHTML 内容文档中有效。

列出 RDFa 并不表示工作组的偏好,只是表明这些属性表示 HTML 语法的扩展。EPUB 创建者也可以 在 XHTML 内容文档中指定microdata 属性 [html] 和链接数据 [json-ld11], 因为二者都受原生支持。

6.1.3.3 内容 切换(已弃用)

switch 元素提供一种简单机制,EPUB 创建者 可通过该机制定制显示给用户的内容,并且它不依赖于 EPUB 阅读系统的脚本 能力。

使用该元素已弃用

更多信息请参阅 [epubcontentdocs-301] 中的switch 元素定义

6.1.3.4 epub:trigger 元素(已弃用)

trigger 元素能够创建由标记定义的用户界面,用于在脚本化和 非脚本化上下文中控制多媒体对象,例如音频和视频播放。

使用该元素已弃用

更多信息请参阅 [epubcontentdocs-301] 中的epub:trigger 元素定义

6.1.3.5 自定义属性

XHTML 内容文档 MAY 包含自定义属性,这些属性是带前缀的 [xml-names] 属性,其命名空间 URL 在其 [url] 中不包含以下任一字符串:

  • w3.org
  • idpf.org

使用自定义属性时,无论内容在哪个阅读系统上渲染,内容 MUST 仍可被用户消费,且不得有任何 信息丢失或其他显著劣化。

自定义属性通常以阅读系统特定的方式定义,并不 旨在供其他阅读系统使用。本规范应被扩展,以 提供多个独立阅读系统都可以使用的扩展。

6.1.4 HTML 偏离和 约束

本节定义适用于 EPUB 3 XHTML 内容文档的底层 [html] 文档 模型的偏离和约束。

6.1.4.1 嵌入式 MathML

XHTML 内容文档支持嵌入式 [mathml3]。 MathML 标记的出现 MUST 符合 MathML 规范 [mathml3] 中表达的约束,并带有 以下附加限制:

Presentation MathML

math 元素 MUST 仅包含 Presentation MathML,但 annotation-xml 元素内除外。

Content MathML

EPUB 创建者 MAY 在 XHTML 内容文档中的 MathML 标记内包含 Content MathML,并且在存在时 MUST 将其包含在 semantics 元素的 annotation-xml 子元素内。

当 EPUB 创建者按 前一条件包含 Content MathML 时,他们 MUST 将给定 annotation-xml 元素的 encoding 属性设置为两个功能等价 值 MathML-Contentapplication/mathml-content+xml 之一, 并将 name 属性设置为 contentequiv

此子集减轻了阅读系统的实现负担,并促进 无障碍,同时保持与 [html] 用户 代理的兼容性。

mathml 属性manifest item 元素上指示某个 XHTML 内容文档包含 嵌入式 MathML。

6.1.4.2 嵌入式 SVG

XHTML 内容文档支持嵌入 SVG:

svg 属性manifest item 元素上指示某个 XHTML 内容文档包含嵌入式 SVG(通过 引用或通过包含)。

6.1.4.3 不鼓励使用的构造

本节是非规范性的。

6.1.4.3.1 base 元素

[html] base 元素可用于指定文档基 URL,以用于 解析 URL。在 EPUB 出版物中使用它时, 对 base 元素的解释可能会无意中导致对远程资源的引用。它也可能导致阅读系统误解 超链接的位置(例如,如果 base 元素指定绝对 URL, 指向出版物中其他文档的相对链接可能会显示为 指向某个网站的链接)。为避免 严重的互操作性问题,EPUB 创建者不应使用 base 元素。

6.1.4.3.2 rp 元素

[html] rp 元素旨在为不识别 ruby 标记的较旧阅读系统提供回退 (即,在 ruby 标记周围显示括号)。由于 EPUB 3 阅读系统了解 ruby, 并且可以提供回退,EPUB 创建者不应使用 rp 元素。

6.1.4.3.3 embed 元素

由于 [html] embed element 元素不包含用于为不支持脚本的阅读系统提供回退 内容的内在设施,当被引用资源包含脚本时,不鼓励 EPUB 创建者使用该元素。 [html] object 元素是更好的替代方案,因为它包含内在的回退 能力。

6.2 SVG 内容文档

注意

阅读系统可能不支持 [svg] 的所有特性,或 不能在阅读系统运行的所有 平台上支持这些特性。使用这些特性时,EPUB 创建者应 考虑互操作性和文档长久性方面的固有风险。

6.2.1 介绍

本节是非规范性的。

Scalable Vector Graphics (SVG) 规范 [svg] 定义了一种用于表示 最终形式矢量图形和文本的格式。

虽然 EPUB 创建者通常使用 XHTML 内容文档作为 顶层文档类型,但也允许使用 SVG 内容文档。EPUB 创建者通常只会在某些特殊情况下需要 SVG,例如当最终形式页面图像是内容的唯一合适表示时(例如, 封面图或漫画、连环漫画情境)。

本节定义 [svg] 文档的配置文件。符合此配置文件的 XML 文档实例是一个 核心媒体类型资源,并在本 规范中称为SVG 内容文档

本节定义 SVG 内容文档的一致性要求。有关嵌入在 XHTML 内容文档中的 SVG 的一致性要求,请参阅 6.1.4.2 嵌入式 SVG

6.2.2 SVG 要求

SVG 内容文档 MUST 是一个符合要求的 SVG 独立文件 [svg],并符合 6.2.3 SVG 限制中表达的所有内容一致性约束。

建议 EPUB 出版物遵循 [epub-a11y-11] 中的无障碍要求,这同样适用于 SVG 内容 文档。参见无障碍

6.2.3 SVG 限制

本规范按如下方式限制SVG 内容文档通过包含嵌入在 XHTML 内容文档中的 SVG的内容模型:

6.3 通用资源要求

本节定义可同时用于 XHTMLSVG 内容文档的技术要求。

6.3.1 Cascading Style Sheets (CSS)

6.3.1.1 介绍

本节是非规范性的。

CSS 是开放 Web 平台不可或缺的一部分。读者、出版商和文档作者都 期望 CSS“即开即用”,正如他们期望 HTML 即开即用一样。

过去,EPUB 定义了一个 CSS 配置文件,强制支持某些属性,并 为许多其他属性提供带前缀的版本。虽然 CSS 工作组不再 建议使用带前缀的属性,但本规范保留了一些带前缀的 属性,以避免破坏现有内容。但除本 节中定义的少数例外外,EPUB 将 CSS 的定义交由 W3C

请记住,一些阅读系统不会支持 CSS 的所有 所需特性。 以下问题已知尤其突出:

  • 阅读系统引起的分页可能与样式表产生不良交互,因为 阅读系统有时会使用列进行分页。这可能导致视口大小的 值不正确。固定定位和绝对定位尤其 成问题。

  • 某些类型的屏幕会较差地渲染动画和过渡(例如, 高延迟屏幕)。

6.3.1.2 CSS 要求

CSS 样式表:

本规范限制 directionunicode-bidi 属性的使用,因为阅读系统可能不会 实现 CSS 处理,或可能将其关闭。EPUB 创建者在需要控制这些渲染方面时,必须使用以下 特定格式的方法:

6.3.1.3 带前缀的属性

早期版本的 EPUB 包含带前缀的 CSS 属性,因为许多与 世界语言相关的 CSS 特性当时尚未成熟。为确保使用这些前缀创作的内容 具备向后兼容性,它们已保留在本规范中。除非另有说明, 带前缀的属性和值的行为与相应 CSS 规范中描述的 无前缀等价项完全相同。带前缀的属性记录在 E. 带前缀的 CSS 属性中。

注意

EPUB 创建者应使用无前缀属性,且 阅读系统应支持 当前 CSS 规范。本规范保留了 [epubcontentdocs-301] 中广泛使用的带前缀 属性,但移除了 对使用较少属性的支持。只要有可用方案,EPUB 创建者就应对被移除的属性使用 CSS 原生解决方案。

工作组建议当前使用这些带前缀属性的 EPUB 创建者 在支持条件允许时尽快迁移到无前缀版本,因为工作组不 预期在 EPUB 的下一个主要版本中支持它们。

6.3.2 脚本

6.3.2.1 脚本包含

EPUB 内容文档 MAY 使用相应底层规范([html] 和 [svg])为此定义的设施包含脚本。 当 EPUB 内容文档 包含脚本时,本规范将其称为脚本化内容文档。此 标签也适用于包含 [html] form 元素的XHTML 内容文档

scripted 属性用于 manifest item 元素, 以指示 EPUB 内容文档是一个 脚本化内容文档。

当 [html] script 元素包含数据 块 [html] 时,它不表示脚本化内容。

截至发布时,[svg] 尚未定义数据块,但如果未来更新加入该概念, 同样的排除也将适用。

EPUB 创建者应注意,阅读系统被要求表现为仿佛 每个 EPUB 出版物都已被分配一个唯一的 [html]。在实践中,这意味着 脚本不可能在 EPUB 出版物之间共享数据。

脚本在哪个上下文中使用,也决定了 阅读系统对其施加的权利和限制(更多 信息请参阅 脚本 [epub-rs-33])。

阅读系统可能以禁用其他 EPUB 能力和/或提供不同渲染与用户体验的方式 渲染脚本化内容文档(例如,通过 禁用分页)。

6.3.2.2 脚本上下文

EPUB 3 定义了两种脚本执行上下文:

脚本可以在其他上下文中执行,但阅读系统对这些 上下文的支持 是可选的。例如,可以从 [html] object 元素引用脚本化 SVG 文档。

更多信息请参阅 脚本处理 [epub-rs-33]。

EPUB 创建者是将代码直接嵌入 script 元素,还是 通过该元素的 src 属性引用代码,对其 执行上下文没有区别。

EPUB 创建者为其脚本使用哪种上下文,会影响脚本可以 执行哪些操作,以及阅读系统支持的可能性,如以下 小节所述。

有关这两种上下文之间差异的示例,请参阅 H.2 脚本上下文

6.3.2.2.1 容器受限脚本

容器受限脚本是以下二者之一:

容器受限脚本 MUST NOT 包含 用于修改嵌入它的EPUB 内容文档的 DOM 的指令 (即,包含 iframe 元素的文档)。它还 MUST NOT 包含 用于操纵其包含矩形大小的指令。

EPUB 创建者应注意,阅读系统中对容器受限脚本的支持仅建议用于 可重排文档 [epub-rs-33]。此外,阅读系统固定布局文档中的支持是可选的。

EPUB 创建者应确保容器受限脚本在不支持脚本的阅读 系统中优雅降级(参见 6.3.2.5 脚本回退)。

选择将脚本使用限制为容器受限模型的 EPUB 创建者,将确保 脚本化和非脚本化内容之间获得更一致的用户体验 (例如,一致的分页行为)。

6.3.2.2.2 Spine 级别 脚本

spine 级别脚本是包含在顶层内容文档中的 [html] script 或 [svg] script 元素的实例。

EPUB 创建者应注意,阅读系统对 spine 级别脚本的支持仅建议用于固定布局文档设置为滚动的可重排文档 [epub-rs-33]。此外,阅读系统 在所有其他上下文中的支持 是可选的。

包含 spine 级别 脚本的顶层内容文档 SHOULD 在脚本被禁用或不可用时,仍能被用户消费,且没有任何 信息丢失或其他 显著劣化(例如,通过 采用渐进增强技术或回退)。在顶层 内容文档中未考虑非脚本化 环境可能导致 EPUB 出版物不可读。

6.3.2.3 事件模型

本节是非规范性的。

EPUB 创建者在为其 EPUB 出版物添加脚本功能时,应考虑各种各样可能的阅读系统 实现(例如, 并非所有设备都有物理键盘,而且在许多情况下软键盘只会 为文本输入元素激活)。因此,EPUB 创建者不应仅依赖键盘事件; 他们应始终提供触发所需操作的替代方式。

6.3.2.4 脚本 无障碍

包含脚本的EPUB 内容文档 SHOULD 采用 相关的 [wai-aria] 无障碍技术,以确保内容仍可被 所有用户消费。

6.3.2.5 脚本回退

包含脚本的EPUB 内容文档 MAY 为此类内容提供回退,可以使用内在回退机制(例如 [html] objectcanvas 元素可用的回退机制),或在内在 回退不适用时,使用manifest 级别 回退

EPUB 创建者 MUST 确保脚本只 生成核心媒体类型资源或其 片段。

7. EPUB 导航文档

7.1 介绍

本节是非规范性的。

EPUB 导航文档EPUB 出版物必需组件。 它允许 EPUB 创建者包含一个人类和 机器均可读的全局 导航层,从而确保为用户提升可用性和无障碍性。

EPUB 导航文档是一种特殊类型的XHTML 内容文档,用于为目录定义 阅读 系统。它还可以包含其他 专门化导航元素,例如页面列表和关键 地标列表。这些导航元素对其内容有附加限制,以便于 处理。

不过,EPUB 导航文档并非专门用于机器处理。除专门化 导航元素之外,对 EPUB 导航文档的结构或内容没有 限制(即,EPUB 创建者可以像标记任何其他 XHTML 内容文档一样标记文档的其余部分)。因此,它也可以成为线性阅读顺序的一部分,从而避免 重复目录。EPUB 创建者可以使用 hidden 属性隐藏仅供 机器处理的导航元素(例如页面列表)。

注意,阅读系统在根据 EPUB 导航文档中找到的信息生成 导航界面时,可能会剥离脚本、样式和 HTML 格式,这可能会使 结果难以阅读。如果 EPUB 创建者需要此类格式和功能,则他们 也应将 EPUB 导航文档包含在 spine 中。对导航文档的脚本和样式使用 渐进增强技术,将有助于 确保内容在非浏览器上下文中渲染时仍能保持完整性。

7.2 导航文档 要求

有效的 EPUB 导航文档:

7.3 nav 元素: 限制

nav 元素在 EPUB 导航文档中带有 epub:type 属性时,本 规范按如下方式限制该元素及其后代的内容模型:

内容模型:
nav

按以下顺序:

ol

按以下顺序:

  • li [一个或多个]

li

按以下顺序:

  • (spana) [恰好 1 个]

  • ol [有条件地必需]

spana

任意顺序:

注意,对这些元素上允许的属性没有限制。

附加要求请参阅下面的定义。

以下对 nav 元素内容模型的详细说明解释了 各元素的目的和限制:

注意

虽然 nav 元素中的标题和链接允许任何 [html] 短语内容,但基于应用的阅读系统通常 只支持简单文本标签。由于这些应用 会创建自己的导航控件,而这些控件并不基于 HTML 渲染,因此它们通常无法 保留嵌入图像和多媒体、MathML、行内样式以及其他基于元素和 属性的渲染指令。EPUB 创建者应避免在缺少这些元素 可能导致可用性问题的地方使用这些类型的元素。

作为符合要求的 XHTML 内容文档,EPUB 创建者 MAY 将 EPUB 导航文档包含在 spine 中。

在本规范的上下文中,nav 元素内列表 项的默认显示样式等价于 list-style: none 属性 [csssnapshot]。EPUB 创建者 MAY 使用 CSS 指定替代列表 样式,以便在 spine 中渲染该文档。

7.4 nav 元素:类型

7.4.1 介绍

本节是非规范性的。

EPUB 导航文档中定义的 nav 元素 通过其 epub:type 属性值在语义上加以区分。

本规范定义三种导航辅助:

toc

标识包含目录的 nav 元素。 toc navEPUB 创建者必须在 EPUB 导航文档中包含的唯一导航辅助。

page-list

标识包含打印或其他静态分页来源页面列表的 nav 元素。

landmarks

标识包含关注点列表的 nav 元素。

EPUB 导航文档对每种类型最多可以包含一个导航辅助。

EPUB 导航文档可以包含附加导航类型。更多信息请参阅 7.4.5 其他 nav 元素

7.4.2 toc nav 元素

EPUB 出版物的主导航层级定义在一个 nav 元素中 [html],其 epub:type 属性设置为值“toc” [epub-ssv-11](即 toc nav 元素)。此元素 在概念上对应于印刷作品中的目录——它提供到出版物主要结构章节的 导航。

EPUB 创建者 SHOULDtoc nav 元素中的引用进行排序,使其 同时反映:

7.4.3 page-list nav 元素

页面列表提供到内容中静态页面边界的导航。这些边界可以 对应于打印等静态分页来源,也可以专门为 EPUB 出版物定义。

页面列表定义在一个 nav 元素 [html] 中,其 epub:type 属性设置为 值“page-list” [epub-ssv-11](即 page-list nav 元素)。

page-list nav 元素在 EPUB 导航文档中是 OPTIONAL,且 MUST NOT 出现超过一次。

page-list nav 元素 SHOULD 只包含一个 ol 后代 (即,没有嵌套子列表)。

EPUB 创建者 MAY 使用 pagebreak 术语 [epub-ssv-11], 在其各自的 EPUB 内容文档中标识 page-list 引用的目标。

7.4.4 landmarks nav 元素

Landmarks 标识内容的基本结构组件,使阅读系统 能够为用户提供对它们的高效访问(例如,通过用户 界面中的专用按钮)。

Landmarks 定义在一个 nav 元素 [html] 中,其 epub:type 属性设置为 值“landmarks” [epub-ssv-11](即 landmarks nav 元素)。

landmarks nav 元素在 EPUB 导航文档中是 OPTIONAL,且 MUST NOT 出现超过一次。

landmarks nav 元素 SHOULD 只包含一个 ol 后代 (即,没有嵌套子列表)。

epub:type 属性在 landmarks nav 元素的 a 后代元素上是 REQUIREDlandmarks nav 元素内每个链接目标的结构语义由此属性的值确定。

landmarks nav MUST NOT 包含多个具有相同 epub:type 值且引用同一资源或其片段的条目。

EPUB 创建者应将他们在 landmarks nav 中定义的项目数量限制为阅读系统可能会在其用户界面中使用的项目。 该元素并不用于重复目录。

建议在可用时包含以下 landmarks:

  • bodymatter [epub-ssv-11]——阅读 系统常使用此 landmark,在用户开始阅读时自动让用户跳过前置内容。
  • toc [epub-ssv-11]——如果 目录在 spine 中可用,阅读系统可以使用此 landmark 将用户 带到包含目录的文档。

landmarks nav 中还可包含其他关键参考章节, 例如索引和词汇表。

虽然 landmarks nav 旨在供阅读系统使用,但 EPUB 创建者仍应 确保 landmarks nav 的标签可供人类阅读。阅读 系统可以直接向用户公开这些链接。

7.4.5 其他 nav 元素

EPUB 导航文档 MAY 除前几节定义的 tocpage-listlandmarks nav 元素之外,还包含一个或多个 nav 元素。如果这些 nav 元素旨在供 阅读系统 处理,则它们 MUST 具有 epub:type 属性,并受 7.3 nav 元素:限制中定义的内容模型 限制约束。

本规范不对任何附加 nav 元素的语义施加限制:它们 MAY 表示任意信息 域的导航语义,并且它们 MAY 包含具有同质或异质语义的链接目标。

7.5 在 spine 中使用

本节是非规范性的。

虽然可以在 spine 中复用 EPUB 导航文档,但 通常并不需要所有导航结构或其中的所有分支。 EPUB 创建者通常会想要隐藏页面列表landmarks 导航 元素,或者为具有许多小节层级的书籍修剪目录分支。

虽然 display 属性 [csssnapshot] 控制 EPUB 导航 文档在具有视口阅读系统中的视觉渲染,但没有视口的阅读系统 可能不支持 CSS。为 更好地确保这些阅读系统中的正确渲染,EPUB 创建者应使用 [html] hidden 属性来指示导航数据的哪些部分(如果有)被 排除在内容流渲染之外。

hidden 属性不会影响阅读系统如何在 内容流之外渲染导航数据(例如在阅读 系统提供的专用导航用户界面中)。

hidden 属性可以与 display 属性一起使用,以 最大限度地提高跨所有阅读系统的互操作性。

8. 布局渲染控制

8.1 介绍

本节是非规范性的。

并非所有渲染信息都能通过 EPUB 所基于的底层技术来表达。例如,虽然带 CSS 的 HTML 提供了强大的布局能力,但这些能力仅限于正在渲染的文档范围。

本节定义了一些属性,使 EPUB 创建者能够表达包级别的 渲染 意图(即只能由 EPUB 阅读系统实现的功能)。如果 阅读系统支持所需的渲染,这些属性就能让用户看到 EPUB 创建者最优设计的内容。

8.2 固定布局

8.2.1 介绍

本节是非规范性的。

EPUB 出版物与印刷书籍或 PDF 文件不同,其设计目标是 可以变化。内容 会流动,或重排,以适应屏幕并适应用户的需要。正如 渲染和 CSS中所述,“内容呈现 会适应用户,而不是让用户不得不适应某种特定的 内容呈现。” [epub-overview-33]

但这一原则并不适用于所有类型的文档。有时内容和设计交织得如此 紧密,以至于无法将二者分离。任何外观变化都有改变 含义或丧失全部含义的风险。固定布局文档在可重排 EPUB 不适合内容时,给予 EPUB 创建者对呈现更大的控制权。

EPUB 创建者使用一组包文档 属性来定义固定布局,以控制阅读系统中的渲染。此外,他们还会在各自的 EPUB 内容文档中设置每个固定布局文档的尺寸

EPUB 3 提供了多种表示固定布局内容的机制。当固定布局 内容是必要的时,EPUB 创建者选择哪种机制将取决于许多因素, 包括所需的精确程度、文件大小、无障碍性等。本节并不 试图规定 EPUB 创建者应选择哪种机制。

8.2.2 固定布局包 设置

8.2.2.1 布局

rendition:layout 属性指定内容是可重排的,还是 预分页的。

当在 meta 元素上指定 rendition:layout 属性时,它表示分页或可重排布局样式全局适用(即适用于所有 spine 项)。

EPUB 创建者 MUSTrendition:layout 属性使用以下值之一:

reflowable

内容不是预分页的(即,阅读系统在渲染时应用动态分页)。 默认值。

pre-paginated

内容是预分页的(即,阅读系统在渲染时为每个 spine itemref 恰好生成一页)。

阅读系统通常会限制或拒绝将用户或用户代理样式 表应用到预分页文档,因为动态样式更改很可能对这类文档的 内在属性产生意外后果。EPUB 创建者在选择使用预分页内容 而不是可重排内容时,应考虑这些 限制对可用性和无障碍性的负面影响。 相关信息请参阅 指南 1.4 - 提供文本 配置 [uaag20]。

当某个 spine 项的属性被设置为 pre-paginated 时,其内容尺寸 MUST8.2.2.6 内容文档尺寸中定义的方式设置。

EPUB 创建者 MUST NOT 声明 rendition:layout 属性超过一次。

他们还 MUST NOT 使用 refines 属性声明该属性。有关 为单个EPUB 内容文档设置该属性的信息,请参阅 8.2.2.1.1 布局 覆盖

8.2.2.1.1 布局覆盖

EPUB 创建者 MAYspine itemref 元素上局部指定以下属性,以覆盖给定 spine 项的全局值

rendition:layout-pre-paginated
指定给定 spine 项为预分页。
rendition:layout-reflowable
指定给定 spine 项为可重排。

EPUB 创建者 MUST NOT 在任何 给定 spine 项上使用这些覆盖项中的多个。

8.2.2.2 方向

rendition:orientation 属性指定 EPUB 创建者希望内容以哪种方向渲染。

当在 meta 元素上指定 rendition:orientation 属性时, 它表示预期方向全局适用(即,适用于所有 spine 项)。

EPUB 创建者 MUSTrendition:orientation 属性使用以下 值之一:

landscape

阅读系统应以横向方向渲染 内容。

portrait

阅读系统应以纵向方向渲染内容。

auto

内容不受方向约束。默认值。

EPUB 创建者 MUST NOT 声明 rendition:orientation 属性超过一次。

他们还 MUST NOT 使用 refines 属性声明该属性。有关为单个 EPUB 内容文档设置该属性的信息,请参阅 8.2.2.2.1 方向 覆盖

8.2.2.2.1 方向 覆盖

EPUB 创建者 MAYspine itemref 元素上局部指定以下属性,以覆盖给定 spine 项的 全局值

rendition:orientation-auto
指定由阅读系统 决定该 spine 项以哪种方向渲染。
rendition:orientation-landscape
指定阅读系统应以横向方向渲染给定 spine 项。
rendition:orientation-portrait
指定阅读系统应以纵向方向渲染给定 spine 项。

EPUB 创建者 MUST NOT 在任何 给定 spine 项上使用这些覆盖项中的多个。

8.2.2.3 合成跨页

rendition:spread 属性指定预期的阅读系统 合成跨页行为。

当在 meta 元素上指定 rendition:spread 属性时,它表示预期的合成跨页行为 全局适用(即,适用于所有 spine 项)。

EPUB 创建者 MUSTrendition:spread 属性使用以下值之一:

none

不要将 spine 项并入合成跨页。阅读系统应在屏幕中央位置的单个 视口中显示 这些项目。

landscape

仅当设备处于横向方向时,为 spine 项渲染合成跨页。

portrait(已弃用)

仅在纵向方向使用跨页已弃用

EPUB 创建者应改用值“both”,因为在 纵向方向可读的跨页在横向方向也可读。

both

无论设备方向如何,都渲染合成跨页。

auto

EPUB 创建者未定义明确的合成跨页行为。默认 值。

EPUB 创建者 MUST NOT 声明 rendition:spread 属性超过一次。

他们还 MUST NOT 使用 refines 属性声明该属性。有关 为单个EPUB 内容文档设置该属性的信息,请参阅 8.2.2.3.1 合成跨页 覆盖

当在 XHTMLSVG 内容文档上下文中使用合成跨页时, 分别通过 viewport meta 元素viewBox 属性给定的尺寸表示 跨页中一页的大小。

有关使用 page-progression-direction 属性声明全局流动 方向以及内容文档中局部 page-progression-direction 的信息,请参阅 spine 元素。

8.2.2.3.1 合成 跨页覆盖

EPUB 创建者 MAYspine itemref 元素上局部指定以下属性,以覆盖给定 spine 项的全局值

rendition:spread-auto
指定由阅读系统 决定何时为该 spine 项渲染合成跨页。
rendition:spread-both
指定阅读系统应在纵向和横向两个方向都为该 spine 项渲染 合成跨页。
rendition:spread-landscape
指定阅读系统只应在横向方向为该 spine 项渲染合成跨页。
rendition:spread-none
指定阅读系统不应为该 spine 项渲染合成跨页。
rendition:spread-portrait

rendition:spread-portrait 属性已弃用

更多 信息请参阅 [epubpublications-301] 中的 spread-portrait 属性定义

EPUB 创建者 MUST NOT 在任何 给定 spine 项上使用这些覆盖项中的多个。

8.2.2.4 跨页放置

阅读系统渲染合成跨页时,默认行为是 通过在下一个可用的未填充 视口中渲染下一个EPUB 内容文档来填充 跨页,其中下一个可用视口由给定的页面推进方向确定,或 由EPUB 内容文档中的 局部声明确定。EPUB 创建者 MAY 覆盖 此 自动填充行为,并通过在其 spine itemref 元素上指定以下属性之一,强制阅读系统将文档放置在特定 视口中:

rendition:page-spread-center
rendition:page-spread-center 属性是 spread-none 属性的别名,用于使 spine 项居中。
rendition:page-spread-left
rendition:page-spread-left 属性是 page-spread-left 属性的别名,用于将 spine 项放置在两页跨页的左侧槽位中。
rendition:page-spread-right
rendition:page-spread-right 属性是 page-spread-right 属性的别名,用于将 spine 项放置在两页跨页的右侧槽位中。

rendition:page-spread-centerrendition:page-spread-leftrendition:page-spread-right 属性适用于预分页和 可重排内容。它们只在阅读系统创建合成 跨页时适用。

虽然 EPUB 创建者常常指示在某些设备方向中使用跨页, 但内容本身并不表示真正的跨页(即阅读 系统必须并排渲染以保证可读性的两个连续页面,例如双页地图)。 为了指示两个连续页面表示真正的跨页,EPUB 创建者 SHOULD 在两个相邻 EPUB 内容文档的 spine 项上使用 rendition:page-spread-leftrendition:page-spread-right 属性,并在单页或双页呈现同样 可接受的 spine 项上省略这些属性。

EPUB 创建者 MUST NOT 在任何给定 spine 项上声明多个 rendition:page-spread-* 属性 和/或其无前缀等价项(例如,在阅读系统仅 支持其中一组属性的情况下,同时指定 “rendition:page-spread-left page-spread-left”是有效的)。

rendition:page-spread-leftrendition:page-spread-right 属性是为允许所有固定布局 属性使用单一词汇表而创建的。EPUB 创建者可以使用任一属性集,但较旧的阅读系统可能 只识别无前缀版本。

rendition:page-spread-center 的创建,是为了让 EPUB 创建者更容易理解在两页跨页和单个 居中页面之间切换的过程。EPUB 创建者可以使用 rendition:page-spread-centerspread-none 来禁用阅读系统中的跨页行为。

8.2.2.5 视口 尺寸(已弃用)

rendition:viewport 属性允许 EPUB 创建者表达 CSS 初始包含块(ICB)[css2], 用于其 rendition:layout 属性已设置为 pre-paginatedXHTMLSVG 内容文档

使用该属性已弃用

更多信息请参阅 [epubpublications-301] 中的 rendition:viewport 属性定义

8.2.2.6 内容文档 尺寸

本节定义固定布局文档的 尺寸属性的表达和解释规则。

固定布局文档以适用于其格式的方式指定其初始 包含块 [css2]:

在 XHTML 中表达

对于 XHTML 固定布局 文档初始 包含块 [css2] 从 viewport meta 标签中的 REQUIRED heightwidth 定义获得,其中:

  • height 属性 MUST 以 正数值 [css2] 或关键字 device-height 作为其;并且
  • width 属性 MUST 以正 数值 [css2] 或关键字 device-width 作为其值。

device-widthdevice-height 值分别指 阅读系统视口宽度和高度的 100%。

heightwidth 定义 MUST 在 [html] head 元素中文档顺序中的第一个 viewport meta 标签内指定。阅读系统 将忽略后续 viewport meta 标签。

EPUB 创建者 MUST NOT 在一个 viewport meta 标签中指定超过一个 heightwidth 定义。

在 SVG 中表达

对于 SVG 固定布局 文档,初始包含块 [css2] 尺寸 MUST 使用 viewBox 属性 [svg] 表达。

初始包含块定义只影响定义它所在的文档。同一出版物内其他内容文档中的 包含块尺寸可能不同。

8.3 可重排布局

虽然控制 EPUB 内容文档的渲染以创建固定布局,是其他 技术无法处理的明显需求,但可重排内容也有一些 EPUB 出版物特有的考虑事项(例如,如何处理 视口中的内容流)。本节定义一些 属性,使 EPUB 创建者能够控制可重排 内容的呈现方面。

8.3.1 rendition:flow 属性

rendition:flow 属性指定 EPUB 创建者阅读系统应如何处理内容溢出的偏好。

当在 meta 元素上指定 rendition:flow 属性时,它表示 EPUB 创建者对 溢出内容处理的全局偏好(即,适用于所有 spine 项)。EPUB 创建者 MAY 表明对动态分页或滚动的偏好。对于滚动内容,还可以 指定连续的EPUB 内容文档是要渲染为一个 连续滚动视图,还是每个都单独渲染(即,每个之间有一个动态 分页符)。

EPUB 创建者 MUSTrendition:flow 属性使用以下值之一:

paginated

动态分页所有溢出内容。

scrolled-continuous

渲染所有 EPUB 内容文档,使溢出内容可滚动,并且 EPUB 出版物从一个 spine 项到另一个 spine 项呈现为一个连续 滚动(除非被局部覆盖)。

注意,EPUB 创建者 SHOULD NOT 创建其中不同资源具有 不同块流方向的出版物,因为 EPUB 阅读 系统中的连续滚动呈现会出现问题。

scrolled-doc

渲染所有 EPUB 内容文档,使溢出内容可滚动,并且每个 spine 项呈现为单独的可滚动文档。

auto

使用阅读系统默认方法或用户偏好渲染溢出内容, 以适用者为准。默认值。

注意,当两个可重排 EPUB 内容文档在 spine 中连续出现时,其 [html] body 元素的默认渲染与 page-break-before 属性 [csssnapshot] 被设置为 always 一致。除了使用 rendition:flow 属性外,如果 阅读系统支持此类覆盖,EPUB 创建者 MAY 通过适当的样式表 声明覆盖此行为。

EPUB 创建者 MUST NOT 声明 rendition:flow 属性超过 一次。

他们还 MUST NOT 使用 refines 属性声明该属性。有关为 单个 EPUB 内容文档设置该属性的信息,请参阅 8.3.1.1 Spine 覆盖

6 具有 单个 spine 项且 rendition:flow 设置为 paginated 的 EPUB 出版物渲染。
The continuous progression of paginated content produced for a single document.
图像描述

三个列状矩形由左至中、由中至右分别用 箭头连接,文本从一个矩形流向下一个矩形。文本分为 标题为“Chapter 1”、“2”和“3”的章节。最左侧的矩形被包围在 平板电脑示意图中。

7 具有 多个 spine 项且 rendition:flow 设置为 paginated 的 EPUB 出版物渲染。
The continuous progression of paginated content produced for each document with transitions to
					new pages between documents.
图像描述

三个列状矩形由左至中、由中至右分别用 箭头连接,文本从一个矩形流向下一个矩形。文本分为 标题为“Chapter 1”、“2”的章节。带有“Chapter 2”的章节从 最右侧矩形顶部开始,使中间矩形底部留有空白。 最左侧的矩形被包围在平板电脑示意图中。

8 具有 单个 spine 项且 rendition:flow 设置为 scrolled-continuous 的 EPUB 出版物渲染。
The progression of a continuous scroll of content extends vertically off the user's screen,
					with new documents added to the bottom as encountered.
图像描述

一个单独的列状条带(即没有底边的矩形),文本沿 该条带向下流动。文本分为标题为“Chapter 1”、“2”的章节。条带的顶部部分 被包围在平板电脑示意图中。

9 具有多个 spine 项且 rendition:flow 设置为 scrolled-doc 的 EPUB 出版物渲染。
The progression of scrollable documents depicting how only the content within each document
					is scrollable.
图像描述

三个列状条带(即没有底边的矩形)由左至中、 由中至右分别用箭头连接,每个条带都包含沿条带向下流动的文本。 文本分为标题为“Chapter 1”、“2”和“3”的章节。每个条带都以 章节标题开始,并沿条带向下流动。最左侧条带的顶部部分被包围在 平板电脑示意图中。

8.3.1.1 Spine 覆盖

EPUB 创建者 MAYspine itemref 元素上局部指定以下属性,以覆盖给定 spine 项的全局值

rendition:flow-auto
表示 EPUB 创建者对溢出内容处理没有偏好。
rendition:flow-paginated
表示 EPUB 创建者偏好对内容溢出进行动态分页。
rendition:flow-scrolled-continuous
表示 EPUB 创建者偏好为溢出 内容提供滚动视图,并且具有此属性的连续 spine 项应渲染为 连续滚动。
rendition:flow-scrolled-doc
表示 EPUB 创建者偏好为溢出 内容提供滚动视图,并且具有此属性的每个 spine 项应渲染为单独的 可滚动文档。

EPUB 创建者 MUST NOT 在任何给定 spine 项上使用这些覆盖项中的多个。

8.3.2 rendition:align-x-center 属性

rendition:align-x-center 属性指定给定的 spine 项应在视口或跨页中水平居中。

该属性 MUST NOT 被全局设置为适用于所有 EPUB 内容文档(即,在没有 refines 属性meta 元素中)。它只能通过 itemref 元素的 properties 属性,作为单个 EPUB 内容文档的 spine 覆盖使用。

该属性主要是为在内容渲染中缺乏可靠居中控制的情况下处理 “Naka-Tobira (中扉)”(章节标题页)而开发的。不过,随着 CSS 中分页媒体支持的 发展,此属性预计会被弃用。鼓励 EPUB 创建者在有效时使用 CSS 解决方案。

9. 媒体叠加

9.1 介绍

本节是非规范性的。

主流电子书、教育工具以及为有印刷品阅读障碍的人士格式化的电子书,是一些 包含同步音频旁白的作品示例。在 EPUB 3 中,EPUB 创建者可以 使用媒体叠加文档创建这些类型的书籍,用以描述预录音频旁白的时间安排, 以及它与 EPUB 内容文档标记之间的关系。本 规范将媒体叠加的文件格式定义为 [smil3] 的一个子集, 后者是一项用于在 XML 中表示同步多媒体信息的 W3C 推荐标准。

媒体叠加所支持的文本与音频同步,为任何难以跟随传统书籍文本的 用户提供了增强的无障碍性。媒体叠加还为因任何原因无法阅读文本的读者 提供连续聆听体验, 这是传统音频嵌入技术无法提供的。它们甚至可用于 传统上不被视为无障碍问题的用途(例如语言学习)。

对于不支持此特性的 EPUB 阅读系统而言,媒体叠加特性是透明的。 在 EPUB 出版物中包含媒体叠加,不会影响 不识别媒体叠加的阅读系统像媒体叠加不存在一样渲染 EPUB 出版物的能力。

EPUB 中的媒体叠加并不等同于有声书,因为有声书主要基于音频, 文本只是偶尔作为替代格式提供。W3C [audiobooks] 推荐标准用于 构建音频出版物。

虽然本规范的未来版本可能会纳入对视频媒体的支持(例如, 同步文本/手语书籍),但此版本仅支持将音频媒体与 EPUB 内容文档同步。

9.2 媒体叠加文档

9.2.1 媒体叠加 文档要求

一个媒体叠加文档

9.2.2 媒体叠加 文档定义

除非另有规定,本节定义的所有元素 [xml] 都位于 https://www.w3.org/ns/SMIL 命名空间 [xml-names] 中。

9.2.2.1 smil 元素

smil 元素封装媒体叠加文档中的所有信息。

元素名称:

smil

用法:

媒体叠加 文档的 REQUIRED 根元素 [xml]。

属性:
version [必需]

指定媒体叠加文档所遵循的 [smil3] 规范版本号。

此属性 MUST 具有值“3.0”。

id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

epub:prefix [可选]

声明附加元数据词汇表前缀。

更多信息请参阅 9.3.3 叠加中的结构语义

内容模型:

按以下顺序:

9.2.2.2 head 元素

head 元素是媒体叠加文档中元数据的容器。

元素名称:

head

用法:

head 元素是 smil 元素的 OPTIONAL 第一个子元素。

属性:

内容模型:

metadata [0 或 1]

由于本规范未定义任何必须出现在媒体叠加文档中的元数据属性, 因此 head 元素是 OPTIONAL

9.2.2.3 metadata 元素

metadata 元素表示媒体叠加文档的元数据。 metadata 元素是一个扩展点,允许包含来自任何元信息结构化语言的 元数据。

元素名称:

metadata

用法:

作为 head 元素的子元素。

属性:

内容模型:

来自任何命名空间的元素 [0 个或多个]

本规范不要求媒体叠加文档中包含任何元数据属性; metadata 元素供自定义元数据要求使用。

9.2.2.4 body 元素

body 元素是 媒体叠加文档中包含的呈现的起点。它包含 parseq 元素的主序列。

元素名称:

body

用法:

body 元素是 smil 元素的 REQUIRED 子元素。当 head 元素存在时,它跟在该元素之后。

属性:
epub:type [可选]

对应 EPUB 内容 文档中相应元素结构语义的表达。

该值是以空白分隔的属性类型列表。更多 信息请参阅 9.3.3 叠加中的结构语义

id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

epub:textref [可选]

引用关联的 EPUB 内容文档,并可选择性地标识其中的 特定部分。

该值 MUST 是一个 path-relative-scheme-less-URL string,可选地 后跟 U+0023 (#) 和一个 URL-fragment string

内容模型:

任意顺序:

  • seq [0 个或多个]

  • par [0 个或多个]

MUST 至少包含一个 parseq

9.2.2.5 seq 元素

seq 元素是媒体对象和/或子时间容器的顺序时间容器。

元素名称:

seq

用法:

一个或多个 seq 元素 MAY 作为 body 元素和 seq 元素的子元素出现。

属性:
epub:type [可选]

对应 EPUB 内容 文档中相应元素结构语义的表达。

该值是以空白分隔的属性类型列表。更多 信息请参阅 9.3.3 叠加中的结构语义

id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

epub:textref [必需]

引用关联的 EPUB 内容文档,并且 可选择性地标识其中的特定部分。

该值 MUST 是一个 path-relative-scheme-less-URL string,可选地 后跟 U+0023 (#) 和一个 URL-fragment string

更多信息请参阅 9.3.2.1 叠加结构

内容模型:

任意顺序:

  • seq [0 个或多个]

  • par [0 个或多个]

MUST 至少包含一个 parseq

9.2.2.6 par 元素

par 元素是媒体对象的并行时间容器。

元素名称:

par

用法:

一个或多个 par 元素 MAY 作为 bodyseq 元素的子元素出现。

属性:
epub:type [可选]

对应 EPUB 内容 文档中相应元素结构语义的表达。

该值是以空白分隔的属性类型列表。更多 信息请参阅 9.3.3 叠加中的结构语义

id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

内容模型:

任意顺序:

9.2.2.7 text 元素

text 元素引用 EPUB 内容文档中的一个元素。 text 元素通常引用文本元素,但也可以引用其他 EPUB 内容文档媒体元素。在没有同级 audio 元素的情况下,此元素引用的文本内容可通过 文本转语音渲染。

元素名称:

text

用法:

作为 par 元素的 REQUIRED 子元素。

属性:
src [必需]

引用关联的 EPUB 内容文档,并可选择性地标识其中的 特定部分。

该值 MUST 是一个 path-relative-scheme-less-URL string,可选地 后跟 U+0023 (#) 和一个 URL-fragment string

id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

内容模型:

本规范不对 text 元素的 src 属性施加限制。 不过,EPUB 创建者应引用能够用 CSS 设置样式的内容,以使与样式 信息的关联有效(即 XHTML 的可感知内容,或 SVG 中的 路径基本形状文本元素)。

[epub-rs-33] 不再为阅读系统提供有关定时媒体播放 (即自动开始引用的媒体)的指导。虽然 text 元素的 src 属性可以引用嵌入的定时 媒体(例如,通过 [htmlvideo 元素),但引用此类媒体可能会产生 不可预测的结果。

9.2.2.8 audio 元素

audio 元素表示一段音频媒体片段。

元素名称:

audio

用法:

par 元素的 OPTIONAL 子元素。

属性:
id [可选]

该元素的 ID [xml], 它在文档作用域内 MUST 唯一。

src [必需]

对音频文件的 relative-absolute-URL string [url] 引用。该 音频文件 MUST核心媒体类型资源表中列出的音频格式之一。

clipBegin [可选]

一个时钟值,指定物理媒体中与音频片段起点相对应的偏移量。

MUST 是 [smil3] 时钟 值

参见 H.4 时钟 值

clipEnd [可选]

一个时钟值,指定物理媒体中与音频片段终点相对应的偏移量。

MUST 是 [smil3] 时钟 值

参见 H.4 时钟 值

终止位置的时间偏移量 MUST 晚于 clipBegin 属性中指定的起始偏移量。

内容模型:

9.3 创建媒体叠加

9.3.1 介绍

本节是非规范性的。

EPUB 创建者可以将出版物的预录旁白表示为一系列音频 片段,每个片段对应于一个 EPUB 内容文档的一部分。例如,单个音频片段 通常表示单个短语或段落,但它不推断其相对于 其他片段或文档文本的顺序。媒体叠加通过使用 [smil3] 标记, 将结构化音频旁白与 EPUB 内容文档中对应的文本(或其他媒体)绑定,从而解决这种同步问题。 实际上,媒体叠加是 SMIL 3.0 的一个简化子集,用于定义这些片段的播放序列。

用于构造媒体叠加的主要 SMIL 元素包括 body (用于主 序列)、 seq (序列)和 par (并行)。(有关这些及其他 SMIL 元素的更多信息,请参阅 9.2.2 媒体叠加文档定义。)

par 元素是媒体叠加的基本构建块,并对应于 EPUB 内容文档中的一个短语。该元素为同步内容提供两项关键信息: 1)包含该短语旁白的音频片段;以及 2)指向关联 EPUB 内容文档片段的 指针。par 元素使用两个 媒体元素子元素来表示这些信息:一个 audio 元素和一个 text 元素。由于 par 元素的媒体对象子元素按并行方式计时,阅读 系统会同时渲染音频片段和 EPUB 内容文档片段,从而得到 同步呈现。

text 元素的 src 属性通过其 URL [url] 引用来引用 EPUB 内容文档中关联的短语、 句子或其他片段。audio 元素的 src 属性同样引用 对应音频片段的位置,并添加 OPTIONALclipBeginclipEnd 属性,以指示片段内的特定偏移量。

EPUB 创建者将 par 元素按顺序放在一起,以形成一系列短语 或句子。并非 EPUB 内容文档中的每个元素都会在媒体叠加文档中有对应的 par 元素,只有与音频 旁白相关的元素才会有。

EPUB 创建者还可以将 par 元素添加到 seq 元素中, 以定义更复杂的结构,例如部和章节(参见 9.3.2.1 叠加结构)。

9.3.2 与 EPUB 内容文档的关系

在本节中,EPUB 内容文档 假定为XHTML 内容 文档。虽然 EPUB 创建者可以将媒体 叠加用于 SVG 内容文档, 但播放行为可能不一致,因此不保证互操作性。

EPUB 创建者还应注意,阅读系统对可重排和固定布局 EPUB 内容文档播放的支持并无保证。阅读 系统分页策略的差异意味着,某些阅读系统可能只支持 其中一种布局格式中的媒体叠加。

9.3.2.1 叠加结构

媒体叠加文档body 由两个元素组成: par 元素 和 seq 元素。这些元素的顺序表示阅读系统 在播放期间如何渲染相应 EPUB 内容文档中的内容。

par 元素表示内容的一个片段,例如标记中的一个词、短语、 句子、表格单元格、列表项、图像或其他可标识的内容部分。 每个元素在播放期间同时标识要显示的内容(在 text 元素中)和要同步的 音频(在 audio 元素中)。

seq 元素表示序列——共同表示内容逻辑组件的一组 seq 和/或 par 元素。 EPUB 创建者可以使用它来表示嵌套 容器,例如章节、旁注、 标题、表格、列表和脚注。它允许 EPUB 创建者在媒体叠加文档中保留 这些容器固有的结构。

seq 元素 MUST 包含 epub:textref 属性。由于 seq 元素不 提供同步指令,此属性允许阅读系统将 该片段匹配到文本中的位置。

将章节、图、表格和脚注等结构分组到 seq 元素中的原因,是为了让阅读系统能够在播放期间标识它们的开始和结束 位置。然后,阅读系统可以提供适合内容布局的播放选项, 例如跳过较长的图、关闭 分页符公告的渲染(参见 9.4 可跳过性和可退出性),或自定义 阅读模式以适应表格等结构。

9.3.2.2 引用 文档片段

epub:textref 属性和 text 元素的 src 属性都可以包含一个 URL-fragment string,用于引用关联 EPUB 内容文档的 特定部分(例如,通过元素的 ID 引用该元素)。

对于 XHTMLSVG 内容文档,URL-fragment string SHOULD 分别是通过元素 ID 对特定元素的引用,或一个 SVG Fragment Identifier [svg]。

EPUB 创建者 MAY 使用其他片段标识符方案,但阅读系统可能 不支持这类标识符。

9.3.2.3 叠加粒度

本节是非规范性的。

媒体叠加的粒度级别取决于 EPUB 创建者如何标记 EPUB 内容文档,以及他们在 text 元素的 src 属性和 seq 元素的 epub:textref 属性中使用的片段标识符类型。例如,当引用 [html] 元素时,如果最细的标记级别 是段落级,那么这就是媒体叠加同步可能达到的最细级别。 同样,如果有段落以下级别的标记,例如 [html] span 元素表示短语或句子,则媒体叠加可以实现更细粒度。 更细的粒度在用户按词或短语导航以及搜索文本时,会为同步播放提供更精确的结果, 但会增加 媒体叠加文档的文件大小。不依赖 元素存在的片段标识符方案,在受支持时可以提供更细的粒度。

9.3.2.4 文本转语音 渲染

本规范允许使用文本转语音(TTS)——将 EPUB 出版物的文本 内容使用合成语音渲染成人工人声——来 补充预录音频片段。

当媒体叠加 par 元素省略其 audio 元素时,其 text 元素可以在 阅读系统中通过 TTS 渲染。如果该文本片段不适合 TTS 渲染(例如,不是文本元素和/或没有文本回退),这可能产生 意外结果。

有关在 EPUB 出版物中使用 TTS 技术的更多信息,请参阅 EPUB 3 Text-to-Speech Support [epub-tts-10]。

9.3.3 叠加中的结构语义

为了在媒体叠加文档中表达结构语义EPUB 创建者 MAYepub:type 属性上指定 parseqbody 元素。

epub:type 属性有助于阅读系统执行适合所指示语义类型的行为。 这些行为的示例包括可跳过性和可退出性以及表格阅读模式 [epub-rs-33]。

媒体叠加文档 MAYepub:type 属性使用适用的词汇表 关联机制来定义附加 语义。

9.3.4 关联样式 信息

EPUB 创建者 MAY 使用作者定义的类, 在 CSS 样式表中表达当前正在播放的 EPUB 内容文档元素的视觉 渲染信息。

使用时,EPUB 创建者 MUST 使用 包文档中的 active-classplayback-active-class 属性声明类名。

EPUB 创建者 MUST 在其定义的每个属性中恰好定义一个 CSS 类名。 每个属性 MUST 定义一个有效的 CSS 类 名,且不包括任何选择器 [css2]。 本规范保留用于这些 属性的名称。

EPUB 创建者 MAY 为指定的 CSS 类定义任何 CSS 属性, 但必须确保 每个具有关联媒体叠加文档的 EPUB 内容文档都包含一个 CSS 样式表(嵌入或链接),其中包含这些类定义。在缺少此类 定义时,阅读系统可能提供自己的样式,或 完全不提供样式。

EPUB 创建者 MUST NOTactive-classplayback-active-class 属性与 refines 属性结合使用, 因为它们始终适用于整个 EPUB 出版物

9.3.5 媒体叠加打包

9.3.5.1 包含媒体 叠加

如果某个 EPUB 内容文档媒体叠加文档全部或部分 引用,则其 manifest item 元素 MUST 指定 media-overlay 属性。该属性 MUST 引用 对应媒体叠加文档的 manifest itemID [xml]。

EPUB 创建者 MUST 仅 在引用 EPUB 内容文档的 manifest item 元素上指定 media-overlay 属性。

媒体叠加文档的 manifest item MUST 具有媒体类型 application/smil+xml

9.3.5.2 叠加包 元数据

EPUB 创建者 MUST包文档中,使用带有 duration 属性meta 元素,指定整个 EPUB 出版物的持续时间。

此外,EPUB 创建者 MUST 提供每个 媒体叠加文档的持续时间。EPUB 创建者 MUST 使用 refines 属性将 每个持续时间声明关联到对应的 manifest item

每个媒体叠加文档持续时间之和 SHOULD 等于 总持续时间,误差不超过一秒。

虽然由于将时间四舍五入到最接近的一秒小数部分, 单个持续时间之和可能无法与总持续时间完全匹配,但大于一秒的差异 表明存在由其他问题引起的不匹配。

EPUB 创建者 MAY 还在 包文档中指定 narrator 信息, 以及要应用于当前播放的 EPUB 内容文档元素的作者定义 CSS 类 名

media: 前缀被保留, 用于在包元数据中包含这些属性。

9.4 可跳过性和可退出性

9.4.1 可跳过性

阅读时,用户可能希望打开或关闭内容的某些特性,例如 脚注、页码或其他类型的次要内容。此特性称为 可跳过性。阅读系统使用媒体叠加 元素的 epub:type 属性提供的语义 信息来决定何时向用户提供可跳过特性的选项。

EPUB 创建者 MAY 使用以下 语义来启用可跳过性:

不过,此列表并非穷尽。它表示来自结构语义 词汇表 [epub-ssv-11] 的术语,阅读 系统最有可能为这些术语提供 可跳过性选项。

9.4.2 可退出性

可退出项目是嵌套结构,例如表格和列表,用户可能希望跳过 它们,并从紧接该嵌套结构之后的位置继续阅读。可退出性 特性不同于可跳过性特性,因为它并不启用或禁用整类 项目,而是提供从其中退出的方式(例如,用户可以先听一部分内容,然后 选择退出)。

EPUB 创建者 MAY 使用以下 语义来启用可退出性:

不过,此列表并非穷尽。它表示来自结构语义 词汇表 [epub-ssv-11] 的术语,阅读系统最有可能为这些术语提供 可退出性选项。

有时可退出结构可能包含可退出结构。例如,表格由许多行和单元格组成, 用户可能希望分别从这些结构中退出。阅读 系统对从此类结构中退出的支持很复杂,目前支持并不好。 EPUB 创建者应避免标识嵌套的可退出结构,直到有更好的 支持可用。

9.5 导航文档叠加

本节是非规范性的。

由于 EPUB 导航文档是一个 XHTML 内容文档EPUB 创建者可以将 媒体叠加文档与其关联。不过,与传统的 XHTML 内容文档不同,阅读系统必须向用户呈现 EPUB 导航文档,即使它未包含在 spine 中(参见 导航文档处理 [epub-rs-33])。因此,关联媒体叠加的行为方式可能会 因上下文而改变:

具体实现细节超出本规范范围。DAISY Media Overlays Playback Requirements 文档描述了 EPUB 创建者的最佳实践,并为阅读 系统开发者提供建议。

10. 无障碍

本节是非规范性的。

EPUB 3 明确构建于开放 Web 平台之上,以便能够利用其底层技术内置的结构、语义以及 由此带来的无障碍性。

创建无障碍 Web 内容的要求和实践,已经记录在 W3CWeb 内容 无障碍指南(WCAG) [wcag2] 中。 这些指南也构成了定义 EPUB 出版物无障碍性的基础。

由于当前的 WCAG 指南(版本 2)高度侧重于 Web 页面,因此单独的规范 EPUB 无障碍 [epub-a11y-11] 定义了如何将该标准 应用于 EPUB 出版物。它还为元数据、分页和媒体叠加添加了 EPUB 专用的要求和建议。

本规范建议 EPUB 出版物符合 无障碍要求,这些要求定义于 [epub-a11y-11]。遵循 此建议的一个好处是, 它有助于确保 EPUB 出版物满足世界各司法管辖区立法规定的无障碍要求。

不过,EPUB 创建者应超越法律要求,将无障碍性视为 其所有内容的一项要求。EPUB 出版物越无障碍,其潜在 受众就越大。

本规范不整合无障碍要求,以便这些要求能够独立于 EPUB 规范而适应和 演进——无障碍实践通常需要更频繁地更新。无障碍规范还旨在与 EPUB 的过去、 当前和未来版本一起使用。采用单独规范的方法确保 EPUB 的演进不会 将无障碍性锁定在某个时间点(即,它允许旧版本 EPUB 的生产者引用 最新的无障碍要求)。

11. 安全和隐私

11.1 概述

本节是非规范性的。

EPUB 出版物的特殊性在于其结构。EPUB 格式提供了一种方式,用于表示、打包和编码结构化且语义增强的 Web 内容 — 包括 HTML、CSS、SVG、JavaScript 和其他资源 — 以便 在单文件容器中分发。

这意味着 EPUB 3 的安全和隐私问题主要与这些 格式的特性相关,并且与 Web 内容带来的威胁非常相似。

虽然内容风险常常被等同于故意恶意的创作意图,但 EPUB 创建者需要意识到,许多出于善意遵循的实践也可能使 用户暴露于隐私和安全问题之中。本节其余部分探讨 EPUB 3 的风险模型, 旨在帮助 EPUB 创建者识别并缓解这些风险。

关于与 阅读系统相关的风险,请参阅 [epub-rs-33] 的 安全和隐私章节

11.2 威胁模型

本节是非规范性的。

EPUB 出版物会给毫无戒备的用户带来各种隐私和安全 威胁。许多此类威胁与 Web 内容相交,但 EPUB 也引入了自身独特的攻击 方法,可用于诱骗用户访问恶意内容,或诱导用户提供敏感 信息。EPUB 创建者和 用户需要 了解的一些较重要攻击向量包括:

嵌入远程资源

EPUB 3 允许一些 出版物资源远程 托管,具体是指其大小可能会对 EPUB 出版物的下载和 打开产生负面影响的资源(例如音频、视频和字体)。虽然按预期使用时 对用户有帮助,但这些豁免也可被用来向出版物中注入恶意内容。

此威胁并不限于访问由恶意行为者创建的内容。如果 EPUB 创建者 嵌入来自不可信来源的内容(例如第三方音频和视频),用户就始终 有可能收到已被攻陷的资源。

在分发时检查恶意软件和漏洞利用也并不总是可靠,因为恶意内容可能在发布后的 任何时候被替换,这与嵌入在 EPUB 容器中的资源不同。

EPUB 的对 EPUB 创建者来说是未知的, 并且特定于每个阅读系统实现。因此,如果 EPUB 创建者将 远程资源托管在其控制的 Web 服务器上,该 服务器实际上无法使用 需要指定允许源的安全特性,例如 CORSContent-Security-PolicyX-Frame-Options 头。

链接到外部资源

无论是否有意,指向外部网站和资源的链接都会使用户暴露于 可能危及其阅读系统或操作系统的潜在漏洞利用之中。虽然 外部链接通常会在 Web 浏览器中打开,并受浏览器安全 模型约束,但这并不能保护用户免受所有漏洞利用的影响。

即使 EPUB 创建者的意图并非恶意,向外部链接添加跟踪信息也会 给用户隐私带来问题,因为它可能允许在未经用户同意的情况下跟踪用户的活动。

断链劫持——当域名过期并被另一方购买以利用指向它的 链接时——也可能导致用户被带到 EPUB 创建者并未 打算指向的资源。

包含恶意内容

嵌入在 EPUB 容器中的资源并不能免受恶意行为者影响,尤其是当 EPUB 出版物来自不可信来源时。资源可能包含漏洞利用程序,或包含会将敏感信息提交给非预期方的 表单。此类行为者还可能尝试使用文件 间接技术(例如符号链接或文件别名)访问 远程资源

使用第三方内容(例如游戏和测验)时,如果 EPUB 创建者无法完全审查这些内容, 也可能导致安全和隐私问题。

允许脚本访问网络

当脚本可以访问设备网络时,它会提供多种可利用用户的渠道:

  • 收集关于用户及其活动的信息,无论是否具有恶意;
  • 尝试访问文件系统和本地存储以收集信息;
  • 钓鱼尝试(例如,使一个 EPUB 内容文档看起来像可信 Web 站点,以让用户提交登录信息);以及
  • 从外部站点向 EPUB 出版物中注入恶意内容。

即使这并非 EPUB 创建者的意图,网络访问也可能允许第三方内容利用用户。

使用数字版权管理保护内容

使用数字版权管理方案对 EPUB 出版物进行加密和解密,可能允许关于用户、 用户使用的供应商以及其阅读选择的个人身份信息被传递给第三方。

这些攻击的有效性通常还取决于诱骗用户相信他们正在交互的 出版物来自可信来源。这些欺骗可以采取以下形式:

伪造出版物信息

EPUB 出版物可能包含关于其自身的虚假信息,以诱骗用户相信 它来自合法来源。例如,恶意 EPUB 创建者可能伪造 作品的标题、作者、标识符和出版者。

虽然这种错误信息本身不会造成直接危害,但它可能导致用户 信任 EPUB 出版物中的恶意表单、链接和其他内容,因为他们以为这些内容 来自可靠来源。

伪装平台

恶意 EPUB 创建者还可能设计其内容以模仿或复制某个平台的 体验,从而诱骗用户信任其内容。

11.2.1 EPUB 专用特性

EPUB 3 试图避免扩展其所构建于其上的底层技术,但它确实引入了 一些新特性。不过,这些特性的受限范围限制了它们可能带来的威胁:

一个潜在的例外是 epubReadingSystem 对象 [epub-rs-33],它允许 EPUB 创建者 查询关于当前 阅读系统的信息。EPUB 创建者需要注意, 他们只能使用该对象公开的信息来改善其内容的渲染 (即,避免使用这些信息来分析用户及其环境)。

11.3 建议

虽然 EPUB 创建者无法阻止每一种利用用户的方法, 但他们最终要对其内容的安全构造负责。这意味着他们需要采取 预防措施,限制其 EPUB 出版物暴露于上一节所述各类恶意漏洞利用的风险中。

一些实际步骤包括:

EPUB 创建者还需要考虑用户的隐私权,避免出现他们有意收集数据的情况。 理想情况下,EPUB 创建者 SHOULD NOT 跟踪其 用户,但这并不 适用于所有类型的出版。

当 EPUB 创建者必须跟踪用户时,他们 SHOULD 在打开 EPUB 出版物之前 获得用户批准以收集 信息(例如,在教育课程作业中)。如果无法做到这一点,他们 SHOULD 在用户首次访问 EPUB 出版物时获得许可。 EPUB 创建者 SHOULD 还允许用户选择退出跟踪,并向用户提供 管理和删除任何关于他们所收集数据的能力。

EPUB 创建者还需要考虑无意中收集关于用户的信息。链接到 出版商网站上的内容,或在其服务器上远程托管资源,可能导致 对用户进行画像,尤其是在 URL 中添加唯一跟踪标识符时。

当在 EPUB 出版物内收集和存储用户信息时(例如通过使用 cookiesweb storage [html]),EPUB 创建者需要考虑其他 EPUB 出版物在阅读系统上盗取数据的潜在可能性。虽然 [epub-rs-33] 为 EPUB 出版物引入了唯一源要求, 从而限制了潜在攻击,但仍然存在阅读系统允许 EPUB 出版物访问共享持久化存储的风险 (例如,尚未更新的旧阅读系统和不符合规范的新阅读系统)。因此,EPUB 创建者 SHOULD NOT 将 敏感用户数据存储在持久化存储中。如果 EPUB 创建者必须存储敏感数据,他们 SHOULD 对数据进行加密,以防在发生漏洞利用时可被轻易访问。

当出版商和供应商必须使用数字版权管理方案时,他们应优先选择 不利用或不向外部方传输关于用户或其内容的信息来 执行加密或解密的方案。

为最大限度降低安全和隐私风险,EPUB 创建者 SHOULD 以长期保存为目标制作其 EPUB 出版物。以这种方式创建的 EPUB 出版物通常是 自包含的,不依赖网络访问,也不使用数字版权管理进行加密, 从而消除了许多可能的攻击向量。[iso22424] 就是此类 EPUB 出版物保存 格式的一个示例。虽然可以理解并非所有 EPUB 创建者都能达到这些 自包含水平,但尽可能遵循这些实践仍会有益于 整体用户隐私和安全。

A. 不受支持的特性

本规范包含某些尚未在阅读系统中得到完全支持的特性、 工作组不再建议使用的特性,或仅为与 EPUB 2 阅读系统互操作而保留的特性。本节定义附加到这些特性的标识含义 及其支持预期。

A.1 实现不足的特性

实现不足特性是指在 EPUB 3.3 之前引入, 但工作组尚未能够建立足够实现 经验的特性。

尽管存在此限制,这些特性仍被认为很重要而应予以保留,因为已知 EPUB 创建者会实现它们(即,弃用它们会使 现有内容失效), 和/或它们是 EPUB 所构建的内容模型不可或缺的一部分。

如果本规范将某个特性标识为实现不足,EPUB 创建者 MAY 按所述方式使用这些特性。

EPUB 一致性检查器在 EPUB 出版物中遇到实现不足的特性时,应提醒 EPUB 创建者注意其存在,但不得将其包含视为违反 标准(即,不发出错误或警告)。

注意

目前无法确定未来版本的标准中会移除实现不足标签, 还是用弃用取代它们。EPUB 创建者在使用这些 特性时,应认真考虑现在和未来可能出现的 互操作性问题。

将特性标记为实现不足,是为说明 EPUB 被纳入 W3C 之前在不同流程下开发而进行的一次性 事件。此标签不会用于在 W3C 流程下开发的新特性。

A.2 已弃用特性

已弃用特性是指工作组在本版本规范中不再建议使用的 特性。已弃用特性通常在阅读系统中支持有限或没有支持, 和/或在 EPUB 出版物中的使用有限或不存在。

如果本规范将某个特性标识为已弃用,EPUB 创建者 SHOULD NOT 在其 EPUB 出版物中使用该 特性。

EPUB 一致性检查器在 EPUB 出版物中遇到已弃用特性时,应提醒 EPUB 创建者注意其存在。

B. 允许的外部标识符

下表列出公共系统 标识符 [xml],这些标识符允许出现在文档类型声明中。[xml]

EPUB 创建者 MAY 仅在具有所列 媒体类型 [rfc2046] 的出版物资源中使用这些外部 标识符,并且这些媒体类型已在其 manifest 声明中指定。(更多 信息请参阅 3.9 XML 一致性。)

媒体类型 公共标识符 系统标识符
  • application/mathml+xml
  • application/mathml-presentation+xml
  • application/mathml-content+xml
-//W3C//DTD MathML 3.0//EN http://www.w3.org/Math/DTD/mathml3/mathml3.dtd
application/x-dtbncx+xml -//NISO//DTD ncx 2005-1//EN http://www.daisy.org/z3986/2005/ncx-2005-1.dtd
image/svg+xml -//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd

C. 表达结构语义

C.1 介绍

本节是非规范性的。

结构语义会添加关于元素所起具体结构作用的附加含义。 epub:type 属性用于在 EPUB 内容文档媒体叠加文档中表达特定领域语义, 它所携带的结构信息会 补充底层词汇表。

所应用的语义会细化其所在元素的含义,而不会改变 辅助技术对该元素本质的理解,这与使用类似的 role 属性 [html] 时的情况不同。换句话说,该 属性不会增强内容的无障碍性;它只提供关于用途的提示。

语义元数据会丰富内容,以用于出版工作流和作者定义的用途。 它还允许阅读系统更多地了解文档的结构和 内容(例如,在媒体叠加中启用可跳过性和可退出性)。

本规范定义了一种使用属性轴添加结构语义的方法:EPUB 创建者无需添加新元素, 而是可以将 epub:type 属性附加到现有元素上,以添加所需语义。

C.2 epub:type 属性

属性名称:

epub:type

命名空间:

http://www.idpf.org/2007/ops

用法:

请参阅 XHTMLSVG媒体 叠加的要求。

值:

以空白分隔的属性值列表,并受 D.1 词汇表关联机制中定义的限制约束。

空白字符是 [xml] 中定义的字符集合。

注意

虽然 epub:type 属性在性质上类似于 role 属性 [html],但这些属性服务于不同目的。 epub:type 属性的值不会像 ARIA role 那样增强通过 屏幕阅读器等辅助技术进行的访问,因为它们不会映射到这些技术所使用的无障碍 API。这 意味着向 [html] divspan 这类语义中性的元素添加 epub:type 值,并不会使它们对辅助技术更 无障碍。只有 ARIA roles 会影响辅助技术如何理解这些元素。

因此,epub:type 属性仅用于出版语义和 阅读系统增强。阅读系统可以使用 epub:type 值来提供内置朗读或媒体叠加功能等 无障碍增强,在这些情况下与辅助技术的交互并非必要。

有关无障碍出版角色的更多信息,请参阅 Digital Publishing WAI-ARIA Module [dpub-aria]。

epub:type 属性会对其所在元素赋予语义。它的值 是一个或多个以空白分隔的术语,这些术语源自与 文档实例关联的外部词汇表。

epub:type 属性的默认词汇表是 EPUB 3 结构语义词汇表 [epub-ssv-11]。EPUB 创建者 MAY 包含 不属于该词汇表的无前缀术语,但添加自定义 语义的首选方法是为它们使用前缀。更多信息请参阅 D.1 词汇表关联 机制

D. 词汇表

本附录定义了一组通用机制,通过这些机制,本规范中的属性可以引用 词汇表中的术语。它还定义了与这些属性一起使用的 EPUB 专用词汇表。

D.1 词汇表关联 机制

D.1.1 介绍

本节是非规范性的。

EPUB 定义了一种正式方法,用于使用 property 数据类型引用元数据和语义词汇表中定义的术语和属性。例如, epub:type 属性在 EPUB 内容文档媒体叠加文档中使用此数据类型来添加结构语义, 而 propertyrel 属性使用该数据类型 在包 文档中定义属性和关系。

property 值类似于 CURIE [rdfa-core]——它 以紧凑形式表示 URL [url]。该表达由前缀和引用组成,其中前缀——无论是 字面给出还是隐含给出——都是 URL 的简写映射,通常解析到一个术语 词汇表。当阅读系统将该 前缀转换为其 URL 表示并与 引用组合时,得到的 URL 通常解析到该词汇表中的一个片段, 其中包含关于该术语的人类可读和/或机器可读信息。

为降低创作复杂度,每个采用 property 数据类型的属性 还会定义一个默认词汇表。从默认词汇表引用的术语和属性 不包含前缀,因为阅读系统用于映射到 URL 的映射是预定义的。

property 数据类型的强大之处在于其易于扩展。要纳入新的 术语和属性,EPUB 创建者只需要声明一个 前缀。作为另一种创作便利,本规范还会为许多常用的 出版词汇表保留前缀(即,它们的声明是可选的)。

以下各节提供有关 property 数据类型和 词汇表关联机制的更多详细信息。

D.1.2 property 数据 类型

property 数据类型是表达 URL [url] 的紧凑方式, 它由一个 OPTIONAL 前缀组成,该前缀通过冒号与引用分隔。

(EBNF 产生式 ISO/IEC 14977
所有终结符均位于 Unicode 块“Basic Latin”(U+0000 到 U+007F)中。
property = [ prefix , ":" ] , reference;  
prefix = ? xsd:NCName ? ;  
reference = ? path-relative-scheme-less-URL string [url] ? ; /* 按 [url] 中定义 */

本规范从 [rdfa-core] 中定义的 CURIE 数据类型派生出 property 数据类型。property 表示 CURIE 的一个子集。

不过,它与 CURIE 有两个关键差异:

  • 空的 reference 并不表示有效的 property 值, 即使它对上面的定义是有效的(即,仅由前缀和冒号组成的 property 值无效)。

  • 空字符串并不表示有效的 property,即使它对 上面的定义是有效的。

EPUB 创建者property 值中省略前缀时,所表达的引用 表示该属性的默认词汇表中的术语。

D.1.3 默认词汇表

默认词汇表是这样一种词汇表:当预期使用 property时,EPUB 创建者无需为其声明 前缀即可使用其中的术语和属性。EPUB 创建者 MUST NOT 为默认词汇表中的术语和属性添加前缀。

EPUB 创建者 MUST NOT 使用 prefix 属性为与这些 词汇表关联的 URL 分配前缀。

有关其默认 词汇表的更多信息,请参阅每个采用 property 数据类型的属性的定义。

D.1.4 prefix 属性

prefix 属性定义用于 property的前缀映射。

prefix 属性的值是一个或多个 前缀到 URL 映射的空白分隔列表,形式如下:

(EBNF 产生式 ISO/IEC 14977
所有终结符均位于 Unicode 块“Basic Latin”(U+0000 到 U+007F)中。
prefixes = mapping , { whitespace, { whitespace } , mapping } ;  
mapping = prefix , ":" , space , { space } , ? xsd:anyURI ? ;  
prefix = ? xsd:NCName ? ;  
space = #x20 ;  
whitespace = (#x20 | #x9 | #xD | #xA) ;  

保留前缀外,EPUB 创建者 MUST 声明文档中使用的所有前缀。EPUB 创建者 MUST 仅在相应格式的 根元素 [xml] 上指定 prefix 属性。

当在包 文档中使用时,该属性没有命名空间。

EPUB 创建者 MUST 在命名空间 http://www.idpf.org/2007/ops 中声明该属性,用于 EPUB 内容文档媒体叠加文档

虽然 prefix 属性以 [rdfa-core] 中同名的 prefix 属性为模型, 但 EPUB 创建者不能互换使用这些属性。EPUB 内容 文档中没有命名空间的 prefix 属性是 RDFa 属性。

在同时指定 RDFa 表达式的 EPUB 内容文档中,这两个属性同时出现很常见。

<htmlprefix="…"
        xmlns:epub="http://www.idpf.org/2007/ops"
        epub:prefix="…"></html>

注意,对于通过包含嵌入的 SVG,前缀 MUST 声明在 [html] 根 html 元素上。

为避免冲突,EPUB 创建者 MUST NOT 使用 prefix 属性声明一个 映射到默认词汇表的前缀。

EPUB 创建者 MUST NOT 声明前缀“_”,因为本规范保留 此前缀以便 将来与 RDFa [rdfa-core] 处理兼容。

为将来与包文档的替代序列化兼容,EPUB 创建者 MUST NOT 为 Dublin Core /elements/1.1/ 命名空间 [dcterms] 声明前缀。 EPUB 创建者 MUST 仅使用 [dcterms] 中包 文档元数据允许的元素。

D.1.5 保留前缀

注意

虽然保留前缀是一种创作便利,EPUB 创建者仍应避免 依赖它们,因为它们可能导致互操作性问题。例如,EPUB 一致性检查器 往往会拒绝新的前缀,直到其开发者将工具更新到规范的最新版本。 EPUB 创建者应声明其使用的所有前缀,以避免此类问题。

EPUB 创建者 MAY 在期望 property的属性中使用保留 前缀,而无需在 prefix 属性中声明它们。

EPUB 创建者 SHOULD NOTprefix 属性中覆盖保留前缀。

EPUB 创建者可以使用的保留前缀取决于上下文:

包文档

EPUB 创建者 MAY包文档属性中使用以下前缀, 而无需声明它们。

前缀 URL
a11y http://www.idpf.org/epub/vocab/package/a11y/#
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#
rendition http://www.idpf.org/vocab/rendition/#
schema http://schema.org/
xsd http://www.w3.org/2001/XMLSchema#
结构语义

EPUB 创建者 MAYepub:type 属性中使用以下保留前缀, 而无需声明它们。

前缀 URL
msv http://www.idpf.org/epub/vocab/structure/magazine/#
prism http://www.prismstandard.org/specifications/3.0/PRISM_CV_Spec_3.0.htm#

D.2 属性字段定义

词汇表定义表中的字段具有以下隐含要求:

允许值

使用 [xmlschema-2] 数据类型 指定 REQUIRED 的值类型。

适用于

指定 EPUB 创建者 MAY 在哪些出版物资源类型上指定该属性。

此字段出现在用于 properties 属性的属性上。

基数

指定 EPUB 创建者 MAY 指定该属性的次数, 无论是全局指定,还是 附加到另一个元素或属性上。

最小基数为一的属性 MUST 被指定。

描述

描述该属性的目的,并指定 EPUB 创建者必须遵循的任何附加使用要求。

示例

提供非规范性的用法示例。

扩展

标识 EPUB 创建者 MAY 将该属性与什么关联。

此字段出现在定义主表达式 和子表达式以及关系的属性上。

名称

指定该属性在元数据中 MUST 出现时的名称。

D.3 Meta 属性词汇表

此词汇表中的属性可用于 meta 元素的 property 属性。

除非其“Extends”字段另有说明,本节定义的属性用于 定义子表达式:换句话说,一个携带本节定义属性的 meta 元素 MUST 具有 refines 属性,用于引用被增强的资源或表达式。

用于引用这些属性的前缀 URL 是 http://idpf.org/epub/vocab/package/meta/#

D.3.1 alternate-script

名称: alternate-script
描述:

alternate-script 属性提供关联属性值在不同语言和/或文字中的 替代表达。 alternate-script 属性及其关联 属性的语言标签 ——如其各自作用域内的 xml:lang 属性所表达 ——MUST NOT 相同。

此属性通常附加到 creatortitle 属性上,用于国际化目的。

允许值: xsd:string
基数: zero or more
扩展: 所有属性。

D.3.2 authority

名称: authority
描述:

authority 属性标识所引用元素的值所来源的系统或方案。

允许值: xsd:string

以前的 IDPF EPUB 3 工作组维护过一个供此属性使用的主题权威 登记表。本工作组不再维护该登记表。

基数: zero or one
扩展: dc:subject

D.3.3 belongs-to-collection

名称: belongs-to-collection
描述:

belongs-to-collection 属性标识EPUB 出版物 所属集合的名称。EPUB 出版物 MAY 属于一个或多个 集合。

还可以使用 refines 属性链式连接这些属性, 以表示某个集合 本身是另一个集合的成员。

为允许阅读系统 组织集合并避免命名冲突(例如, 无关的集合可能共享相似名称,或某个集合的不同版本可能被发布), EPUB 创建者 SHOULD 提供一个能够唯一 标识该集合实例的标识符。dcterms:identifier 属性必须携带此标识符。

该集合 MAY 通过附加 collection-type 属性,更精确地定义其性质。

EPUB 出版物在该集合中的位置 MAY 通过附加 group-position 属性提供。

允许值: xsd:string
基数: zero or more
扩展: 适用于 EPUB 出版物,并可细化自身的其他实例。

D.3.4 collection-type

名称: collection-type
描述:

collection-type 属性表示集合的形式或性质。

collection-type 值来自代码列表或其他正式 枚举时,EPUB 创建者 SHOULD 附加一个 scheme 属性以标识其来源。

当未指定 scheme 时,本规范还定义以下集合类型:

series

一系列相关作品,它们被正式标识为一个组, 通常是开放式的,并且各作品会随时间单独发行。

set

有限的作品集合,它们共同构成一个单一的智力 单元,通常一起发行,并且可以作为一个单元出售。

虽然阅读 系统不需要支持这些值,但指定 它们会提供以更有意义的方式对相关 EPUB 出版物进行分组的选项。

允许值: xsd:string
基数: zero or one
扩展: belongs-to-collection

D.3.5 display-seq

名称: display-seq
描述:

display-seq 属性表示当前属性相对于相同元数据属性 显示时的数字位置。

此属性仅适用于尚未定义优先级规则的情况 (例如,会根据创建者在 文档顺序中的出现顺序赋予优先级)。

允许值: xsd:unsignedInt
基数: zero or one
扩展: 所有属性。

D.3.6 file-as

名称: file-as
描述: file-as 属性提供关联属性用于排序的规范化形式。
允许值: xsd:string
基数: zero or one
扩展: 所有属性。

D.3.7 group-position

名称: group-position
描述:

group-position 属性表示 EPUB 出版物相对于同一组中其他作品 (无论它们是否全部是 EPUB 出版物) 的排序数字位置。

EPUB 创建者可以将 group-position 属性附加到任何建立该组的元数据 属性,但它通常与 belongs-to-collection 属性关联。

EPUB 出版物可以属于多个组。

允许值: 单个 xsd:unsignedInt 或一系列以小数点分隔的数字(例如, 12.2.1)。
基数: zero or one
扩展: 所有属性。

D.3.8 identifier-type

名称: identifier-type
描述:

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

identifier-type 值来自代码列表或其他正式 枚举时,EPUB 创建者 SHOULD 附加一个 scheme 属性以标识其来源。

允许值: xsd:string
基数: zero or one
扩展: dc:identifier, dc:source

D.3.9 meta-auth(已弃用)

使用此属性已弃用

更多信息请参阅 [epubpublications-30] 中的 meta-auth 属性定义

D.3.10 role

名称: role
描述:

role 属性描述 creatorcontributorpublisher 在 EPUB 出版物创建中的角色。

role 值来自代码列表或其他正式 枚举时,EPUB 创建者 SHOULD 附加一个 scheme 属性以标识其来源。

当为个人或组织附加多个角色时,角色的重要性应与其所包含的 meta 元素的文档顺序相匹配 (即,遇到的第一个 meta 元素应包含最 重要的角色)。

允许值: xsd:string
基数: zero or more
扩展: dc:contributor, dc:creator, dc:publisher

D.3.11 source-of

名称: source-of
描述:

source-of 属性表示经改编源资源中保留在 EPUB 出版物中的某个独特方面。

本规范定义 pagination 值,用于表示 被引用的 dc:source 元素是内容中定义的 pagebreak 属性的来源。

允许值: pagination
基数: zero or one
扩展: dc:source

有关如何提供无障碍页面 导航的信息,请参阅 [epub-a11y-tech-11]。

D.3.12 term

名称: term
描述:

term 属性提供主题代码。

允许值: xsd:string
基数: zero or one
扩展: dc:subject

D.3.13 title-type

名称: title-type
描述:

title-type 属性表示 title 的形式或性质。

title-type 值来自代码列表或其他正式 枚举时,EPUB 创建者 SHOULD 附加一个 scheme 属性以标识其来源。当未指定 scheme 时,阅读系统 SHOULD 识别以下标题类型值: mainsubtitleshortcollectioneditionexpanded

允许值: xsd:string
基数: zero or one
扩展: dc:title

D.3.14 示例

D.5 包渲染词汇表

用于引用这些属性的前缀 URL 是 http://www.idpf.org/vocab/rendition/#

rendition:”前缀被保留供 使用于包渲染属性,并且无需在 包文档中声明。

与本附录中的其他词汇表不同,包渲染词汇表中的属性 由属性(在 meta 元素中表达) 和 spine 覆盖项(在 itemref 元素上表达)混合组成。

使用要求也在 8. 布局渲染控制中定义,而不是在本附录中定义。 下表提供属性、覆盖项及其定义位置的映射。

属性 覆盖项 定义于
rendition:layout
  • rendition:layout-pre-paginated
  • rendition:layout-reflowable
8.2.2.1 布局
rendition:orientation
  • rendition:orientation-auto
  • rendition:orientation-landscape
  • rendition:orientation-portrait
8.2.2.2 方向
rendition:spread
  • rendition:spread-auto
  • rendition:spread-both
  • rendition:spread-landscape
  • rendition:spread-none
  • rendition:spread-portrait(已弃用)
8.2.2.3 合成跨页
  • rendition:page-spread-center
  • rendition:page-spread-left
  • rendition:page-spread-right
8.2.2.4 跨页放置
rendition:viewport(已弃用) 8.2.2.5 视口尺寸 (已弃用)
rendition:flow
  • rendition:flow-paginated
  • rendition:flow-scrolled-continuous
  • rendition:flow-scrolled-doc
  • rendition:flow-auto
8.3.1 rendition:flow 属性
  • rendition:align-x-center
8.3.2 rendition:align-x-center 属性

D.5.1 自定义渲染 属性

阅读系统开发者可以引入 本规范未定义的功能,以解决 EPUB 内容文档渲染中的阅读系统特定问题。

为促进这种实验,EPUB 创建者 MAY包文档中包含自定义属性和供 spine 使用的覆盖项,前提是它们不使用 rendition: 前缀。

自定义属性应仅处理特定阅读 系统专有的渲染问题。本 规范应被扩展,以提供多个独立阅读 系统都能使用的扩展。

D.6 Manifest 属性词汇表

此词汇表中的属性可用于 manifest item 元素的 properties 属性

用于引用这些属性的前缀 URL 是 http://idpf.org/epub/vocab/package/item/#

D.6.1 cover-image

名称: cover-image
描述: cover-image 属性将所描述的出版物 资源标识为 EPUB 出版物的封面图像。
适用于: 所有光栅和矢量图像类型
基数: Zero or one

D.6.2 mathml

名称: mathml
描述: mathml 属性表示所描述的出版物 资源 包含一个或多个 MathML 标记实例。
适用于: EPUB 内容 文档
基数: Zero or more

D.6.3 nav

D.6.4 remote-resources

名称: remote-resources
描述:

remote-resources 属性表示所描述的出版物 资源包含一个或多个指向其他出版物 资源的内部引用, 而这些资源位于 EPUB 容器之外。

更多信息请参阅 3.6 资源位置

适用于: 所有具有内部引用能力的出版物资源 (例如,XHTML 内容 文档SVG 内容 文档、 CSS 样式表和 媒体叠加文档)。
基数: Zero or more

D.6.5 scripted

名称: scripted
描述: scripted 属性表示所描述的出版物 资源是一个 脚本化内容 文档(即,包含脚本和/或 [html] form 元素)。
适用于: EPUB 内容 文档
基数: Zero or more

D.6.6 svg

名称: svg
描述:

svg 属性表示所描述的出版物 资源 嵌入了一个或多个 SVG 标记实例。

当 SVG 标记直接包含在资源中时,此属性 MUST 被设置;当 SVG 从资源中被引用时(例如,从 [html] imgobjectiframe 元素引用),此属性 MAY 被设置。

适用于: XHTML 内容 文档;对于 SVG 内容文档,该值是隐含的。
基数: Zero or more

D.6.7 switch

名称: switch
描述:

switch 属性表示所描述的出版物 资源 包含一个或多个已弃用的 epub:switch 元素实例。

适用于: XHTML 内容 文档
基数: Zero or more

D.7 Spine 属性词汇表

此词汇表中的属性可用于 spine itemref 元素的 properties 属性

用于引用这些属性的前缀 URL 是 http://idpf.org/epub/vocab/package/itemref/#

D.7.1 page-spread-left

名称: page-spread-left
描述:

page-spread-left 属性表示关联 item 元素的 EPUB 内容文档的第一页表示 双页跨页的 左侧。

rendition:page-spread-left 属性是此属性的别名。有关其用法的更多信息,请参阅 8.2.2.4 跨页放置

D.7.2 page-spread-right

名称: page-spread-right
描述:

page-spread-right 属性表示关联 item 元素的 EPUB 内容文档 的第一页表示双页跨页的右侧。

rendition:page-spread-right 属性是此属性的别名。有关其用法的更多信息,请参阅 8.2.2.4 跨页放置

D.7.3 示例

D.8 媒体叠加词汇表

此词汇表中的属性可用于 meta 元素的 property 属性。

用于引用这些属性的前缀 URL 是 http://www.idpf.org/epub/vocab/overlays/#

前缀“media:”被保留供使用于 此词汇表中的属性,并且无需在包文档中声明。

D.8.1 active-class

名称: active-class
描述: EPUB 创建者定义的 CSS 类名,用于应用 到当前正在播放的 EPUB 内容文档 元素。
允许值: xsd:string
基数: Zero or one
示例: <meta property="media:active-class">-epub-media-overlay-active</meta>

D.8.2 duration

名称: duration
描述: 整个呈现或某个特定媒体叠加 文档的时长。 所指定的时长会计入创作时已知的音频片段,因此 不包括来自外部资源的实时流和语音合成。
允许值:

MUST 是 [smil3] 时钟值

基数: 对于 EPUB 出版物以及 每个媒体叠加 文档均为 exactly one。
示例: <meta property="media:duration">1:36:20</meta>

D.8.3 narrator

名称: narrator
描述: 叙述者的姓名。
允许值: xsd:string
基数: Zero or more
示例: <meta property="media:narrator">Joe Speaker</meta>

D.8.4 playback-active-class

名称: playback-active-class
描述: 作者定义的 CSS 类名,用于当播放处于活动状态时应用到 EPUB 内容 文档的 文档元素。
允许值: xsd:string
基数: Zero or one
示例: <meta property="media:playback-active-class">-epub-media-overlay-playing</meta>

E. 带前缀的 CSS 属性

本附录描述 EPUB 支持的带前缀 CSS 属性。

这些前缀定义不再与其 CSS 对应项同步。在某些 情况下,这些属性的无前缀版本现在支持额外值。阅读系统 可能不支持带前缀属性的新语法,因此建议 EPUB 创建者 对较新的特性使用 无前缀版本。

E.1 CSS 书写模式

本节描述用于 [css-writing-modes-3] 的 -epub- 前缀属性。

E.1.1 -epub-text-orientation 属性

此属性是 text-orientation 属性 [css-writing-modes-3] 的带前缀版本。

名称: -epub-text-orientation
值: mixed | upright | sideways | sideways-right

为与现有内容兼容,-epub-text-orientation 属性还 支持已弃用的 vertical-rightrotate-rightrotate-normal 关键字。下表指定这些值在 被指定时产生的效果。

已弃用值 要使用的值
vertical-right mixed
rotate-right sideways
rotate-normal sideways

E.1.2 -epub-writing-mode 属性

此属性是 writing-mode 属性 [css-writing-modes-3] 的带前缀版本,具有相同的语法和 行为。

名称: -epub-writing-mode
值: horizontal-tb | vertical-rl | vertical-lr

E.1.3 -epub-text-combine-horizontal-epub-text-combine 属性

这些属性是 text-combine-upright 属性 [css-writing-modes-3] 的带前缀版本,不过 -epub-text-combine 已弃用。

名称: -epub-text-combine-horizontal
值: none | all
名称: -epub-text-combine(已弃用)
值: none | horizontal | horizontal <number>

为与现有内容兼容,-epub-text-combine-horizontal-epub-text-combine 属性还支持若干已弃用关键字。下 表指定这些关键字在被指定时产生的效果。

带前缀版本 CSS 等价项
-epub-text-combine-horizontal: none text-combine-upright: none
-epub-text-combine-horizontal: all text-combine-upright: all
-epub-text-combine: none text-combine-upright: none
-epub-text-combine: horizontal text-combine-upright: all
-epub-text-combine: horizontal <number> 无等价项

E.2 CSS 文本第 3 级

本节描述用于 [css-text-3] 的 -epub- 前缀属性 (以及一个带前缀值)。

E.2.1 -epub-hyphens 属性

此属性是 hyphens 属性 [css-text-3] 的带前缀版本。

名称: -epub-hyphens
值: none | manual | auto | all

为与现有内容兼容,-epub-hyphens 属性还支持 已弃用的 all 关键字。该值在 CSS 中不再受支持,也没有可替代使用的 等价项。

E.2.2 -epub-line-break 属性

此属性是 line-break 属性 [css-text-3] 的带前缀版本。

名称: -epub-line-break
值: auto | loose | normal | strict

E.2.3 -epub-text-align-last 属性

此属性是 text-align-last 属性 [css-text-3] 的带前缀版本。

名称: -epub-text-align-last
值: auto | start | end | left | right | center | justify

E.2.4 -epub-word-break 属性

此属性是 word-break 属性 [css-text-3] 的带前缀版本。

名称: -epub-word-break
值: normal | keep-all | break-all

E.2.5 text-transform 属性

此属性是 text-transform 属性 [css-text-3] 的带前缀值。

名称: text-transform
值: -epub-fullwidth

为与现有内容兼容,text-transform 属性还支持 已弃用的 -epub-fullwidth 关键字。指定时,它具有与 text-transform: full-width 相同的效果。

E.3 CSS 文本装饰第 3 级

本节描述用于 [css-text-decor-3] 的 -epub- 前缀属性。

E.3.1 -epub-text-emphasis-color 属性

此属性是 text-emphasis-color 属性 [css-text-decor-3] 的带前缀版本。

名称: -epub-text-emphasis-color
值: <color>

E.3.2 -epub-text-emphasis-position 属性

此属性是 text-emphasis-position 属性 [css-text-decor-3] 的带前缀版本。

名称: -epub-text-emphasis-position
值: [ over | under ] && [ right | left ]

E.3.3 -epub-text-emphasis-style 属性

此属性是 text-emphasis-style 属性 [css-text-decor-3] 的带前缀版本。

名称: -epub-text-emphasis-style
值: none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>

E.3.4 -epub-text-underline-position 属性

此属性是 text-underline-position 属性 [css-text-decor-3] 的带前缀版本。

名称: -epub-text-underline-position
值: auto | [ under || [ left | right ] ] | alphabetic

为与现有内容兼容,-epub-text-underline-position 属性的值还支持已弃用的 alphabetic 关键字。指定时,它具有 与 text-underline-position: auto 相同的效果。

F. viewport meta 标签

F.1 介绍

本节是非规范性的。

由于早期 EPUB 3 版本中使用的 viewport meta 标签的 Safari HTML 定义并非官方认可的标准,本规范定义了一种 基本语法,以允许 EPUB 创建者表达用于渲染宽度和 高度尺寸固定布局文档

此语法也受到 [css-viewport-1] 中定义的 viewport meta 标签解析算法的影响。

该语法有意尽可能保持通用,因为定义所有可能的属性和值并不属于本规范的范围。 它只定义用于定义属性和值对的基本要求,以及表达式之间可能的分隔符。

F.2 语法

对于固定布局文档viewport meta 标签 [html] MUST 具有符合以下定义的 namecontent 属性:

name
name 属性 [html] 的值,在空白规范化 [xml] 后 MUSTviewport
content

content 属性 [html] 的值,在空白 规范化 [xml] 后 MUST 采用以下形式:

(EBNF 产生式 ISO/IEC 14977
所有终结符均位于 Unicode 块“Basic Latin”(U+0000 到 U+007F)中。
viewport = property, { sep, property } ;
property = name, [ assign, value ] ;
name = ? character data ? ;
value = ? character data ? ;
sep = sep-char, { sep-char } ;
sep-char = ( ";" | "," | space ) ;
assign = [ space ], "=", [ space ] ;
space = #x20 ;

对属性名称的唯一限制是,它们 MUST NOT 包含分隔符字符赋值字符

本节中的创作要求适用于空白规范化 [xml] 之后 (即,在阅读系统去除前导和尾随空白,并将属性内所有多个空白实例压缩为单个空格之后)。 EPUB 创建者 MAY 在所创作的标签中包含任何空白 字符 [xml],只要结果对此 定义有效。

虽然 [html] 依赖于 [infra] 的空白定义,但换页符(U+000C) 字符按 [xml] 定义并不是有效空白。 它不能用于 XML 语法(即,XHTML 内容文档中)。

对 [html] 语法允许在 meta 元素上的任何其他属性没有限制。

有关如何指定必需的 heightwidth 属性及其必需值的更多信息,请参阅 8.2.2.6 内容文档尺寸

虽然 viewport meta 标签允许 EPUB 创建者使用 heightwidth 以外的属性,并且不为这些属性包含值, 但强烈不建议这样使用。设置其他属性可能会对固定布局文档的渲染造成意外后果。

G. 模式

本节是非规范性的。

G.1 包文档模式

包文档的模式可在 https://github.com/w3c/epubcheck/tree/master/src/main/resources/com/adobe/epubcheck/schema/30/package-30.nvdl 获取。

使用此模式进行验证需要支持 [nvdl]、 [relaxng-schema]、 [isoschematron] 和 [xmlschema-2] 的处理器。

NVDL 模式层可以由仅使用嵌入的 RELAX NG 和 ISO Schematron 模式的多遍验证替代。

这些模式可能会在本规范的正式修订之外更新和修正。因此, 它们可能随时发生变化。

G.2 OCF 模式

G.2.1 container.xml 的模式

container.xml 文件的模式 可在 https://github.com/w3c/epubcheck/tree/master/src/main/resources/com/adobe/epubcheck/schema/30/ocf-container-30.nvdl 获取。

使用此模式进行验证需要支持 [relaxng-schema] 和 [xmlschema-2] 的处理器。

G.2.2 encryption.xml 的模式

encryption.xml 文件的模式包含在 [xmlsec-rngschema-20130411] 中。

G.2.3 signatures.xml 的模式

signatures.xml 文件的模式包含在 [xmlsec-rngschema-20130411] 中。

G.3 媒体叠加模式

媒体叠加文档的模式可在 https://github.com/w3c/epubcheck/tree/main/src/master/resources/com/adobe/epubcheck/schema/30/media-overlay-30.nvdl 获取。

使用此模式进行验证需要支持 [nvdl]、 [relaxng-schema]、 [isoschematron] 和 [xmlschema-2] 的处理器。

NVDL 模式层可以由仅使用嵌入的 RELAX NG 和 ISO Schematron 模式的多遍验证替代。

H. 详细示例

本节是非规范性的。

H.1 资源

请考虑以下一个包文档和一个 XHTML 内容文档的摘录:

<package …>
    <metadata …>
        …
        <link rel="record"
            href="meta/data.xml"
            media-type="application/marc"/>
        <link rel="record"
            href="https://www.example.org/meta/data2.xml"
            media-type="application/marc"/>
        …
    </metadata>
    <manifest>
        …
        <item id="page"
            href="page.xhtml"
            media-type="application/xhtml+xml"/>
        <item id="nav"
            href="nav.xhtml"
            media-type="application/xhtml+xml"
            properties="nav"/>
        <item id="style"
            href="style.css"
            media-type="text/css"/>
        <item id="font_otf"
            href="fonts/font-file.otf"
            media-type="font/otf"/>
        <item id="font_otf_remote"
            href="https://www.example.org/fonts/font-file2.otf"
            media-type="font/otf"/>
        <item id="font_cff"
            href="fonts/font-file.cff"
            media-type="font/sfnt"/>
        <item id="pls"
            href="speech/cmn.pls"
            media-type="application/pls+xml"/>
        <item id="image_1"
            href="media/image_1.png"
            media-type="image/png"/>
        <item id="image_2"
            href="media/image_2.png"
            media-type="image/png"
            fallback="image_desc"/>
        <item id="image_desc"
            href="image_desc.xhtml"
            media-type="application/xhtml+xml"/>
        <item id="image_3_heic"
            href="media/image_3.heic"
            media-type="image/heic"/>
        <item id="image_3_png"
            href="media/image_3.png"
            media-type="image/png"/>
        <item id="widget"
            href="widget.xhtml"
            media-type="application/xhtml+xml"/>
        …
    </manifest>
    <spine>
        …
        <itemref idref="page_001"/>
        <itemref idref="image_2"/>
        …
    </spine>
</package>

<html …>
    <head …>
        …
        <link rel="stylesheet" type="text/css" href="style.css"/>
        <link rel="pronunciation" type="application/pls+xml" href="speech/cmn.pls"/>
        …
    </head>
    <body>
        <img src="media/image1_png"/>
        …
        <a href="media/image_2.png">…</a>
        …
        <picture>
            <source srcset="media/image_3.heic" type="image/heic"/>
            <img src="media/image_3.png"/>
        </picture>
        …
        <iframe src="widget.xhtml"></iframe>
        …
        <a href="https://www.example.org/some_content">…</a>
    </body>
</html>

EPUB 出版物中的各种资源可按如下方式分类。 (有关这些类别的更多信息,请参阅 3. 出版物资源。)

meta/data.xml

该资源是元数据记录,存储在 EPUB 容器中。它通过包文档元数据中的 link 元素链接。因此,它是manifest 平面上的链接 资源(即,未列在 manifest 中)。它不属于 任何其他平面。

https://www.example.org/meta/data2.xml

该资源是远程存储的元数据记录。它通过 包文档元数据中的 link 元素链接。因此,它是 manifest 平面上的链接资源 (即,未列在 manifest 中)。它不属于任何其他平面。

page.xhtml

该资源是 XHTML 文档。它列在 [[EPUB spine | spine=] 中。它是 manifest 平面上的 出版物资源,是 容器资源,是 spine 平面上的 EPUB 内容文档,并且不存在于 内容平面上。不需要 fallback。

nav.xhtml

该资源是 EPUB 导航 文档。它未列在 spine 中。它是 manifest 平面上的 出版物资源,是容器资源,并且不存在于 spine 平面或内容平面上。不需要 fallback。

style.css

该资源是 CSS 文件。它未列在 spine 中,但从 [html] link 元素引用。它是 manifest 平面上的出版物 资源,是容器资源,不存在于 spine 平面上,并且是内容平面上的核心媒体类型 资源。不需要 fallback。

font/font-file.otf

该资源是 TrueType 字体文件。它未列在 spine 中,但从 CSS 文件引用。它是 manifest 平面上的出版物资源,是容器资源, 不存在于 spine 平面上,并且是内容平面上的核心媒体类型资源。不需要 fallback。

https://www.example.org/fonts/font-file2.otf

该资源是 TrueType 字体文件。它未列在 spine 中,但从 CSS 文件引用。它是 manifest 平面上的出版物资源,是远程资源,不 存在于 spine 平面上,并且是内容平面上的核心媒体类型资源。不需要 fallback。

font/font-file.cff

该资源是 Compact Font Format 字体文件。它未列在 spine 中,但从 CSS 文件引用。其媒体类型未列为核心媒体类型。它是 manifest 平面上的出版物资源,是容器资源,不存在于 spine 平面上,并且是内容平面上的豁免资源。不需要 fallback。

speech/cmn.pls

该资源是发音词典文件。它未列在 spine 中,但从 [html] link 元素引用。它是 manifest 平面上的出版物资源,是容器资源,不存在于 spine 平面上,并且是内容平面上的豁免资源。不需要 fallback。

image/image_1.png

该资源是 PNG 图像文件。它未列在 spine 中,但从 [html] img 元素引用。它是 manifest 平面上的出版物资源,是容器 资源,不存在于 spine 平面上,并且是内容平面上的核心媒体类型资源。不需要 fallback。

image/image_2.png

该资源是 PNG 图像文件。它通过 [html] a 元素引用。因为它 是从超链接引用的,所以它必须列在 spine 中。它是 manifest 平面上的出版物资源,是容器资源,是 spine 平面上的外来内容文档,并且是内容平面上的核心媒体类型资源。作为外来内容 文档,它需要 fallback,该 fallback 通过manifest fallback 提供。

image_desc.xhtml

该资源是 XHTML 文档。它是 manifest fallback 的“目标”,因此未 显式列在 spine 中(但会在需要时“替换”现有的 spine 项)。它 是 manifest 平面上的出版物资源,是容器资源,是 spine 平面上的 EPUB 内容 文档,并且由于它在渲染另一个 EPUB 内容 文档时未被“使用”,所以不存在于内容平面上。不需要 fallback。

image/image_3.heic

该资源是高效(HEIC)图像文件。它未列在 spine 中,但从 [html] source 元素引用。其媒体类型未列为核心媒体类型。 它是 manifest 平面上的出版物资源,是容器资源,不存在于 spine 平面上,并且是内容平面上的外来 资源。作为外来资源,它需要 fallback,该 fallback 由 [html] img 元素作为同级元素提供,该元素位于 [html] picture 元素中。

image/image_3.png

该资源是 PNG 图像文件。它未列在 spine 中,但从 [html] img 元素引用,该元素被用作 [html] picture 元素的内在 fallback。它是 manifest 平面上的出版物资源,是容器资源,不 存在于 spine 平面上,并且是内容平面上的核心媒体类型资源。不需要 fallback。

widget.xhtml

该资源是 XHTML 文档。它未列在 spine 中,但从 [html] iframe 元素引用。它是 manifest 平面上的出版物资源,是容器 资源,不存在于 spine 平面上,并且由于它在渲染另一个 EPUB 内容文档时被“使用”,所以是内容平面上的核心媒体类型资源。不需要 fallback。

https://www.example.org/some_content

该资源通过 [html] a 元素引用,并且未存储在 EPUB 容器中。阅读系统通常会通过单独的浏览器实例打开此链接。它 不位于本规范定义的任何平面上。

有关不同类型资源用法的更多示例,请参见 5.6.2.2 示例

H.2 脚本上下文

请考虑以下示例包文档

<package …>
    …
    <manifest>
        …
        <item id="chap01"
            href="scripted01.xhtml"
            media-type="application/xhtml+xml"
            properties="scripted"/>
        <item id="inset01"
            href="scripted02.xhtml"
            media-type="application/xhtml+xml"
            properties="scripted"/>
        <item id="slideshowjs"
            href="slideshow.js"
            media-type="text/javascript"/>
    </manifest>

    <spine …>
        <itemref idref="chap01"/>
        …
    </spine>
    …
</package>

以及以下文件 scripted01.xhtml

<html …>
    <head><script type="text/javascript">
            const te = navigator.epubReadingSystem.hasFeature("touch-events");
            const te_message = te ? "passes" : "does not pass";
            alert(`The reading system ${te_message} touch events to the content.`);
        </script>
    </head>
    <body><iframe src="scripted02.xhtml" … /></body>
</html>

以及以下文件 scripted02.xhtml

<html …>
    <head><script type="text/javascript" href="slideshow.js"></script>
    </head>
    <body></body>
</html>

从这些示例可以看出:

H.3 打包的 EPUB

此示例演示使用 OCF 格式将经过签名和加密的 EPUB 出版物包含在 OCF ZIP 容器中。

OCF ZIP 容器中的文件有序列表:

mimetype
META-INF/container.xml
META-INF/signatures.xml
META-INF/encryption.xml
EPUB/As_You_Like_It.opf
EPUB/book.html
EPUB/nav.html
EPUB/images/cover.png

mimetype 文件的内容

application/epub+zip

META-INF/container.xml 文件的内容

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

META-INF/signatures.xml 文件的内容

<signatures
    xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
   <Signature
       Id="AsYouLikeItSignature"
       xmlns="http://www.w3.org/2000/09/xmldsig#">

      <!--
           SignedInfo is the information that is actually signed.
           In this case, the SHA-1 algorithm is used to sign the
           canonical form of the XML documents enumerated in the
           Object element below.
      -->

      <SignedInfo>
         <CanonicalizationMethod
             Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
         <SignatureMethod
             Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
         <Reference
             URI="#AsYouLikeIt">
            <DigestMethod
                Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <DigestValue></DigestValue>
         </Reference>
      </SignedInfo>

      <!--
           The signed value of the digest above, using the DSA
           algorithm
      -->
      <SignatureValue></SignatureValue>

      <!--
           The key used to validate the signature
      -->
      <KeyInfo>
         <KeyValue>
            <DSAKeyValue>
               <P></P>
               <Q></Q>
               <G></G>
               <Y></Y>
            </DSAKeyValue>
         </KeyValue>
      </KeyInfo>

      <!--
           The list of resources to sign (note that the canonical
           form of XML documents is signed, while the binary form
           of all other resources is used)
      -->
      <Object>
         <Manifest
             Id="AsYouLikeIt">
            <Reference
                URI="EPUB/As_You_Like_It.opf">
               <Transforms>
                  <Transform
                      Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
               </Transforms>
               <DigestMethod
                   Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
               <DigestValue>
               </DigestValue>
            </Reference>

            <Reference URI="EPUB/book.html">
               <Transforms>
                  <Transform
                      Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
               </Transforms>
               <DigestMethod
                   Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
               <DigestValue>
               </DigestValue>
            </Reference>

            <Reference
                URI="EPUB/images/cover.png">
               <DigestMethod
                   Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
               <DigestValue>
               </DigestValue>
            </Reference>
         </Manifest>
      </Object>
   </Signature>
</signatures>

META-INF/encryption.xml 文件的内容

<?xml version="1.0"?>
<encryption
    xmlns="urn:oasis:names:tc:opendocument:xmlns:container"
    xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#">

   <!--
        The RSA-encrypted AES-128 symmetric key used to encrypt
        data enumerated in EncryptedData blocks below
   -->
   <enc:EncryptedKey
       Id="EK">
      <enc:EncryptionMethod
          Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
      <ds:KeyInfo>
         <ds:KeyName>
            John Smith
         </ds:KeyName>
      </ds:KeyInfo>
      <enc:CipherData>
         <enc:CipherValue>
            xyzabc…
         </enc:CipherValue>
      </enc:CipherData>
   </enc:EncryptedKey>

   <!--
        Each EncryptedData block identifies a single resource
        that has been encrypted using the AES-128 algorithm.
        The data remains stored, in its encrypted form, in the
        original file within the container.
   -->
   <enc:EncryptedData Id="ED1">
      <enc:EncryptionMethod
          Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/>
      <ds:KeyInfo>
         <ds:RetrievalMethod
             URI="#EK"
             Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
      </ds:KeyInfo>
      <enc:CipherData>
         <enc:CipherReference
             URI="EPUB/book.html"/>
      </enc:CipherData>
   </enc:EncryptedData>

   <enc:EncryptedData Id="ED2">
      <enc:EncryptionMethod
          Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/>
      <ds:KeyInfo>
         <ds:RetrievalMethod
             URI="#EK" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
      </ds:KeyInfo>
      <enc:CipherData>
         <enc:CipherReference
             URI="EPUB/images/cover.png"/>
      </enc:CipherData>
   </enc:EncryptedData>
</encryption>

EPUB/As_You_Like_It.opf 文件的内容

<?xml version="1.0"?>
<package
    version="3.0"
    xml:lang="en"
    xmlns="http://www.idpf.org/2007/opf"
    unique-identifier="pub-id">

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

      <dc:identifier
          id="pub-id">
         urn:uuid:B9B412F2-CAAD-4A44-B91F-A375068478A0
      </dc:identifier>

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

      <dc:title>
         As You Like It
      </dc:title>

      <dc:creator
          id="creator">
         William Shakespeare
      </dc:creator>

      <meta
          property="dcterms:modified">
         2000-03-24T00:00:00Z
      </meta>

      <dc:publisher>
         Project Gutenberg
      </dc:publisher>

      <dc:date>
         2000-03-24
      </dc:date>

      <meta
          property="dcterms:dateCopyrighted">
         9999-01-01
      </meta>

      <dc:identifier
          id="isbn13">
         urn:isbn:9780741014559
      </dc:identifier>

      <dc:identifier
          id="isbn10">
         0-7410-1455-6
      </dc:identifier>

      <link
          rel="xml-signature"
          href="../META-INF/signatures.xml#AsYouLikeItSignature"/>
   </metadata>

   <manifest>
      <item id="r4915"
          href="book.html"
          media-type="application/xhtml+xml"/>
      <item id="r7184"
          href="images/cover.png"
          media-type="image/png"/>
      <item id="nav"
          href="nav.html"
          media-type="application/xhtml+xml"
          properties="nav"/>
   </manifest>

   <spine>
      <itemref
          idref="r4915"/>
   </spine>
</package>

H.4 时钟值

以下是允许的时钟值示例:

I. 媒体类型注册

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

本附录为 EPUB 包文档注册媒体类型 application/oebps-package+xml。 此注册取代 RFC4839(见 https://www.rfc-editor.org/rfc/rfc4839)。

包文档是描述 EPUB 出版物的 XML 文件。它标识 EPUB 出版物中的资源 并提供元数据信息。包文档及其相关规范由 World Wide Web ConsortiumW3C)维护和定义。

MIME 媒体类型名称:

application

MIME 子类型名称:

oebps-package+xml

必需参数:

无。

可选参数:

无。

编码注意事项:

若为 UTF-8,则为 8bit;若为 UTF-16,则为 binary。

包文档为 XML,以 UTF-8 或 UTF-16 表示。当包 文档以 UTF-8 编写时,该文件与 8bit 兼容。当以 UTF-16 编写时, 必须使用 binary content-transfer-encoding。更多详情请参阅 [rfc7303]。

安全注意事项:

包文档包含符合 XML 1.0 规范的格式良好的 XML。

显然,可以创作恶意文件,例如包含格式错误数据的文件。 大多数 XML 解析器会通过严格执行一致性来保护自身免受此类攻击。

所有读取包文档的处理器都应严格检查所检索数据的大小和有效性。

EPUB 3 规范目前没有在包文档格式内进行加密、签名或 身份验证的规定。

互操作性注意事项:

无。

已发布的规范:

此媒体类型注册适用于 EPUB 包文档,如位于 https://www.w3.org/TR/epub-33/ 的 EPUB 3 规范所述。

EPUB 3 规范取代 Open Packaging Format 2.0.1 规范,该规范位于 https://idpf.org/epub/20/spec/OPF_2.0.1_draft.htm, 且也使用 application/oepbs-package+xml 媒体 类型。

使用此媒体类型的应用:

此媒体类型广泛用于 EPUB 格式电子书的分发。

附加信息:
魔数:

文件扩展名:

.opf

Macintosh 文件类型代码:

TEXT

片段标识符:

EPUB 规范片段标识符是为 EPUB 出版物定义的自定义片段标识符。它们可用于 引用为该出版物定义的任何 出版物资源中的任意内容。这些标识符定义 于 https://idpf.org/epub/linking/cfi/

可联系以获取更多信息的人员和电子邮件地址:

EPUB 3 Working Group (public-epub-wg@w3.org)

预期用途:

COMMON

作者/变更控制者:

World Wide Web Consortium(W3C

I.2 application/epub+zip 媒体类型

本附录为 EPUB Open Container Format (OCF) 注册媒体类型 application/epub+zip

OCF ZIP 容器,或 EPUB 容器文件,是一种基于 zip 归档 格式的容器技术(见 https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT)。 它用于封装 EPUB 出版物。OCF 及其相关标准由 World Wide Web ConsortiumW3C)维护和定义。

MIME 媒体类型名称:

application

MIME 子类型名称:

epub+zip

必需参数:

无。

可选参数:

无。

编码注意事项:

OCF ZIP 容器文件是以 application/zip 媒体类型编码的二进制文件。

安全注意事项:

所有读取 OCF ZIP 容器文件的处理器都应严格检查所检索数据的大小和 有效性。

此外,由于 OCF ZIP 容器文件中可嵌入各种内容类型, application/epub+zip 可能描述具有此处未指出的额外安全 影响的内容。不过,只有在处理器识别并处理 附加内容,或将该内容的进一步处理分派给其他处理器的情况下, 才可能出现安全问题。在这种情况下, 安全事项将超出本注册文档的范围。

适用于 application/zip 的安全注意事项也适用于 OCF ZIP 容器文件。

互操作性注意事项:

无。

已发布的规范:

此媒体类型注册适用于 EPUB Open Container Format (OCF),如位于 https://www.w3.org/TR/epub-33/ 的 EPUB 3 规范所述。

EPUB 3 规范取代 RFC 4839 和 Open Container Format 2.0.1 规范,后者位于 https://idpf.org/epub/20/spec/OCF_2.0.1_draft.doc, 并且也 使用 application/epub+zip 媒体类型。

使用此媒体类型的应用:

此媒体类型广泛用于 EPUB 格式电子书的分发。

附加信息:
魔数:

0: PK 0x03 0x04, 30: mimetype, 38: application/epub+zip

文件扩展名:

OCF ZIP 容器文件最常以扩展名 .epub 标识。

Macintosh 文件类型代码:

ZIP

片段标识符:

EPUB 规范片段标识符是为 EPUB 出版物定义的自定义片段标识符。它们可用于 引用为该出版物定义的任何 出版物资源中的任意内容。这些标识符定义 于 https://idpf.org/epub/linking/cfi/

可联系以获取更多信息的人员和电子邮件地址:

EPUB 3 Working Group (public-epub-wg@w3.org)

预期用途:

COMMON

作者/变更控制者:

World Wide Web Consortium(W3C

J. 索引

J.1 本规范定义的术语

J.2 由引用定义的术语

K. 变更日志

本节是非规范性的。

注意,此变更日志仅标识自 EPUB 3.2 以来的实质性变更——即可能影响 EPUB 出版物一致性的变更。

有关已解决的所有议题列表,请参阅工作 组的议题跟踪器

自 2023-05-25 的推荐标准以来的实质性变更
自 2023-02-21 的候选 推荐标准以来的实质性变更
自 2022-05-12 的候选 推荐标准以来的实质性变更
EPUB 3.2 以来的实质性变更

L. 致谢

本节是非规范性的。

规范与艺术一样,都是人类的创造。没有人比 Garth Conboy 为 EPUB 做得更多,他从 1999 年最早的 OEB 1.0 一直到今天的 EPUB 3.3,每一步都参与其中。没有 Garth 的远见、知识和超乎寻常的善良,这一切 都不会发生。我们将 EPUB 3.3 献给他的记忆。 Garth,我们永远感激你。

EPUB 3 工作组的以下成员为本规范的开发作出了贡献:

M. 参考文献

M.1 规范性参考文献

[bcp47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[bidi]
Unicode Bidirectional Algorithm. Manish Goregaokar मनीष गोरेगांवकर; Robin Leroy. Unicode Consortium. 13 August 2025. Unicode Standard Annex #9. URL: https://www.unicode.org/reports/tr9/tr9-51.html
[charmod-norm]
Character Model for the World Wide Web: String Matching. Addison Phillips et al. W3C. 11 August 2021. W3C Working Group Note. URL: https://www.w3.org/TR/charmod-norm/
[css-text-3]
CSS Text Module Level 3. Elika Etemad; Koji Ishii; Florian Rivoal. W3C. 30 September 2024. CRD. URL: https://www.w3.org/TR/css-text-3/
[css-text-decor-3]
CSS Text Decoration Module Level 3. Elika Etemad; Koji Ishii. W3C. 5 May 2022. CRD. URL: https://www.w3.org/TR/css-text-decor-3/
[css-writing-modes-3]
CSS Writing Modes Level 3. Elika Etemad; Koji Ishii. W3C. 10 December 2019. W3C Recommendation. URL: https://www.w3.org/TR/css-writing-modes-3/
[css2]
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 7 June 2011. W3C Recommendation. URL: https://www.w3.org/TR/CSS2/
[csssnapshot]
CSS Snapshot. URL: https://www.w3.org/TR/CSS/
[datetime]
Date and Time Formats. Misha Wolf. W3C. 27 August 1998. W3C Working Group Note. URL: https://www.w3.org/TR/NOTE-datetime
[dcterms]
DCMI Metadata Terms. DCMI Usage Board. DCMI. 20 January 2020. DCMI Recommendation. URL: https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
[dom]
DOM Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://dom.spec.whatwg.org/
[ecmascript]
ECMAScript Language Specification. Ecma International. URL: https://tc39.es/ecma262/multipage/
[epub-a11y-11]
EPUB Accessibility 1.1. George Kerscher; Matt Garrish; Charles LaPierre; Avneesh Singh; Gregorio Pellegrino. W3C. 17 October 2024. W3C Recommendation. URL: https://www.w3.org/TR/epub-a11y-11/
[epub-rs-33]
EPUB Reading Systems 3.3. Ivan Herman; Matt Garrish; Dave Cramer. W3C. 17 October 2024. W3C Recommendation. URL: https://www.w3.org/TR/epub-rs-33/
[epub-ssv-11]
EPUB 3 Structural Semantics Vocabulary 1.1. Ivan Herman; Matt Garrish. W3C. 28 August 2025. W3C Working Group Note. URL: https://www.w3.org/TR/epub-ssv-11/
[epubcontentdocs-301]
EPUB Content Documents 3.0.1. Markus Gylling; William McCoy; Elika J. Etimad; Matt Garrish. IDPF. 26 June 2014. URL: https://idpf.org/epub/301/spec/epub-contentdocs-20140626.html
[epubpackages-32]
EPUB Packages 3.2. Matt Garrish; Dave Cramer. EPUB 3 Community Group. 08 May 2019. URL: https://www.w3.org/publishing/epub32/epub-packages.html
[epubpublications-30]
EPUB Publications 3.0. Markus Gylling; William McCoy; Matt Garrish. IDPF. 11 October 2011. URL: https://idpf.org/epub/30/spec/epub30-publications-20111011.html
[epubpublications-301]
EPUB Publications 3.0.1. Markus Gylling; William McCoy; Matt Garrish. IDPF. 26 June 2014. URL: https://idpf.org/epub/301/spec/epub-publications-20140626.html
[fips-180-4]
FIPS PUB 180-4: Secure Hash Standard (SHS). U.S. Department of Commerce/National Institute of Standards and Technology. August 2015. National Standard. URL: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
[geolocation]
Geolocation. Marcos Caceres; Reilly Grant. W3C. 29 October 2025. W3C Recommendation. URL: https://www.w3.org/TR/geolocation/
[gif]
Graphics Interchange Format. CompuServe Incorporated. 31 July 1990. URL: https://www.w3.org/Graphics/GIF/spec-gif89a.txt
[html]
HTML Standard. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 现行 标准. URL: https://html.spec.whatwg.org/multipage/
[html-rdfa]
HTML+RDFa 1.1 - Second Edition. Manu Sporny. W3C. 17 March 2015. W3C Recommendation. URL: https://www.w3.org/TR/html-rdfa/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. 现行标准. URL: https://infra.spec.whatwg.org/
[iso8601-1]
Date and time — Representations for information interchange — Part 1: Basic rules. ISO 8601-1:2019.. International Organization for Standardization (ISO). 2019. ISO 8601-1:2019. URL: https://www.iso.org/standard/70907.html
[jpeg]
JPEG File Interchange Format. Eric Hamilton. C-Cube Microsystems. Milpitas, CA, USA. September 1992. URL: https://www.w3.org/Graphics/JPEG/jfif3.pdf
[mathml3]
Mathematical Markup Language (MathML) Version 3.0 2nd Edition. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 10 April 2014. W3C Recommendation. URL: https://www.w3.org/TR/MathML3/
[mp3]
Information technology — Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s — Part 3: Audio. ISO/IEC. August 1993. Published. URL: https://www.iso.org/standard/22412.html
[mp4]
Information technology — Coding of audio-visual objects — Part 14: MP4 file format. ISO/IEC. January 2020. Published. URL: https://www.iso.org/standard/79110.html
[mpeg4-audio]
Information technology — Coding of audio-visual objects — Part 3: Audio. ISO/IEC. December 2019. Published. URL: https://www.iso.org/standard/76383.html
[onix]
ONIX for Books 3.0. URL: https://www.editeur.org/8/ONIX/
[opentype]
OpenType specification. Microsoft. URL: http://www.microsoft.com/typography/otspec/default.htm
[opf-201]
Open Packaging Format 2.0.1. IDPF. 04 September 2010. URL: https://idpf.org/epub/20/spec/OPF_2.0.1_draft.htm
[png]
Portable Network Graphics (PNG) Specification (Third Edition). Chris Lilley; Leonard Rosenthol; Pierre-Anthony Lemieux; Chris Needham; Simon Thompson; Chris Seeger; Chris Blume; Cosmin Truta. W3C. 24 June 2025. W3C Recommendation. URL: https://www.w3.org/TR/png-3/
[push-api]
Push API. Marcos Caceres; Kagami Rosylight. W3C. 1 December 2025. W3C Working Draft. URL: https://www.w3.org/TR/push-api/
[rdfa-core]
RDFa Core 1.1 - Third Edition. Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman et al. W3C. 17 March 2015. W3C Recommendation. URL: https://www.w3.org/TR/rdfa-core/
[rfc2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed; N. Borenstein. IETF. November 1996. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[rfc2397]
The "data" URL scheme. L. Masinter. IETF. August 1998. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
[rfc4329]
Scripting Media Types. B. Hoehrmann. IETF. April 2006. Informational. URL: https://www.rfc-editor.org/rfc/rfc4329
[rfc7303]
XML Media Types. H. Thompson; C. Lilley. IETF. July 2014. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7303
[rfc7845]
Ogg Encapsulation for the Opus Audio Codec. T. Terriberry; R. Lee; R. Giles. IETF. April 2016. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7845
[rfc8089]
The "file" URI Scheme. M. Kerwin. IETF. February 2017. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8089
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[rfc9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[rfc9649]
WebP Image Format. J. Zern; P. Massimino; J. Alakuijala. IETF. November 2024. Informational. URL: https://www.rfc-editor.org/rfc/rfc9649
[smil3]
Synchronized Multimedia Integration Language (SMIL 3.0). Dick Bulterman. W3C. 1 December 2008. W3C Recommendation. URL: https://www.w3.org/TR/SMIL3/
[svg]
SVG. W3C. URL: https://www.w3.org/TR/SVG/
[truetype]
TrueType™ Reference Manual. Apple, Inc. URL: https://developer.apple.com/fonts/TrueType-Reference-Manual/
[uax15]
Unicode Normalization Forms. Ken Whistler. Unicode Consortium. 30 July 2025. Unicode Standard Annex #15. URL: https://www.unicode.org/reports/tr15/tr15-57.html
[unicode]
The Unicode Standard. Unicode Consortium. URL: https://www.unicode.org/versions/latest/
[url]
URL Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://url.spec.whatwg.org/
[us-ascii]
"Coded Character Set - 7-bit American Standard Code for Information Interchange", ANSI X3.4, 1986..
[wai-aria]
Accessible Rich Internet Applications (WAI-ARIA). W3C. URL: https://www.w3.org/TR/wai-aria/
[woff]
WOFF File Format 1.0. Jonathan Kew; Tal Leming; Erik van Blokland. W3C. 13 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/WOFF/
[woff2]
WOFF File Format 2.0. Vladimir Levantovsky. W3C. 8 August 2024. W3C Recommendation. URL: https://www.w3.org/TR/WOFF2/
[xinclude]
XML Inclusions (XInclude) Version 1.0 (Second Edition). Jonathan Marsh; David Orchard; Daniel Veillard. W3C. 15 November 2006. W3C Recommendation. URL: https://www.w3.org/TR/xinclude/
[xml]
Extensible Markup Language (XML) 1.0 (Fifth Edition). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau et al. W3C. 26 November 2008. W3C Recommendation. URL: https://www.w3.org/TR/xml/
[xml-names]
Namespaces in XML 1.0 (Third Edition). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. W3C. 8 December 2009. W3C Recommendation. URL: https://www.w3.org/TR/xml-names/
[xmldsig-core]
XML Signature Syntax and Processing (Second Edition). Donald Eastlake; Joseph Reagle; David Solo; Frederick Hirsch; Thomas Roessler et al. W3C. 10 June 2008. W3C Recommendation. URL: https://www.w3.org/TR/xmldsig-core/
[xmldsig-core1]
XML Signature Syntax and Processing Version 1.1. Donald Eastlake; Joseph Reagle; David Solo; Frederick Hirsch; Magnus Nyström; Thomas Roessler; Kelvin Yiu. W3C. 11 April 2013. W3C Recommendation. URL: https://www.w3.org/TR/xmldsig-core1/
[xmlenc-core1]
XML Encryption Syntax and Processing Version 1.1. Donald Eastlake; Joseph Reagle; Frederick Hirsch; Thomas Roessler. W3C. 11 April 2013. W3C Recommendation. URL: https://www.w3.org/TR/xmlenc-core1/
[xmlenc-decrypt]
Decryption Transform for XML Signature. Merlin Hughes; Takeshi Imamura; Hiroshi Maruyama. W3C. 10 December 2002. W3C Recommendation. URL: https://www.w3.org/TR/xmlenc-decrypt/
[xmlschema-2]
XML Schema Part 2: Datatypes Second Edition. Paul V. Biron; Ashok Malhotra. W3C. 28 October 2004. W3C Recommendation. URL: https://www.w3.org/TR/xmlschema-2/
[zip]
.ZIP File Format Specification. 15 July 2020. Final. URL: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

M.2 资料性参考文献

[audiobooks]
Audiobooks. Wendy Reid; Matt Garrish. W3C. 10 November 2020. W3C Recommendation. URL: https://www.w3.org/TR/audiobooks/
[css-viewport-1]
CSS Viewport Module Level 1. W3C. URL: https://drafts.csswg.org/css-viewport/
[dpub-aria]
Digital Publishing WAI-ARIA Module. W3C. URL: https://www.w3.org/TR/dpub-aria/
[epub-a11y-tech-11]
EPUB Accessibility Techniques 1.1. Matt Garrish; George Kerscher; Charles LaPierre; Gregorio Pellegrino; Avneesh Singh. W3C. 13 March 2025. W3C Working Group Note. URL: https://www.w3.org/TR/epub-a11y-tech-11/
[epub-multi-rend-11]
EPUB 3 Multiple-Rendition Publications 1.1. Matt Garrish. W3C. 28 August 2025. W3C Working Group Note. URL: https://www.w3.org/TR/epub-multi-rend-11/
[epub-overview-33]
EPUB 3 Overview. Matt Garrish; Ivan Herman. W3C. 13 March 2025. W3C Working Group Note. URL: https://www.w3.org/TR/epub-overview-33/
[epub-tts-10]
EPUB 3 Text-to-Speech Enhancements 1.0. Matt Garrish. W3C. 28 August 2025. W3C Working Group Note. URL: https://www.w3.org/TR/epub-tts-10/
[fetch]
Fetch Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://fetch.spec.whatwg.org/
[h264]
H.264 : Advanced video coding for generic audiovisual services. 2017-04-13. URL: https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=13189
[international-specs]
Internationalization Best Practices for Spec Developers. Richard Ishida; Addison Phillips. W3C. 8 August 2025. W3C Working Group Note. URL: https://www.w3.org/TR/international-specs/
[iso22424]
ISO/IEC TS 22424-1:2020 — Digital publishing — EPUB3 preservation. 2020-01. URL: https://www.iso.org/standard/73163.html
[isoschematron]
ISO/IEC 19757-3: Rule-based validation — Schematron. 2006-06-01. URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/c040833_ISO_IEC_19757-3_2006(E).zip
[json-ld11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 16 July 2020. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11/
[mediaqueries-3]
Media Queries Level 3. Florian Rivoal. W3C. 21 May 2024. W3C Recommendation. URL: https://www.w3.org/TR/mediaqueries-3/
[nvdl]
ISO/IEC 19757-4: NVDL (Namespace-based Validation Dispatching Language). 2006-06-01. URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/c038615_ISO_IEC_19757-4_2006(E).zip
[odf]
Open Document Format for Office Applications (OpenDocument) v1.0. 1 May 2005. URL: https://www.oasis-open.org/committees/download.php/12572/OpenDocument-v1.0-os.pdf
[relaxng-schema]
Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG. ISO/IEC. 2008. URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip
[rfc3986]
Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. January 2005. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3986
[rfc4839]
Media Type Registrations for the Open eBook Publication Structure (OEBPS) Package File (OPF). G. Conboy; J. Rivlin; J. Ferraiolo. IETF. April 2007. Informational. URL: https://www.rfc-editor.org/rfc/rfc4839
[rfc6386]
VP8 Data Format and Decoding Guide. J. Bankoski; J. Koleszar; L. Quillio; J. Salonen; P. Wilkins; Y. Xu. IETF. November 2011. Informational. URL: https://www.rfc-editor.org/rfc/rfc6386
[rfc8141]
Uniform Resource Names (URNs). P. Saint-Andre; J. Klensin. IETF. April 2017. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8141
[uaag20]
User Agent Accessibility Guidelines (UAAG) 2.0. James Allan; Greg Lowney; Kimberly Patch; Jeanne F Spellman. W3C. 15 December 2015. W3C Working Group Note. URL: https://www.w3.org/TR/UAAG20/
[uax44]
Unicode Character Database. Ken Whistler. Unicode Consortium. 27 August 2025. Unicode Standard Annex #44. URL: https://www.unicode.org/reports/tr44/tr44-36.html
[wcag2]
Web Content Accessibility Guidelines (WCAG) 2. W3C. URL: https://www.w3.org/TR/WCAG2/
[webvtt]
WebVTT: The Web Video Text Tracks Format. Silvia Pfeiffer. W3C. 4 April 2019. W3C Candidate Recommendation. URL: https://www.w3.org/TR/webvtt1/
[xhr]
XMLHttpRequest Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://xhr.spec.whatwg.org/
[xmlbase]
XML Base (Second Edition). Jonathan Marsh; Richard Tobin. W3C. 28 January 2009. W3C Recommendation. URL: https://www.w3.org/TR/xmlbase/
[xmlsec-rngschema-20130411]
XML Security RELAX NG Schemas. Murata Makoto; Frederick Hirsch. W3C. 11 April 2013. W3C Working Group Note. URL: https://www.w3.org/TR/2013/NOTE-xmlsec-rngschema-20130411/