EPUB 3.4

W3C 工作草案

关于本文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/WD-epub-34-20260623/
最新发布版本:
https://www.w3.org/TR/epub-34/
最新编辑草案:
https://w3c.github.io/epub-specs/epub34/authoring/
历史:
https://www.w3.org/standards/history/epub-34/
提交历史
测试套件:
https://w3c.github.io/epub-tests/index.html
实现报告:
https://w3c.github.io/epub-specs/epub34/reports/
编辑:
Matt Garrish (DAISY Consortium)
Ivan Herman (W3C)
前编辑:
Dave Cramer (W3C 受邀专家)
反馈:
GitHub w3c/epub-specs (拉取请求, 新建议题, 开放议题)
public-pm-wg@w3.org 主题行请写为 [epub-34] … 消息主题 …归档

摘要

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

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

本文档状态

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

本文档由 Publishing Maintenance Working Group 作为 工作草案发布,并使用 推荐 标准轨道

作为 工作草案发布并不意味着 获得 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-34] 提供了 EPUB 3 的一般性介绍。与上一版本相比的技术变更列表也 可在 变更日志中获得。

1.2 组织结构

本节为非规范性内容。

本节通过其定义的核心产品: EPUB 出版物,回顾本规范的组织结构。

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

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

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

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

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

EPUB 出版物的实际内容 — 即用户开始阅读时呈现给他们的内容 — 构建于开放 Web 平台,并有两种形式:XHTML 和 SVG。称为 EPUB 内容文档的这些文档通常 引用许多额外资源,以实现其 正确呈现,例如图像、音频和视频片段、脚本以及样式表。

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

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

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

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

有关阅读系统的处理要求,请参阅 [epub-rs-34]。虽然创建 EPUB 出版物并不 需要阅读该文档,但了解阅读系统如何 呈现内容有助于制作面向用户实现最佳呈现的出版物。

1.3 与其他 规范的关系

本节为非规范性内容。

注意

EPUB 3 所构建于其上的技术正在不断演进。有些通常被称为 “现行”或“常青”标准,可能每天都会变化,其对 EPUB 出版物有效性的影响是即时的。其他标准更新频率较低,其变更可能要等到 EPUB 3 进行新的修订后才会影响 EPUB 出版物

在所有情况下,以前有效的特性都有可能变得过时(例如,由于 缺乏支持或因为安全问题)。新特性也可能在 阅读系统中广泛支持之前就已经可用。

因此,建议只使用获得广泛支持的特性,并保持 EPUB 符合性检查器为最新状态。

1.3.1 与 HTML 的关系

[html] 标准持续演进 — 不再有 带版本号的发布。 该标准反过来会引用各种同样持续演进的技术,例如 MathML、SVG、CSS 和 JavaScript。

这种方法的好处是 EPUB 3 始终与 Web 保持同步,但这也意味着 本规范不会跟踪 HTML 及其所引用技术的变更。必须 分别监控这些标准,以确保创作流程保持 最新。

[html] 标准定义了一个单一内容模型,并提供 使用 HTML 语法XML 语法表达标签集的规则。但是,EPUB 3 仅允许 使用 XML 语法创作内容文档,这些文档称为 XHTML 内容文档

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

此外,本规范定义了一组扩展, 可包含在 XHTML 内容 文档中,用以扩展 [html] 文档模型。

1.3.2 与 SVG 的关系

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

这种方法的好处是 EPUB 3 始终与 SVG 标准保持同步,但 这也意味着本规范不会跟踪 SVG 的变更。必须 分别监控 SVG 标准,以确保创作流程保持最新。

1.3.3 与 CSS 的关系

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

1.3.4 与 MathML 的关系

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

1.3.5 与 SMIL 的关系

本规范依赖 [smil3] 的一个子集, 9.3.2.2 媒体叠加文档定义中定义的媒体叠加元素和 属性即由此派生。

1.3.6 与 URL 的关系

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

1.4 术语

本规范定义了以下 EPUB 3 专用术语。

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

codec

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

container resource

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

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

container root URL

表示 URL [url] 的 根目录, 该根目录表示 OCF 抽象容器。 尽管容器根 URL 是 实现专用的,其属性在 4.2.5 OCF 抽象容器中的 URL中定义。

content URL

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

core media type resource

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

“core media type resource”这一称谓仅在资源用于 EPUB 内容文档外来内容文档的呈现时适用。例如,核心媒体类型 资源不能在 书脊中使用而不提供回退, 除非它同时具有 EPUB 内容文档的媒体类型。

EPUB conformance checker

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

EPUB container
OCF ZIP container

4.3 OCF ZIP 容器中定义的、用于 EPUB 出版物的基于 ZIP 的打包和分发格式。

EPUB container 和 OCF ZIP container 是同义词。

EPUB content document

书脊清单回退链引用的 出版资源, 且符合 XHTMLSVG 内容文档定义之一。

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

EPUB 出版物可以从书脊引用 EPUB 内容文档,而无需提供 回退

EPUB manifest(或 manifest)

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

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

EPUB navigation document

XHTML 内容文档的一种特化, 包含可供人类和机器读取的 全局导航信息。EPUB 导航文档符合 8. EPUB 导航 文档中表达的约束。

EPUB publication

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

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

EPUB reading system(或 reading system)

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

EPUB spine(或 spine)

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

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

exempt resource

豁免资源是一类特殊的 出版资源,它们不要求 回退,并且阅读系统不必 支持其呈现。

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

file name

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

file path

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

fixed-layout document

具有固定尺寸并从 书脊直接引用的 EPUB 内容文档。 固定布局文档以 预分页滚动 布局显示。

foreign content document

书脊 itemref 元素引用的任何 出版资源,或 清单回退链中不是 EPUB 内容文档的资源。

当外来内容文档从书脊 itemref 元素引用时,它 要求有一条清单回退链,其中至少包含一个 EPUB 内容文档。

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

foreign resource

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

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

Foreign resource 和 foreign content document 不是可互换的术语。资源在书脊中使用时被视为外来的 类型范围,大于在 EPUB 内容 文档中使用时被视为外来的资源类型范围。

linked resource

仅从 包 文档 link 元素引用的资源(即未 同时用于 EPUB 出版物的呈现)。

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

media overlay document

一种 XML 文档,它将 XHTML 内容文档与预录音频 叙述相关联,以提供同步播放体验,如 9.3 媒体叠加所定义。

non-codec

Non-codec 指因其内部数据结构性质而受益于压缩的内容类型, 例如基于字符串的文件格式(例如 HTML、 CSS 等)。

OCF abstract container

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

package document

一种 出版资源,描述 EPUB 出版物的呈现,如 5. 包 文档所定义。包文档承载关于 EPUB 出版物的元信息, 提供资源清单,并定义默认阅读 顺序。

publication resource

包含内容或说明、并有助于 EPUB 出版物的逻辑和呈现的资源。如果缺少该资源, 阅读系统可能无法 按预期呈现 EPUB 出版物。出版资源示例包括 包文档EPUB 内容文档、CSS 样式表、 音频、视频、图像、 嵌入字体和脚本。

包文档 清单 必须包含通常必须打包在 EPUB 容器中的所有出版 资源的列表(例外是 3.6 资源位置中列出的资源可以位于 EPUB 容器之外)。

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

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

remote resource

位于 EPUB 容器之外、通常位于 Web 上的 出版资源

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

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

root directory

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

scripted content document

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

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

SVG content document

符合 7.2 SVG 内容文档中表达的约束的 EPUB 内容文档

synthetic spread

在设备屏幕上同时呈现两个相邻页面。

top-level content document

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

XHTML content document

符合 7.1 XHTML 内容文档中定义的 [html] 配置文件的 EPUB 内容文档

XHTML 内容文档使用 XML 语法 [html] 表达。

虽然 [html] 标准不再将 XML 语法称为“XHTML”,但在 EPUB 3.0 制定时,名称 XHTML 仍然在使用。“XHTML content document”这一名称也用于 EPUB 2,因此保持不变是为了帮助 平稳过渡到新格式。与 EPUB 2 不同,本文档中的 XHTML 并不指 [xhtml11], 后者已于 2018 年正式被取代。

unique identifier

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

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

viewport

EPUB 阅读系统中用于将 EPUB 出版物以视觉方式呈现给用户的 区域。

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 符合性检查器来 验证内容符合性。

EPUBCheck 是出版业实际使用的 EPUB 符合性 检查器,并且随 EPUB 的每个新版本更新。它 集成在许多创作工具中,也可通过替代接口和 其他语言使用(更多信息,请参阅其 Apps and Tools 页面)。

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

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

EPUB 出版物的供应商、分销商和其他零售商,在依据 EPUB 符合性检查器 零问题结果接受或拒绝内容之前,需要考虑推荐做法的重要性。 EPUB 出版物在所有情况下无法 遵守推荐做法,可能存在正当理由。

3. 出版资源

3.1 引言

本节为非规范性内容。

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

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

这三个平面是:

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

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

请参阅 A.1 资源,其中有一个详细示例说明 资源如何适配到不同平面中。

3.1.1 清单平面

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

这一组中的主要资源被称为 出版资源,也就是用于向用户呈现 EPUB 出版物的所有 资源。 manifest 元素必须 包含这些资源的完整列表。

出版资源会根据其在 书脊平面内容 平面中的用途进一步分类。

清单平面还包含一组 链接 资源。这些资源与 直接呈现关系较为间接。例如,它们包括元数据记录以及指向外部内容的链接 (例如购买 EPUB 出版物的位置)。

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

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

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

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

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

3.1.2 书脊平面

spine plane 定义 由 书脊建立的 默认阅读顺序中使用的资源,其中 包括线性和非线性内容。书脊会指示 阅读系统在用户浏览 EPUB 出版物时如何加载这些资源。虽然许多 资源可以打包在 EPUB 容器中,但并非所有资源 都默认允许在书脊中使用。

EPUB 3 定义了一类特殊资源,称为 EPUB 内容文档,可不受限制地用于 书脊。EPUB 内容文档包括 XHTML 内容文档SVG 内容文档

在书脊中使用任何其他类型的资源,包括 核心媒体类型资源,都 称为 外来内容文档。 外来内容文档需要 清单回退到 EPUB 内容文档。在这个 模型中,外来内容文档的 清单条目必须包含一个 fallback 属性,指向阅读系统在不支持其格式时要尝试的下一个 可能资源。虽然并不常见,但回退资源可以指定另一个回退,从而形成许多资源 深度的链。唯一要求是在 清单回退链中必须至少有一个 EPUB 内容文档。

虽然回退链中的所有资源并未直接列在书脊中, 但它们都被视为书脊的一部分,并由此视为书脊平面的一部分,因为阅读系统 可以使用其中任何资源。

这种可扩展性模型允许对格式进行实验,同时确保阅读系统 总能呈现一些可供用户阅读的内容,因为不能保证 支持外来内容文档。

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

注意

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

可以为 EPUB 内容文档提供清单回退,但这并不 常见,也不是一项要求。例如,脚本化内容文档可以为 不支持脚本的阅读系统回退 到无脚本替代内容。

3.1.3 内容平面

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

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

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

核心媒体类型资源的反面是外来资源。这些资源是阅读 系统不保证支持其呈现的资源。因此,类似于在书脊中使用 外来内容文档需要回退以确保其呈现,在 内容文档中使用外来资源也需要回退。这些回退通过 宿主格式的能力提供。例如,许多 HTML 元素具有内在的 回退能力。其中一个示例是 picture 元素 [html],它允许 指定多种替代图像格式。

有关外来资源的更多信息,请参阅 3.3 外来资源

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

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

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

核心媒体类型资源常见的一个混淆点,是 XHTML 和 SVG 被列为核心媒体类型资源,同时要求标记符合其 相应的 EPUB 内容文档定义。这一共同定义确保 无论 XHTML 和 SVG 文档是列在书脊中,还是嵌入其他 EPUB 内容文档中,它们都有相同的创作和阅读系统 支持要求。

实际上,这意味着 XHTML 和 SVG 核心媒体类型资源可以在书脊中使用, 不需要任何修改或回退,因为它们同时也是符合要求的 XHTML 和 SVG 内容 文档。但这是一个特殊情况 — 所有其他核心媒体类型资源在 用于书脊时都会成为 外来内容文档(即,外来内容文档包括 除 XHTML 和 SVG 外的所有外来资源和所有核心媒体类型资源)。

3.2 核心媒体类型

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

只有 XHTML 内容文档SVG 内容文档可以在没有 清单回退的情况下从书脊引用。所有其他核心媒体类型 资源如果直接从 书脊引用,MUST 包含清单回退。 在这种情况下,它们是 外来内容文档

表中的列表示以下信息:

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

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

注意

工作组通常只有在格式获得 Web 浏览器核心 — 即 EPUB 3 阅读系统所构建于其上的 呈现引擎 — 广泛支持时,才会将其作为核心媒体类型资源包含, 因为到了这个阶段,它们可被依赖用于最新阅读系统中的呈现。 然而,作者必须注意,较新的格式 — 在 EPUB 3.0 之后引入,见 表格最后一列 — 可能不受某些阅读系统支持,例如 依赖自有呈现引擎或最近没有更新的阅读系统。

3.3 外来资源

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

外来资源 MUST 提供回退。回退通常 使用宿主格式的内在回退机制提供(例如,[html] 元素通常 提供引用多个媒体类型或在某个 媒体类型无法呈现时显示替代嵌入消息的能力)。

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

3.5.2 内在 回退也提供了关于如何解释特定元素回退的更多信息。

虽然过时的 内容回退 特性可用于 为外来资源提供回退,但强烈不建议使用。

3.4 豁免资源

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

在某些情况下,本节定义的豁免与现有核心媒体类型 资源如何包含在 EPUB 内容文档中存在重叠(例如, 使用 [html] link 元素包含 CSS 样式表, 在 CSS 中导入字体,或使用 [html] script 元素处理 JavaScript)。虽然这 从表面上看使这些资源在不要求回退方面相似,但核心媒体类型因 对阅读系统有更强的支持预期而有所区别。核心媒体类型 资源不会仅仅因为它们共享相同的包含机制而成为豁免资源。 如果没有豁免,豁免资源本会成为 外来 资源

豁免资源仅有少量特殊情况。例如,视频不要求 回退,因为目前尚未就核心媒体类型视频格式达成共识(即 没有可回退的格式)。类似地,音频和视频轨道为可访问性 目的而豁免,因此可以使用阅读系统支持最好的任何格式。

以下列表详细说明内容专用豁免资源的情况,包括 它们可使用位置的任何限制。

字体

字体资源是豁免资源。

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

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

脚本

[html] 允许 script 元素引用的任何资源都是豁免资源。

轨道

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

视频

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

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

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

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

该豁免允许在 EPUB 容器 中包含不供 EPUB 阅读系统使用的资源,例如:

从 CSS 样式表中 url 函数 [css-values] 引用的外来图像资源,是一个 未被 此规则豁免的资源示例,因为它会导致非核心媒体类型格式被显示。

该豁免还允许在外来内容文档中使用外来资源,而无需阅读 系统或 EPUB 符合性检查器理解这些 资源的回退能力(即,外来内容文档的回退要求已经涵盖其中的任何 呈现问题)。由于该资源未从 EPUB 内容文档引用,它 自动豁免于回退要求。

3.5 资源回退

3.5.1 清单回退

清单回退是 包 文档的一项特性,它创建一个替代 资源的 manifest fallback chain阅读系统可用它代替 顶级内容 文档,从而在 书脊中的默认资源不受支持时选择一种可呈现的格式。

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

外来内容文档 MUST 指定一条回退链,该回退链 MUST 至少包含一个 EPUB 内容文档,以确保阅读 系统始终可以呈现 书脊项。

EPUB 内容文档 MAY 指定回退。例如,为 脚本化内容提供回退

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

清单回退链 MUST NOT 包含自引用或对链中 item 元素的循环 引用。

3.5.2 内在回退

以下各节对 [html] 中特定元素的内在回退要求 提供说明。

3.5.2.1 HTML audiovideo 回退

嵌入在 audiovideo 元素中的 [html流内容,不算作 外来资源的 内在回退。只有子级 source 元素 [html] 才提供内在回退能力。

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

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

3.5.2.2 HTML img 回退

为了提供替代格式回退,[html] img 元素可用作 picture 元素的子元素,前提是 以下条件成立:

img 不是 picture 的子元素时,其 srcsrcset 属性 MUST NOT 用于为外来 资源提供回退。

3.5.2.3 HTML script 元素

虽然数据块具有与其所包含的 XHTML 内容文档不同的 MIME 媒体类型 [rfc2046], 但由于 [html] script 元素没有指定此类机制,因此无法提供内在回退。

但是,由于 script 元素不表示用户内容 — 数据块除非由脚本操作,否则不会被呈现, 而脚本呈现的内容已有 核心 媒体类型要求 — 因此要求原始数据提供回退并无 实用意义。

因此,数据块豁免于回退要求,以允许脚本使用它们。

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

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

3.6 资源位置

以下类型的 出版资源 MAY 托管在 EPUB 容器之外:

所有其他资源 MUST 存储在 EPUB 容器内。

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

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

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

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

3.7 Data URLs

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

Data URLs MUST NOT 用于以下场景,因为它们会导致 顶级内容文档顶级浏览上下文 [html]:

这些对 data URLs 使用的限制,是为了防止安全问题,同时确保 阅读系统能够确定接下来要带用户去哪里 (即,因为 data URLs 不能从 书脊引用)。

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

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

3.8 File URLs

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

在可在不同主机之间传输的 EPUB 出版物中使用 file URL, 既存在安全风险,也不具备互操作性。因此,file URLs MUST NOT 用于 EPUB 出版物。

3.9 XML 符合性

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

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

建议避免使用 XML base 属性 [xmlbase],因为 [html] 和 [svg] 正在移除对它的支持。

4. 开放容器格式 (OCF)

4.1 引言

本节为非规范性内容。

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

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

OCF 还保留了一种用于过时的嵌入 字体混淆算法,但不再建议使用此功能。

4.2 OCF 抽象容器

4.2.1 引言

本节为非规范性内容。

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

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

container.xml [required]

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

signatures.xml [optional]

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

encryption.xml [optional]

包含有关出版资源加密的信息。使用过时的字体混淆 功能时,此文件是强制性的。

metadata.xml [optional]

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

rights.xml [optional]

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

manifest.xml [optional]

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 列在清单中。

OCF 抽象容器内的所有其他文件 MAY 存储在 根目录后代中的任何 位置,前提是它们不在 META-INF 目录内。EPUB 出版物 MUST NOT 包含对 META-INF 目录中文件的引用。

一些阅读系统不提供对 包文档所在目录之外资源的访问,即使这并不是 [epub-rs-34] 中定义的限制。为避免与这些阅读系统出现互操作性 问题,建议 将所有资源放在包含包文档的目录或其下级目录中。

4.2.3 文件路径和文件名

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

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

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

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

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

    • SOLIDUS:/U+002F

    • QUOTATION MARK:"U+0022

    • ASTERISK:*U+002A

    • 作为最后一个字符的 FULL STOP:.U+002E

    • COLON::U+003A

    • LESS-THAN SIGN:<U+003C

    • GREATER-THAN SIGN:>U+003E

    • QUESTION MARK:?U+003F

    • REVERSE SOLIDUS:\U+005C

    • VERTICAL LINE:|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 Character Database [uax44] 包含一个已弃用 字符 列表。也建议避免使用这些字符,因为预计 EPUB 符合性检查器会 标记其使用。

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

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

如果 EPUB 出版物是通过动态 集成资源创建的(即 命名事先未知),请注意,自动截断文件名以使 其保持在 255 字节限制内可能导致损坏。这是由于 UTF-8 等多字节编码中字节和字符之间的差异。因此, 避免在字符中间截断非常重要。更多信息请参阅 [international-specs] 中关于“截断或 限制 字符串长度”的章节。

当内容互操作性至关重要时,应格外谨慎地命名文件。受限字符列表旨在帮助避免一些 已知问题区域,但并不确保所有其他 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],指向根目录。 尽管容器根 URL 是实现专用的,但它 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 不符合(以这三个示例作为 base 解析 URL 字符串“..”时, 将分别返回 https://localhost:12345/path/file:///path/ 和解析 错误)。阅读系统有责任为 符合上述属性的根目录分配 URL。

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

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

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

    解释

    该算法的目标是检测 url 是否可能被视为 “泄漏”到容器之外。为此,标准的 URL 解析算法会与一个 人工根 URL 一起使用;对“泄漏”的检测 是通过比较解析结果与第一个测试路径 段(A)是否存在来完成的。(请注意,为了此算法的目的,人工容器根 URL 会有意 违反必需属性,方式是使用该第一个测试 路径段。)

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

    解释

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

  3. testURLRecord 为将 URL parser 应用于 url 并使用 base 所得到的结果。
  4. testURLStringA 为将 URL Serializer 应用于 testURLRecord 所得到的结果。
  5. 容器根 URL设置为 https://b.example.org/B/

    解释

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

  6. base 设置为用于解析 urlbase URL,其定义由 使用 url 的上下文(文档或环境)决定,并根据包文档的内容 URL 确定(见 5.2 解析 包文档中的 URL)。
  7. testURLRecord 设置为将 URL parser 应用于 url 并使用 base 所得到的结果。
  8. testURLStringB 为将 URL Serializer 应用于 testURLRecord 所得到的结果。
  9. 如果 testURLStringA 不以 https://a.example.org/ 开头,或者 testURLStringB 不以 https://b.example.org/ 开头, 返回 true

    解释

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

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

    解释

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

  11. 返回 false

在 OCF 抽象容器中,任何 URL 字符串 MUSTabsolute-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 字符串 urlURL parser MUST 应用于 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 [required]
此属性 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 [required]

标识包文档的位置。

该属性的值 MUSTpath-relative-scheme-less-URL string [url]。路径 相对于根目录

media-type [required]

标识包文档的媒体类型。

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

内容模型:

如果指定了多个 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 文件 保存关于容器内容的所有加密信息。如果容器内有任何资源 被加密,则 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 元素包含 EncryptedKeyEncryptedData 类型的子元素,如 [xmlenc-core1] 所定义。

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

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

OCF 独立地加密各个文件,以牺牲部分安全性来换取更好的 性能,从而允许容器内容被增量解密。 以这种方式加密会暴露整个 包的目录结构和文件命名。

OCF 使用 XML Encryption [xmlenc-core1] 提供加密框架, 允许使用多种算法。XML Encryption 规定了 加密任意数据并以 XML 表示结果的过程。即使 OCF 抽象 容器包含非 XML 数据,也可以使用 XML Encryption 来加密 这些数据。OCF 加密仅支持对容器内整个文件进行加密, 不支持对文件的部分内容进行加密。

以下文件 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
  • 包文档

加密数据会替换 OCF 抽象容器中的未加密数据。例如, 如果名为 photo.jpeg 的图像被加密,则 photo.jpeg 资源的内容会被其加密内容替换。 ZIP 目录中的加密文件 SHOULD NOT 被 压缩。

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

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

4.2.6.3.2.2 压缩和加密的顺序

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

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

当数据流在加密前被压缩时,应提供额外的 EncryptionProperties 元数据 SHOULD 来指定初始资源的 大小(即压缩和加密之前),按照下面定义的 Compression XML 元素。当数据流未在加密前压缩时, 可以提供额外的 EncryptionProperties 元数据 MAY 来指定初始资源的大小 (即加密之前)。

元素名称:

Compression

命名空间:

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

用法:

EncryptionPropertyOPTIONAL 子元素。

属性:
Method [required]

标识所用的压缩方法。

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

OriginalLength [required]

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

值为正整数。

内容模型:

4.2.6.3.3 清单 文件(manifest.xml

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

OCF 规范不强制规定清单的格式。

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

此功能仅为与 [odf] 兼容而存在。
4.2.6.3.4 元数据 文件(metadata.xml

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

如果包含 metadata.xml 文件,它 SHOULD 只包含 命名空间限定元素 [xml-names]。该文件 SHOULD 包含 [xml] 的根元素 metadata,位于 命名空间 http://www.idpf.org/2013/metadata 中,但本规范允许 使用其他根元素以实现向后兼容。

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

4.2.6.3.5 权利管理文件(rights.xml

本规范保留 META-INF 目录中的 OPTIONAL rights.xml 文件,用于权利持有人、中介和用户之间可信交换 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 出版物或其部分。它们也可以用于 签署任何类型的数据(即不只是 XML)。

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

当未包含 signatures.xml 文件时,OCF 抽象 容器的任何部分都不会在容器级别被签名,但数字签名可能 存在于 EPUB 出版物中。

当为 OCF 抽象容器创建数据签名时, 该签名 SHOULD 作为 signatures 元素的最后一个子 Signature 元素存储。

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

OCF 抽象容器中的任何或所有文件都可以被完整签名, 但 signatures.xml 文件除外,因为该文件将 包含计算出的签名信息。

如何签署 signatures.xml 文件取决于目标:

  • 为了允许在 OCF 抽象容器中添加或删除签名而 不使其签名失效,signatures.xml 文件 SHOULD NOT 被签名。
  • 为了使任何签名的添加或删除都会使 OCF 抽象容器的签名 失效,签名者可以使用 [xmldsig-core1] 的 第 6.6.4 节 中定义的 Enveloped Signature transform 来签署整个预先存在的签名文件,但排除 正在创建的 Signature。该 transform 将签署所有先前 签名,并且如果后续签名被添加到 包中,它将变为无效。

如果希望只有移除现有签名才会使 OCF 抽象容器的签名 失效(即允许添加新 签名),可以使用 XPath transform 只签署现有 签名。此类 transform 的细节超出本 规范范围。

[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 application note [zip] 中允许 ZIP 文件 跨多个存储介质扩展或 拆分为多个文件的功能。

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

  • OCF ZIP 容器 MAY 使用 “Version 1” 中定义的 ZIP64 扩展,见 [zip] 的 第 4.3.14 节(“Zip64 end of central directory record”),并且在内容需要时 SHOULD 只使用这些扩展。

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

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

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

  • 在本地文件头表中,version needed to extract 字段 MUST 设置为 102045,以匹配给定文件所需的最高版本级别(例如, Deflate 使用 20,ZIP64 使用 45)。

  • 在本地文件头表中,compression method 字段 MUST 设置为 08

4.3.3 OCF ZIP 容器媒体类型标识

mimetype 文件 MUSTOCF ZIP 容器中的第一个文件。此外:

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

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

5. 包文档

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

5.1 引言

本节为非规范性内容。

包文档是一个XML 文档,由一组 元素组成,每个元素都封装了 EPUB 出版物某一特定方面的信息。 这些元素用于集中元数据、详细说明各个资源,并提供 其呈现所必需的阅读顺序和其他信息。

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

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

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

5.2 解析 包文档中的 URL

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

5.3 词汇关联 机制

5.3.1 引言

本节为非规范性内容。

包文档通过使用 紧凑 URL,允许元数据表达式和元数据可扩展性。 紧凑 URL 与 CURIE [rdfa-core] 非常相似,体现在它们表示 URL [url] 的方式上 — 两种表达式都由一个可选前缀 后跟一个必需的 引用组成。

前缀,无论是字面还是隐含的,都是 URL 的简写映射,该 URL 通常解析 到一个词汇,例如 Dublin Core [dcterms] 或 Schema.org [schema-org]。例如, 使用前缀 dcterms,而不是每次都必须添加完整 URL http://purl.org/dc/terms/。使用前缀能降低编写元数据时 出错的概率,同时仍保留所用词汇的唯一性。

引用是所声明的特定术语或属性。它通过 冒号与其前缀分隔。紧凑 URL 并不总是需要前缀,这是因为存在所谓的默认词汇。每个接受 紧凑 URL 的属性也定义了一个由 术语或属性组成的默认词汇。缺少前缀意味着该紧凑 URL 表示来自 默认词汇的值。

阅读系统将紧凑 URL 转换为完整 URL 时, 结果通常会解析到该 词汇中的一个片段,该片段包含关于 该术语的人类和/或机器可读信息,但这不是必需的。前缀最终只是唯一标识符,类似于 XML 命名空间 [xml-names] 的工作方式。

虽然紧凑 URL 前缀看起来很像 XML 命名空间前缀,并且两者都作为 其引用的唯一标识符,但它们的相似之处仅止于此。紧凑 URL 前缀不是使用 xmlns: 语法声明的。更多信息请参阅 5.3.4 prefix 属性

紧凑 URL 数据类型的强大之处在于其易于扩展。要纳入新的术语 和属性,只需声明一个前缀。作为 另一项便于编写的功能,本规范还为许多常用出版 词汇保留前缀(即不需要声明它们)。

包文档中有若干属性接受紧凑 URL,其中较常用的包括 meta 元素的 property 属性link 元素的 rel 属性,以及清单 item 元素的 properties 属性。 紧凑 URL 也在 EPUB 3 中超出包文档范围使用,其中 epub:type 属性使用它们在 EPUB 内容文档中表达结构语义。

以下各节提供创建和使用紧凑 URL 的更多详细信息。

5.3.2 紧凑 URL 数据类型

紧凑 URL 数据类型是一种表达 URL [url] 的紧凑方式, 由一个 OPTIONAL 前缀组成,该前缀通过冒号与引用分隔。

(EBNF 产生式 ISO/IEC 14977
所有终结符号都位于 Unicode Block 'Basic Latin'(U+0000 到 U+007F)中。
XML Schema 数据类型 [xmlschema-2] 使用 前缀 xsd:
compact URL = [ prefix , ":" ] , reference;  
prefix = ? xsd:NCName ? ;  
reference = ? path-relative-scheme-less-URL string [url] ? ; /* 如 [url] 中所定义 */

本规范从 [rdfa-core] 中定义的 CURIE 数据类型派生出紧凑 URL 数据类型。紧凑 URL 表示 CURIE 的一个子集。

与 CURIE 有两个关键区别:

  • 空的 reference 不表示有效的紧凑 URL,尽管按照 上述定义它是有效的(即,只由前缀和 冒号组成的紧凑 URL 是无效的)。

  • 空字符串不表示有效的紧凑 URL,尽管按照 上述定义它是有效的。

当紧凑 URL 值省略前缀时,指定的术语取自该属性的默认词汇

5.3.3 默认词汇

默认词汇是指当需要紧凑 URL时,其术语和 属性 MUST NOT 带有前缀的词汇。

MUST NOT 使用 prefix 属性为与这些词汇关联的 URL 分配前缀。

有关其默认词汇的更多信息,请参阅每个接受紧凑 URL 数据类型的属性定义。

5.3.4 prefix 属性

prefix 属性定义用于紧凑 URL的前缀映射。

prefix 属性的值是一个由空白分隔的列表,包含一个或多个 前缀到 URL 的映射,形式如下:

(EBNF 产生式 ISO/IEC 14977
所有终结符号都位于 Unicode Block 'Basic Latin'(U+0000 到 U+007F)中。
XML Schema 数据类型 [xmlschema-2] 使用 前缀 xsd:
prefixes = mapping , { whitespace, { whitespace } , mapping } ;  
mapping = prefix , ":" , space , { space } , ? xsd:anyURI ? ;  
prefix = ? xsd:NCName ? ;  
space = #x20 ;  
whitespace = (#x20 | #x9 | #xD | #xA) ;  

保留前缀外,文档中使用的所有前缀 MUST 被声明。prefix 属性 MUST 仅指定在相应格式的 [xml] 根元素上。

当用于包 文档时,该属性没有命名空间。

当用于 EPUB 内容文档媒体覆盖文档时,该属性 MUST 声明在命名空间 http://www.idpf.org/2007/ops 中。

虽然 prefix 属性以 [rdfa-core] 中同名的 prefix 属性为模型, 但这些属性不能互换使用。EPUB 内容 文档中没有命名空间的 prefix 属性是 RDFa 属性。

在也指定 RDFa 表达式的 EPUB 内容文档中,这两个属性同时出现很常见。

<htmlprefix="…"
        xmlns:epub="http://www.idpf.org/2007/ops"
        epub:prefix="…"></html>

请注意,对于通过包含方式嵌入的 SVG,前缀 MUST 声明在 [html] 根 html 元素上。

为避免冲突,prefix 属性 MUST NOT 用于 声明映射到默认词汇的前缀。

前缀 '_' MUST NOT 被声明,因为本规范保留此 前缀以便未来 与 RDFa [rdfa-core] 处理兼容。

为未来与包文档的替代序列化保持兼容,MUST NOT 为 Dublin Core /elements/1.1/ 命名空间 [dcterms] 声明前缀。只有 [dcterms] 元素允许出现在包文档 元数据中

5.3.5 保留前缀

注意

虽然保留前缀便于编写,但它们可能导致问题。例如,供应商 通常会在更新其EPUB 符合性检查器之前拒绝新的前缀。 建议声明所有前缀以避免任何问题。

保留前缀 MAY 用于期望紧凑 URL的属性,而无需在 prefix 属性中声明它们。

保留前缀 SHOULD NOTprefix 属性中被覆盖。

可以使用哪些保留前缀取决于上下文:

包文档

以下前缀 MAY包文档属性中使用,而无需 声明。

前缀 URL 用法
a11y http://www.idpf.org/epub/vocab/package/a11y/# 用于声明 EPUB Accessibility 命名空间中的属性。这些通常在 EPUB Accessibility 1.2 [epub-a11y-12] 中定义。
dcterms http://purl.org/dc/terms/ 用于声明来自 Dublin Core /terms/ 命名空间 [dcterms] 的属性。
marc http://id.loc.gov/vocabulary/ 主要用于 scheme 属性,以指示创作者和贡献者角色定义在 MARC relators code list 中。可用于引用 Library of Congress 发布的其他词汇。
media http://www.idpf.org/epub/vocab/overlays/# 用于声明来自媒体覆盖 词汇的属性。
onix http://www.editeur.org/ONIX/book/codelists/current.html# 用于 scheme 属性,以标识某个值 对应的 ONIX 代码列表
rendition http://www.idpf.org/vocab/rendition/# 用于声明来自包 呈现词汇的属性。
schema http://schema.org/ 用于声明来自 Schema.org 词汇的属性。

5.4 共享属性

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

5.4.1 dir 属性

dir 属性目前没有足够的实现 经验,因为阅读系统 通常只支持一种默认 方向性用于元数据显示。

虽然它缺乏必要的阅读系统支持,但它是 EPUB 所构建内容模型 的组成部分(即用于包文档中的国际化支持)。 因此,强烈建议在包文档中设置文本值的适当方向性, 以确保一旦这种情况改善便能正确呈现。

降低此属性要求只是为了考虑 EPUB 在纳入 W3C 之前所依据的不同 流程。根据 W3C 流程开发的新功能不会 获得类似豁免。

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

允许的值为:

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

当该属性不存在或值无效时,阅读系统将假定 值为 auto

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

允许用于:collectionDublin Core 元素meta, 以及 package

工作组建议,当在 EPUB 出版物中遇到 dir 时,EPUB 符合性检查器进行提示, 但由于包含它并不违反标准,因此不要发出错误或警告。

5.4.2 href 属性

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

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

允许用于: itemlink

5.4.3 id 属性

该元素的 ID [xml], 它 MUST 在文档 范围内唯一。

允许用于:collectionDublin Core 元素itemitemreflinkmanifestmetapackage, 以及 spine

5.4.4 media-type 属性

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

允许用于: itemlink

5.4.5 properties 属性

以空格分隔的紧凑 URL列表。

有关该属性的默认 词汇,请参阅各元素的定义。

允许用于: itemitemref, 以及 link

5.4.6 refines 属性

在当前表达式与其值所标识的元素或资源之间建立关联。 该属性的值 MUSTpath-relative-scheme-less-URL string, 可选地后跟 U+0023 (#) 和一个引用所描述资源或元素的URL-fragment string

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

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

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

允许用于: linkmeta

5.4.7 xml:lang 属性

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

允许用于:collectionDublin Core 元素meta, 以及 package

5.5 package 元素

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

元素名称:

package

用法:

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

属性:
内容模型:

按此顺序:

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

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

unique-identifier 属性接受一个 IDREF [xml],该 IDREF 标识提供首选或主 标识符的 dc:identifier 元素。

prefix 属性为 本规范未保留的前缀提供声明机制。更多信息请参阅 5.3.4 prefix 属性

5.6 元数据节

5.6.1 metadata 元素

metadata 元素封装元信息。

元素名称:

metadata

用法:

packageREQUIRED 第一个子元素。

属性:

内容模型:

任意顺序:

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

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

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

包文档不提供复杂的元数据编码能力。如果需要提供更详细的 信息,则可以将元数据记录(例如,符合 [onix] 等国际 标准,或为自定义目的创建)与 EPUB 出版物关联,方式是使用 link 元素。此方法允许阅读系统以其原生形式处理 元数据,避免因转换为使用最小包文档结构而导致的潜在问题和信息损失。

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

meta 元素提供了一种通用机制,用于包含来自任何词汇的元数据属性。 虽然此机制可用于任何 元数据目的,但它通常用于包含 EPUB 规范中定义的呈现和可访问性元数据。

有关可访问性元数据 建议,请参阅 [epub-a11y-12]。

5.6.2 元数据值

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

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

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

5.6.3 Dublin Core

5.6.3.1 必需元素
5.6.3.1.1 dc:identifier 元素

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

元素名称:

dc:identifier

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:
  • id [conditionally required]

内容模型:

文本

EPUB 出版物 MUST 包含一个 dc:identifier 元素,该元素指定 一个对其自身唯一的标识符 — 其唯一标识符。此元素 MUSTpackage 元素的 unique-identifier 属性引用。

虽然唯一标识符并非静态不变,但应避免过于频繁地更改它。唯一标识符 旨在为引用和分发目的提供最大持久性。 在进行较小修订(例如更新元数据、 修复勘误或进行类似小改动)时,不要发布新的标识符。

可以指定附加标识符 MAY

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

identifier-type 属性 MAY 用于 指示 dc:identifier 元素的值符合某个 既定系统或被某个颁发机构授予。

5.6.3.1.2 dc:title 元素

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

元素名称:

dc:title

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:
内容模型:

文本

文档顺序中的第一个 dc:title 元素是 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.6.3.1.3 dc:language 元素

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

元素名称:

dc:language

命名空间:

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

用法:

metadataREQUIRED 子元素。 可重复。

属性:

id [optional]

内容模型:

文本

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

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

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

5.6.3.2 可选元素
5.6.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.6.3.2.2 dc:contributor 元素

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

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

5.6.3.2.3 dc:creator 元素

dc:creator 元素 [dcterms] 表示负责创建内容的 人、组织等的名称。role 属性 MAY 与该元素关联,以指示创作者所发挥的功能。

建议 dc:creator 元素包含创作者的名称,其形式应与 阅读系统预期向用户显示的形式一致。

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

如果 EPUB 出版物有多个创作者, 请在单独的 dc:creator 元素中分别指定。

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

次要贡献者使用 dc:contributor 元素表示。

5.6.3.2.4 dc:date 元素

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

建议日期字符串符合 [iso8601-1], 特别是 W3C Date and Time Formats [datetime] 中表达的子集,因为此类字符串既适合人类阅读, 也适合 机器读取。

可以使用 [dcterms] 词汇中可用的专门日期属性 或类似属性来表达附加日期。

EPUB 出版物 MUST NOT 包含多个 dc:date 元素。

5.6.3.2.5 dc:subject 元素

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

可以使用 authority 属性标识该元素所来源的系统或 scheme。

当标识了 scheme 时,主题代码 MUST 使用 term 属性关联到该元素。

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

dc:subject 元素和 term 属性的 只有在指定的 scheme 要求时才区分大小写。

5.6.3.2.6 dc:type 元素

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

该元素的 MAY 是任何文本字符串。

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

5.6.4 meta 元素

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

元素名称:

meta

用法:

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

属性:
内容模型:

文本

每个 meta 元素都定义一个元数据表达式。 property 属性接受一个紧凑 URL,用于定义 该表达式中 作出的陈述,而该元素的文本内容表示断言。(更多信息请参阅 5.3 词汇关联 机制。)

本规范定义了两类可以使用 meta 元素定义的 元数据表达式:

  • 主表达式是这样一种表达式,其中 meta 元素中定义的表达式确立了 EPUB 出版物的某些方面。省略 refines 属性的 meta 元素定义主 表达式。
  • 子表达式是这样一种表达式,其中 meta 元素中定义的表达式通过 refines 属性与另一个表达式或资源相关联,以增强其含义。 例如,子表达式可以通过表达媒体片段的时长来细化 媒体片段,也可以通过定义某人的角色来细化创作者或贡献者 表达式。

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

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

Meta Properties Vocabulary 是用于 property 属性的默认词汇

可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的术语 MAY

scheme 属性标识元素所获取自的系统或 scheme。 该属性的值 MUST 是一个紧凑 URL,该 URL 解析到定义该 scheme 的资源。scheme 属性没有 默认词汇(即所有值都需要前缀)。

5.6.5 最后修改日期

metadataMUST 正好包含 一个 dcterms:modified 属性 [dcterms], 其中包含最后修改日期。此属性的 MUST 是 [iso8601-1] 中符合扩展格式的完整日期和一天中时间表示:

YYYY-MM-DDThh:mm:ssZ

模式末尾的 “Z”(Zulu)时间指示符意味着最后修改日期始终以 协调世界时 (UTC) 表示。

建议每当对 EPUB 出版物进行更改时更新最后修改日期。

可以在包文档 元数据中指定附加的 dcterms:modified 属性 MAY, 但它们 MUST 具有不同的主语(即它们需要一个 引用元素或资源的 refines 属性)。

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

5.7 清单节

5.7.1 manifest 元素

manifest 元素提供用于呈现内容的出版资源的完整列表。

元素名称:

manifest

用法:

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

属性:

id [optional]

内容模型:

item [1 个或多个]

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

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

清单仅用于列出出版资源。链接资源以及用于处理 OCF 容器的特殊文件(即 META-INF 目录中的文件以及 mimetype 文件)都被限制不得纳入。

未提供完整的出版资源清单可能导致呈现问题。 阅读系统可能不会解压这些 资源,或可能出于 安全原因阻止对它们的访问。

5.7.2 item 元素

item 元素表示一个出版资源

元素名称:

item

用法:

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

属性:
内容模型:

每个 item 元素通过其 href 属性中的 URL [url] 标识一个出版资源。其值 MUSTabsolute-path-relative-scheme-less-URL string [url]。每个 URL 在解析MUSTmanifest 范围内唯一。

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

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

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

media-overlay 属性接受一个 IDREF [xml], 标识此 item 所描述资源的媒体覆盖文档。 更多信息请参阅 9.3.3.5 媒体覆盖打包

manifestitem 元素的顺序并不重要。 spine 元素提供内容文档的呈现序列。

5.7.2.1 资源属性

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

Manifest Properties Vocabularyproperties 属性的默认词汇

item 元素引用的资源匹配以下属性各自的定义时,MUST 设置这些属性:

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

MUST 使用 nav 属性将 正好一个 item 声明为 EPUB 导航 文档。

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

可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的术语 MAY

5.7.2.2 示例

5.8 书脊节

5.8.1 spine 元素

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

元素名称:

spine

用法:

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

属性:
内容模型:

itemref [1 个或多个]

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

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

所有从 EPUB 导航文档超链接到的 EPUB 和外来内容文档 也 MUST 列在 spine 中,无论 EPUB 导航文档是否 包含在 spine 中。

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

用于呈现书脊项的出版资源(例如,从 [html] 嵌入式内容引用的资源)同样不必 包含在书脊中。

page-progression-direction 属性设置内容流动的全局方向。允许的值为 ltr(从左到右)、rtl(从右到左)和 default。 指定 default 值时,表示未表达任何偏好,且 阅读系统可以选择呈现方向。

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

过时的 toc 属性接受一个 IDREF [xml], 该 IDREF 标识表示 NCX 的清单项。

5.8.2 itemref 元素

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

元素名称:

itemref

用法:

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

属性:
内容模型:

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

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

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

linear 属性指示被引用的 item 是否包含有助于主阅读顺序、并预期由 阅读系统按顺序阅读的内容 (“yes”),或增强或补充主要内容、阅读系统可不按顺序访问的辅助内容 (“no”)。辅助内容的示例包括注释、说明和答案 键。

linear 属性允许阅读系统区分用户需要作为默认阅读顺序的一部分 访问的内容,与阅读系统 可能例如在弹出窗口中呈现或从音频呈现中省略的补充内容。

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

建议将非线性内容列在书脊末尾,除非让用户在两个线性书脊项之间 遇到它是有意义的。

线性 itemref 元素是其 linear 属性值显式设为 “yes” 或省略该 属性的元素 — 阅读系统会假定未带该属性的 itemref 元素的值为 “yes”。书脊 MUST 包含 至少一个 线性 itemref 元素。

由于阅读系统在沿书脊推进时可能不 提供对非线性内容的访问,因此 MUST 提供访问所有非线性内容的辅助方式 (例如,通过内容中的超链接或 EPUB 导航文档)。

Spine Properties Vocabularyproperties 属性的默认词汇

可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的术语 MAY

6. 布局

6.1 引言

本节为非规范性内容。

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

因此,EPUB 3 为显示 EPUB 内容文档提供了多种布局选项:

本节解释这些布局选项,以及用于控制包级呈现意图表达的其他属性 (即只能由 EPUB 阅读系统实现的功能)。如果阅读系统支持所需的 呈现方式,这些 属性可使内容按照其最优设计方式呈现。

6.2 可重排布局

可重排布局是指 EPUB 内容文档的内容会重排,以适应 阅读系统视口中的可用空间。阅读 系统随后可以动态分页 内容,或以滚动方式提供内容,并通常为用户提供选择其偏好 阅读体验的能力。

可重排布局是 EPUB 3 的默认布局,并且通常最具可访问性。由于它是 默认布局,因此无需声明任何元数据来表示 EPUB 出版物意图以 可重排方式呈现。不过,如果更希望进行显式声明,则可以在 meta 元素中设置 rendition:layout 属性, 并指定值 reflowable

除了将整个 EPUB 出版物设置为可重排外,还可以覆盖预分页固定布局,以指定某些书脊项为 可重排。为此,需要在每个可重排的书脊 itemref 上的 properties 属性中设置 rendition:layout-reflowable 书脊覆盖

卷动布局不支持布局书脊 覆盖,因此可重排布局不能以类似方式与卷动布局混合。

当两个可重排 EPUB 内容文档在书脊中连续出现时, 其 [html] body 元素的默认呈现与 page-break-before 属性 [css2] 设置为 always 时一致。如果阅读系统支持此类覆盖,则可以通过适当的 样式表 声明覆盖此行为 MAY

6.3 固定布局

EPUB 3 使用固定布局文档提供两类固定布局。第一类 预分页提供了非常类似传统印刷书籍的阅读体验, 其中每个固定布局文档表示一页内容。 预分页布局通常用于儿童书、漫画以及类似内容,在这些内容中, 页面设计若被重排会损失意义或可读性。

第二类布局 卷动,以 连续滚动布局提供固定布局文档。这种体验对于许多漫画和 manga 至关重要,因为对 文档分页会产生人为断点。

在引入卷动布局之前,预分页布局通常被称为固定布局 EPUB。 现在规范按每种固定布局类型的设计来称呼它们,以避免 只把其中一种称为“固定布局”所造成的一般混淆。

6.3.1 预分页

在预分页固定布局中,由书脊 itemref 引用的每个固定布局文档都表示一页内容。阅读系统应将 文档缩放以适应视口或合成跨页。

要指示 EPUB 出版物使用预分页固定布局,需要在 meta 元素中声明 rendition:layout 属性, 并指定值 pre-paginated

除了将整个 EPUB 出版物设置为具有预分页布局外,还可以 覆盖可重排布局,以指定某些书脊项为 预分页。为此,需要在每个预分页的书脊 itemref 上的 properties 属性中设置 rendition:layout-pre-paginated 书脊覆盖

卷动布局不支持书脊覆盖,因此预分页布局 不能以类似方式与卷动布局混合。

当属性为某个书脊项设置为 pre-paginated 时, itemref 元素 MUST 引用一个固定布局文档, 或者其清单回退链MUST 存在一个固定布局文档。

阅读系统通常会限制或拒绝将用户或用户代理样式表应用于 预分页文档,因为动态样式更改很可能对此类文档的内在属性产生意外 后果。选择使用 预分页内容时,建议考虑这些限制对可用性和 可访问性的负面影响。相关信息请参阅 准则 1.4 - 提供文本配置 [uaag20]。

6.3.1.1 合成跨页

对于预分页布局,默认情况下,阅读系统会在视口中单独呈现每个 固定布局文档,并按照书脊顺序用 下一个固定布局文档替换该文档。

阅读系统也可以提供合成跨页选项,其中会呈现两个视口, 从而使两个固定布局文档能够并排显示,或使单个 固定布局文档能够单独显示在两个可用视口之一中(例如,在 新章节开始前留出空白页)。在这种情况下,阅读系统将 单独呈现第一个文档 — 要么单独位于两个可用位置之一中 (该位置由给定的页面 推进方向EPUB 内容文档内的本地声明决定), 要么单独居中 (等同于设置 rendition:page-spread-center 属性)。在第一个文档之后,它将 通过呈现接下来两个连续的 EPUB 内容文档来填充跨页。随后, 每当用户在出版物中向前或向后推进时,跨页中的两个 文档都会被替换。

可以通过在书脊 itemref 元素的 properties 属性中指定以下 属性之一,覆盖自动填充行为 MAY

rendition:page-spread-centerrendition:page-spread-leftrendition:page-spread-right 属性仅在阅读系统 创建合成跨页时适用。它们也只适用于预分页内容,尽管当 书脊项布局被覆盖为预分页时,可以在可重排布局中存在跨页。

rendition:page-spread-leftrendition:page-spread-right 属性创建的目的,是允许包呈现属性使用单一词汇。 两组属性均可使用,但较旧的阅读系统可能只 识别无前缀版本。

rendition:page-spread-center 的创建是为了更容易理解 在双页跨页和单个居中页面之间切换的过程。

6.3.2 卷动

当在 meta 元素中声明 rendition:layout 属性并使用值 roll 时, 它表示内容为卷动形式(即阅读系统将每个书脊 itemref 的宽度适配到视口,并以无 可见间隙的连续卷动方式显示)。卷动布局样式全局适用(即适用于所有书脊项),且不能被 覆盖。

声明 roll 布局时,每个书脊项 MUST 引用一个 固定布局文档。每个 文档的尺寸 MUST7.3.2 固定布局文档尺寸中的定义设置。

包呈现 词汇中的其他属性或书脊覆盖都不能用于控制卷动布局的呈现。

阅读系统通常会限制或拒绝将用户或用户代理样式表应用于卷动文档, 因为动态样式更改很可能对此类文档的内在属性产生意外 后果。选择使用卷动布局时,建议 考虑这些限制对可用性和可访问性的负面影响。 相关信息请参阅 准则 1.4 - 提供文本配置 [uaag20]。

7. EPUB 内容文档

7.1 XHTML 内容文档

7.1.1 引言

本节为非规范性内容。

XHTML 内容文档是一个XML 文档的实例,它使用 HTML Standard [html] 的 XML 语法表示。

符合此配置文件的 XHTML 内容文档是核心媒体类型资源,也是构成EPUB 内容文档的两种格式之一 — 可在 spine 中无需回退项使用。

EPUB 3 不支持 [html] 的 HTML 语法作为核心 媒体类型。虽然两种序列化都允许表达相同的元素,但并非所有 JavaScript 库和 API 都 设计为处理 XML 语法,尤其是 shadow DOM。这意味着,例如,虽然 template 元素 [html] 可以用 XML 语法编写,但它可能无法像在 HTML 语法中那样使用。

Publishing Maintenance Working Group 知道 HTML Standard 不再建议 使用 XML 语法。然而,XML 是许多出版工作流不可或缺的一部分,并且 也是许多供应商接收系统和阅读系统所期望的。即使未来 语法之间出现额外支持差异,也不预期浏览器会放弃 对 XHTML 的支持。对 HTML 语法的支持可能会在 EPUB 3 的后继格式中解决。

EPUB 3 的早期版本引用 W3C 的 HTML5 标准来定义 EPUB 内容文档, 但该标准在很大程度上是 WHATWG 维护的 HTML Standard 的快照。 在 2019 年就 HTML 开发达成协议后, W3C 标准被废止,EPUB 3 现在专门 引用 HTML Standard。这并不意味着 EPUB 3 不再在 XHTML 内容文档中支持 HTML5,而只是 HTML5 现在是一个营销术语,指代 HTML Standard 作为 HTML 4.01 和 XHTML 1.1 的后继者。

7.1.2 XHTML 要求

XHTML 内容文档:

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

建议EPUB 出版物遵循 [epub-a11y-12] 中可访问性要求的建议 适用于 XHTML 内容文档。参见可访问性

7.1.3 HTML 扩展

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

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

7.1.3.1 结构语义

epub:type 属性 MAY 用于 XHTML 内容文档中,以表达结构语义

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

7.1.3.2 RDFa

[html-rdfa] 规范定义了一组 可用于 XHTML 内容文档中以在语义上 丰富内容的属性 MAY。这些属性的使用 MUST 符合 [html-rdfa] 中定义的要求。

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

列出 RDFa 并不表达工作组的偏好,只表示这些属性是 HTML 语法的扩展。Microdata 属性 [html] 和链接数据 [json-ld11] 在 XHTML 内容文档中得到原生支持,也可以使用。

7.1.3.3 国际化标签集(ITS)

[its20] 规范 定义了一组属性,可用于 XHTML 内容文档中,以增加对 国际化、翻译和本地化的支持 MAY

ITS 属性 MUST 只能按 Using ITS markup in HTML [its20] 中的定义使用(即 EPUB 3 不支持带命名空间的 属性)。

这些属性的使用 MUST 符合 [its20] 中定义的要求。

也可以从 [html] link 元素链接到 ITS 文档, 如 Global approach in HTML5 [its20] 一节中所定义。由于 此类链接文件是豁免资源,因此不需要对 [html] 进行扩展来容纳此用例。

7.1.3.4 自定义属性

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

  • w3.org
  • idpf.org

使用自定义属性时,无论内容在哪个阅读系统上 呈现,用户都 MUST 仍能消费该内容,且不会有任何 信息丢失或其他显著劣化。

自定义属性通常以特定阅读系统的方式定义,并不 打算供其他阅读系统使用。为多个独立阅读系统添加扩展以供使用的 首选方法是扩展本规范。

7.1.4 HTML 偏差和 约束

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

7.1.4.1 嵌入式 MathML

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

Presentation MathML

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

Content MathML

Content MathML MAY 包含在 XHTML 内容文档中的 MathML 标记内,并且 当存在时,MUST 包含在 semantics 元素的一个 annotation-xml 子元素内。

按前述 条件包含 Content MathML 时,给定 annotation-xml 元素的 encoding 属性 MUST 设置为两个功能等价值之一: MathML-Contentapplication/mathml-content+xml,并且 name 属性设置为 contentequiv

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

mathml 属性用于清单 item 元素,表示 XHTML 内容文档包含 嵌入式 MathML。

7.1.4.2 嵌入式 SVG

XHTML 内容文档支持 SVG 的嵌入:

svg 属性用于清单 item 元素,表示 XHTML 内容文档包含嵌入式 SVG(通过 引用或通过包含)。

7.1.4.3 不鼓励使用的构造

本节为非规范性内容。

7.1.4.3.1 base 元素

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

7.1.4.3.2 rp 元素

[html] rp 元素旨在为不能识别 ruby 标记的旧阅读系统提供回退 (即,在 ruby 标记周围显示括号)。 由于 EPUB 3 阅读系统知晓 ruby,并且 可以提供回退项,因此不鼓励使用 rp 元素。

7.1.4.3.3 embed 元素

由于 [html] embed element 元素不包含用于不支持 脚本的阅读系统的内在回退设施, 因此不鼓励将该元素与脚本化资源一起使用。[html] object 元素是更好的替代方案,因为它包含 内在回退能力。

7.2 SVG 内容文档

7.2.1 引言

本节为非规范性内容。

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

虽然 XHTML 内容文档更常作为顶级内容文档使用,但也允许使用SVG 内容文档。SVG 通常 只在某些特殊情况下才需要,例如当最终形态页面图像是内容唯一合适的 表示形式时(例如封面图,或在 manga 或漫画书语境中)。

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

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

7.2.2 SVG 要求

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

建议EPUB 出版物遵循 [epub-a11y-12] 中可访问性要求的建议 适用于 SVG 内容文档。参见可访问性

7.2.3 SVG 限制

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

7.3 固定布局文档

7.3.1 引言

本节为非规范性内容。

与印刷书或 PDF 文件不同,EPUB 出版物被 设计为可以变化。内容 会流动或重排,以适应屏幕并满足用户需求。如 Rendering and CSS 中所述,“内容呈现 会适应用户,而不是要求用户适应某种特定的内容呈现。” [epub-overview-34]

但这一原则并不适用于所有类型的文档。有时内容和设计高度 交织,以至于不可能将其分离。任何外观变化都可能改变 含义或丢失所有含义。当可重排布局不适合内容时,固定布局文档提供 对呈现的更大控制。

固定布局文档不同于reflowable EPUB 内容文档,因为阅读系统会按文档内元数据指定的一组宽度和高度 呈现它们。这允许以像素精确的方式定位文档内容。 任何外来资源也可以被指定为具有 固定布局(尽管这些资源需要 回退到 EPUB 内容文档)。例如,图像外来资源经常用于固定布局的书脊中, 尤其是在卷动布局中。

EPUB 内容文档或外来资源是否表示固定布局文档 取决于出版物的布局预分页卷动固定布局默认都期望从 书脊引用的所有项都是固定布局 文档(尽管在预分页 布局的情况下可以覆盖此行为)。也可以覆盖可重排布局以添加预分页固定布局 文档。

固定布局文档的布局尺寸 从各自的 EPUB 内容文档中获取。文档在 阅读系统中的呈现方式取决于所使用的布局 — 它们以预分页方式显示 (每个视口或合成跨页位置一个),也可以作为连续卷动呈现。

EPUB 3 支持多种用于表示固定布局内容的格式。当需要固定布局 内容时,格式选择将取决于许多因素,包括所需 精度、文件大小、可访问性等。本文档不试图 规定格式选择。

特别是,在书脊中使用图像已知在 分发和可访问性方面都有问题。并非所有供应商都接受书脊中包含图像的 EPUB 出版物, 即使要求提供 EPUB 内容文档回退项,阅读系统也并不 总是为用户提供访问这些回退项的选项。它们的使用只建议用于 支持卷动布局的专门生态系统,例如漫画和 manga。

7.3.2 固定布局 文档尺寸

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

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

在 XHTML 中表达

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

  • 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] 表达。

在图像外来资源中表达

对于从书脊引用的图像外来资源初始 包含块 [css2] 从图像的宽度和高度 元数据获得。有关此元数据如何存储的信息,请参阅该图像格式的 文档。

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

7.4 通用资源要求

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

7.4.1 层叠样式表 (CSS)

7.4.1.1 引言

本节为非规范性内容。

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

过去,EPUB 定义了一个 CSS 配置文件,强制支持某些属性,并 为许多其他属性提供带前缀版本。虽然 CSS Working Group 不再 建议使用带前缀属性,但本规范保留了一些带前缀 属性,以避免破坏现有内容。但除本 节中定义的少量例外外,EPUB 服从 W3C 对 CSS 的定义,并 期望阅读系统以 主要浏览器的水平支持它。

虽然阅读系统预期支持CSS 快照中定义的 CSS [epub-rs-34],但现实是大多数 阅读系统目前并不支持 CSS 的所有 所需特性,并且经常会修改 EPUB 出版物中定义的默认 呈现,并允许用户更改它。因此,样式必须适应这些 现实。更多信息请参阅 7.4.1.3 阅读系统支持注意事项

7.4.1.2 CSS 要求

CSS 样式表:

本规范限制 directionunicode-bidi 属性的使用,因为阅读系统可能不 实现 CSS 处理,或可能关闭 CSS 处理。当需要控制这些呈现方面时,必须使用以下 格式专用方法:

7.4.1.3 阅读 系统支持注意事项

本节为非规范性内容。

已知以下 CSS 特性在 EPUB 阅读系统中 支持尤其容易出问题:

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

  • 某些类型的屏幕会很差地呈现动画和过渡(例如,具有 高延迟的屏幕)。

阅读系统通常会设置 EPUB 出版物样式的某些方面(例如,设置适合应用程序的边距),并可能 覆盖默认指令。为减少冲突以及任何潜在的呈现 问题,建议在公开可用时查阅阅读系统的用户代理样式表, 并调整样式选择以获得最佳显示效果。

此外,允许用户更改外观(例如,选择 字体、文本对齐方式例如,选择 字体、文本对齐方式或前景色和背景色)的阅读系统,也会修改 EPUB 出版物中的某些 CSS 呈现方向。由于 CSS 优先级规则,建议 限制在 EPUB 内容文档中使用 [html] style 属性,以免 对用户体验产生负面影响(即用户的样式选择无法 普遍应用)。虽然某些阅读系统会覆盖内联样式,但这种 行为并无保证。

7.4.2 脚本

7.4.2.1 脚本包含

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

scripted 属性用于清单 item 元素, 以表示 EPUB 内容文档是 脚本化内容文档。

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

[svg] 截至发布时未定义数据块,但如果 未来更新添加这一概念,相同的排除规则将适用。

请注意,阅读系统必须表现得像是已经为每个 [html] 分配了唯一的 EPUB 出版物。实际上,这 意味着脚本无法在 EPUB 出版物之间共享数据。

脚本使用的上下文也决定 阅读系统赋予它的权利和限制(更多 信息请参阅 脚本 [epub-rs-34])。

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

7.4.2.2 脚本上下文

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

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

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

代码是直接嵌入在 script 元素中,还是通过该 元素的 src 属性引用,都不影响其执行上下文。

脚本使用的上下文会影响脚本能够执行的操作以及 阅读系统支持它的可能性,如以下小节所述。

关于两种上下文区别的示例,请参阅 A.2 脚本上下文

7.4.2.2.1 容器受限脚本

容器受限脚本是以下任一项:

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

请注意,阅读系统对 容器受限脚本的支持仅在 可重排文档中被推荐 [epub-rs-34],而在固定布局文档中为可选。

确保容器受限脚本在不支持脚本的阅读系统中优雅降级 (见 7.4.2.5 脚本回退)。

选择将脚本使用限制在容器受限模型中,将 确保脚本化和非脚本化内容之间具有更一致的用户体验 (例如,一致的分页行为)。

7.4.2.2.2 书脊级 脚本

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

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

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

7.4.2.3 事件模型

本节为非规范性内容。

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

7.4.2.4 脚本 可访问性

包含脚本的EPUB 内容文档 SHOULD 采用 相关 [wai-aria] 可访问性技术,以确保内容仍能供所有用户 消费。

7.4.2.5 脚本回退

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

脚本 MUST 只生成核心媒体类型资源或其片段。

7.4.3 epub:type 属性

7.4.3.1 结构语义

结构语义为元素所起的具体结构目的添加额外含义。 epub:type 属性用于在 EPUB 内容文档中表达领域特定语义,其携带的结构 信息补充底层 词汇。它也可用于媒体覆盖文档中,以反映正在播放内容的 语义 结构。

所应用的语义会细化其所在元素的含义,但不会像使用类似的 role 属性 [html] 时那样,改变其对辅助技术的性质。 换言之,该属性不会增强内容的可访问性;它只提供关于用途的提示。

语义元数据丰富内容,以便在出版工作流和作者定义的 用途中使用。它还允许阅读系统了解更多关于文档结构和内容 的信息(例如,在媒体覆盖中启用可跳过性和 可退出性)。

本规范定义了一种使用属性轴添加结构语义的方法: 不添加新元素,而是可以将 epub:type 属性 附加到现有元素,以添加所需语义。

7.4.3.2 语法
属性名称:

epub:type

命名空间:

http://www.idpf.org/2007/ops

用法:

请参阅 XHTMLSVG媒体覆盖的要求。

值:

一个以空白分隔的 [xml] 紧凑 URL列表, 并带有 5.3 词汇关联机制中定义的限制。

注意

虽然 epub:type 属性在性质上类似于 role 属性 [html],但这些属性服务于不同目的。 epub:type 属性的值不会像这些技术使用的可访问性 API 映射那样,通过辅助 技术(如屏幕阅读器)增强访问。 这意味着向语义中性的元素 例如 [html] divspan 添加 epub:type 值,并不会使它们对辅助 技术更具可访问性。只有 ARIA 角色会影响辅助技术如何理解这些 元素。

因此,epub:type 属性仅用于出版 语义和阅读系统 增强。阅读系统可以使用 epub:type 值来提供内置 朗读或媒体覆盖功能等可访问性增强,在这些情况下与辅助技术交互 并非必要。

有关可访问出版 角色的更多信息,请参阅 Digital Publishing WAI-ARIA Module [dpub-aria]。

epub:type 属性为其出现的元素赋予语义。 其值是一个或多个以空白分隔的术语,这些术语来自与文档实例 关联的外部词汇。

epub:type 属性的默认词汇是 EPUB 3 Structural Semantics Vocabulary [epub-ssv-11]。用于引用其 属性的前缀 URL 是 http://idpf.org/epub/vocab/structure/#

不属于此词汇的无前缀术语 MAY 使用,但 添加自定义语义的首选方法 是为其使用前缀。 更多信息请参阅 5.3 词汇 关联机制

8. EPUB 导航文档

8.1 引言

本节为非规范性内容。

EPUB 导航文档必需组件,属于 EPUB 出版物。它允许包含一个可供人和机器读取的全局导航层, 从而确保提升用户的可用性和可访问性。

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

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

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

8.2 导航文档 要求

有效的 EPUB 导航文档:

8.3 nav 元素: 限制

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

内容模型:
nav

按此顺序:

ol

按此顺序:

  • li [1 个或多个]

li

按此顺序:

  • spana[正好 1 个]

  • ol [有条件地要求]

spana

任意顺序:

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

其他要求请参阅下方定义。

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

注意

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

8.4 nav 元素:类型

8.4.1 引言

本节为非规范性内容。

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

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

toc

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

page-list

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

landmarks

标识包含兴趣点列表的 nav 元素。

EPUB 导航文档对于每种类型最多可以包含一个导航辅助。它 也可以包含附加导航类型。更多信息参见 8.4.5 其他 nav 元素

8.4.2 toc nav 元素

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

toc nav 元素中的引用 SHOULD 按照反映 以下两者的方式排序:

8.4.3 page-list nav 元素

页列表提供到内容中静态页面边界的导航。这些边界 要么对应于印刷等静态分页来源,要么专用于 EPUB 出版物

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

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

8.4.4 landmarks nav 元素

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

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

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

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

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

建议将 landmarks nav 中定义的项数量限制为阅读系统可能在其用户界面中使用的 项。该元素并非用于 重复目录。

建议在可用时包含以下地标:

  • bodymatter [epub-ssv-11] — 阅读 系统通常使用此地标,在用户开始阅读时自动跳过前辅文。
  • toc [epub-ssv-11] — 如果 目录 在书脊中可用,阅读系统可以使用此地标将用户带到 包含它的文档。

可包含在 landmarks nav 中的其他可能项包括索引和术语表等关键参考章节。

虽然 landmarks nav 旨在供阅读系统使用,但仍建议 确保 landmarks nav 的标签可供人阅读。阅读系统 可能会直接向用户公开这些链接。

8.4.5 其他 nav 元素

如果 EPUB 导航文档中需要附加的 nav 元素以供阅读系统处理,它们:

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

8.5 在书脊中使用

本节为非规范性内容。

作为符合要求的 XHTML 内容文档,EPUB 导航 文档可以包含在书脊中。

将导航文档添加到书脊中时,请考虑 阅读系统对该文档的任何处理都不会 适用。特别是,虽然 EPUB 阅读系统在书脊之外呈现 EPUB 导航 文档时(例如在阅读系统提供的专用导航用户界面中),必须抑制列表项 编号 [epub-rs-34],但此要求不适用于 书脊内使用。因此,如果在书脊中呈现 导航文档时不需要 HTML 的默认列表项编号,则必须使用 CSS 提供替代列表样式。

类似地,当 EPUB 导航文档在书脊中呈现时,常常并不需要所有导航结构或其中的分支。 例如,通常更倾向于 隐藏页列表地标 导航元素,或者对于有许多 小节层级的书籍,裁剪目录。

在这些情况下,建议使用 [html] hidden 属性来指示导航数据的哪些部分 (如有)从内容流中的呈现中排除。该属性对阅读系统如何在书脊之外呈现导航文档没有影响 [epub-rs-34]。

虽然 display 属性 [css2] 控制 EPUB 导航文档在具有视口阅读系统中的视觉呈现,但没有视口的阅读系统可能不 支持 CSS。 hidden 属性可以与 display 属性一起使用,以 最大化所有阅读系统之间的互操作性。

9. 听觉呈现

9.1 引言

本节为非规范性内容。

虽然 EPUB 3 主要被视为一种视觉阅读格式,但 EPUB 出版物在设计上 支持其听觉呈现。实现这一点主要有两种方式:

通过文本转语音呈现阅读 EPUB 出版物的体验,由用户的 阅读系统使用内置合成语音来控制。 此功能通常称为 “朗读”能力,尽管确切名称可能因阅读系统而异。

虽然 EPUB 3 阅读系统提供的朗读功能提高了需要语音辅助的残障用户的 可访问性,但它不同于专用辅助技术(通常称为屏幕 阅读器)提供的文本转语音呈现。朗读功能设计为供所有用户使用,因为它存在于阅读 系统内部,而不是作为单独的应用程序。例如,旅行中的人可能会从视觉 阅读切换到听觉阅读以避免晕动症。虽然两种类型的文本转语音呈现都可能存在 于用户系统上,并且都可用于阅读 EPUB 出版物,但本规范只 关注阅读系统提供的内置功能。

另一方面,媒体覆盖依赖 EPUB 出版物的生产者提供音频 并将其与文本同步。媒体覆盖允许 EPUB 出版物兼作更 传统的有声书,但好处是用户也可以在 音频播放时跟随文本阅读。

虽然媒体覆盖通常用于提供专业朗读,但这只是一种惯例。 也可以录制内容的文本转语音播放并使用媒体覆盖进行同步, 而且真人和合成发声经常混合使用(例如,正文使用真人朗读,而后辅文使用合成 朗读,因为让人类阅读后辅文更繁琐且耗时)。也 可以使用媒体覆盖来指定阅读系统使用其文本转语音能力来读取关联文本,但实际上此 功能 支持得并不好。

媒体覆盖播放和文本转语音播放并不是互斥的特性。包含通过媒体覆盖提供的预录 旁白的 EPUB 出版物,仍可由用户使用其阅读系统的朗读功能来阅读。

9.2 文本转语音

本节为非规范性内容。

目前没有被广泛支持的技术可用于提高文本转语音 播放的质量。EPUB 3 的最初设计是使用三种技术:

这些技术的未来尚不确定,尽管它们都可在 EPUB 出版物中有效使用。EPUB SSML 属性最不可能获得支持,因为 EPUB 3 现在的目标是尽可能使用 Web 支持的技术。关于以 Web 友好方式添加 SSML 支持的工作,如果能获得推动,很可能会取代这些属性。发音词典 只获得了有限的区域性支持。未来工作也有可能 以更有限的形式复兴 CSS Speech,但这也仍在进行中。

有关这些技术以及如何在 EPUB 3 中使用它们的更多信息,请参阅 EPUB 3 Text-to-Speech Enhancements 1.0 [epub-tts-10]。

当这些或其他技术在 EPUB 出版物中变得广泛可用时,本节将更新。

目前,改进阅读系统中文本转语音播放的最佳建议是确保 EPUB 出版物符合 [epub-a11y-12] 的可访问性要求。这将 确保结构和 语义可用于辅助阅读系统播放,并且为无法感知视觉内容的用户提供 文本替代。

9.3 媒体覆盖

9.3.1 引言

本节为非规范性内容。

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

媒体覆盖所实现的文本和音频同步,为任何难以跟随传统图书文本的 用户提供了增强的可访问性。媒体覆盖还 为因任何原因无法阅读文本的读者提供连续聆听体验, 这是传统音频嵌入技术无法提供的。它们甚至可用于 传统上不被视为可访问性关注点的目的(例如语言 学习)。

对于不支持该功能的 EPUB 阅读系统而言,媒体覆盖功能是透明的。在 EPUB 出版物中包含媒体覆盖,不会影响 不感知媒体覆盖的阅读系统像媒体 覆盖不存在一样呈现 EPUB 出版物的能力。

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

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

9.3.2 媒体覆盖文档

9.3.2.1 媒体 覆盖文档要求

媒体覆盖文档

9.3.2.2 媒体 覆盖文档定义

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

9.3.2.2.1 smil 元素

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

元素名称:

smil

用法:

媒体覆盖 文档的 REQUIRED 根元素 [xml]。

属性:
version [required]

指定该 媒体覆盖文档所遵循的 [smil3] 规范版本号。

此属性 MUST 具有值 “3.0”。

id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

epub:prefix [optional]

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

更多 信息请参阅 9.3.3.3 覆盖中的结构语义

内容模型:

按此顺序:

9.3.2.2.2 head 元素

head 元素是媒体覆盖文档中元数据的容器。

元素名称:

head

用法:

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

属性:

内容模型:

metadata [0 或 1]

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

9.3.2.2.3 metadata 元素

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

元素名称:

metadata

用法:

作为 head 元素的子元素。

属性:

内容模型:

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

本规范不要求媒体覆盖 文档中有任何元数据属性;提供 metadata 元素是为了满足自定义元数据 要求。

9.3.2.2.4 body 元素

body 元素是 媒体覆盖文档中所含演示的起点。它包含 parseq 元素的主序列。

元素名称:

body

用法:

body 元素是 smil 元素的 REQUIRED 子元素。它 跟在 head 元素之后(如果该元素存在)。

属性:
epub:type [optional]

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

该值是以空白分隔的紧凑 URL列表。 更多信息请参阅 9.3.3.3 覆盖中的结构语义

id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

epub:textref [optional]

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

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

内容模型:

任意顺序:

  • seq [0 个或多个]

  • par [0 个或多个]

MUST 至少包含一个 parseq

9.3.2.2.5 seq 元素

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

元素名称:

seq

用法:

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

属性:
epub:type [optional]

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

该值是以空白分隔的紧凑 URL列表。 更多信息请参阅 9.3.3.3 覆盖中的结构语义

id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

epub:textref [required]

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

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

更多 信息请参阅 9.3.3.2.1 覆盖结构

内容模型:

任意顺序:

  • seq [0 个或多个]

  • par [0 个或多个]

MUST 至少包含一个 parseq

9.3.2.2.6 par 元素

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

元素名称:

par

用法:

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

属性:
epub:type [optional]

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

该值是以空白分隔的紧凑 URL列表。 更多信息请参阅 9.3.3.3 覆盖中的结构语义

id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

内容模型:

任意顺序:

9.3.2.2.7 text 元素

text 元素引用 EPUB 内容文档中的一个元素。 text 元素通常引用文本元素,但也可以引用 其他 EPUB 内容文档 媒体元素。在没有同级 audio 元素时,预期阅读系统通过文本转语音呈现此元素所引用的文本内容。

元素名称:

text

用法:

作为 par 元素的 REQUIRED 子元素。

属性:
src [required]

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

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

id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

内容模型:

本规范不对 text 元素的 src 属性 施加限制,但建议该属性引用可用 CSS 设置样式的内容,以使与样式信息的关联有效。对于 XHTML,这意味着引用可感知内容。对于 SVG,这意味着 引用路径基本形状文本元素。

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

9.3.2.2.8 audio 元素

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

元素名称:

audio

用法:

par 元素的 OPTIONAL 子元素。

属性:
id [optional]

元素的 ID [xml], 它 MUST 在文档范围内 唯一。

src [required]

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

以可变 比特率编码的 MP3(audio/mpeg)音频文件 [mp3] 不太适合精确跳转,因为跳转精度 通常与音轨长度成反比。因此, 媒体覆盖 SHOULD NOT 使用可变比特率 MP3 音频。

clipBegin [optional]

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

MUST 是 [smil3] 时钟 值

参见 A.4 时钟值

clipEnd [optional]

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

MUST 是 [smil3] 时钟 值

参见 A.4 时钟值

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

内容模型:

9.3.3 创建媒体覆盖

9.3.3.1 引言

本节为非规范性内容。

出版物的预录旁白可以表示为一系列音频片段,每个片段 对应 EPUB 内容文档的一部分。例如,单个音频片段 通常表示一个短语或段落,但不推断其相对于其他 片段或文档文本的顺序。媒体覆盖通过使用 [smil3] 标记,将结构化音频旁白绑定到 EPUB 内容文档中对应的文本(或其他媒体),从而解决此同步问题。事实上,媒体覆盖是 SMIL 3.0 的一个简化子集,用于定义这些片段的播放序列。

主要用于构造媒体覆盖的 SMIL 元素是 body (用于 主序列)、 seq (序列)和 par (并行)。(有关这些和其他 SMIL 元素的更多信息,请参阅 9.3.2.2 媒体覆盖文档定义。)

par 元素是媒体覆盖的基本构建块,并对应 EPUB 内容文档中的一个短语。该元素提供同步内容的两项关键信息: 1)包含该短语旁白的音频片段;以及 2) 指向关联 EPUB 内容文档片段的指针。par 元素 使用两个媒体元素子元素来表示这些信息:一个 audio 元素和一个 text 元素。由于 par 元素的媒体对象子元素按 并行定时,阅读系统会同时呈现音频片段和 EPUB 内容文档片段, 从而产生同步演示。

text 元素的 src 属性通过其 URL [url] 引用 来引用 EPUB 内容文档中关联的短语、 句子或其他片段。 audio 元素的 src 属性同样引用对应音频片段的 位置,并添加 clipBeginclipEnd 属性,以指示该片段中的特定 偏移。

par 元素按顺序放在一起,以形成短语或 句子的序列。并非 EPUB 内容文档中的每个元素都会在媒体覆盖文档中有对应的 par 元素,只有与音频 旁白相关的元素才会有。

par 元素也可以添加到 seq 元素中,以定义更 复杂的结构,例如部和章(参见 9.3.3.2.1 覆盖结构)。

9.3.3.2 与 EPUB 内容文档的关系

在本节中,假定 EPUB 内容文档是一个 XHTML 内容 文档。虽然媒体覆盖可以与 SVG 内容 文档一起使用,但播放 行为可能不一致,因此不保证互操作性。

阅读系统对可重排和固定布局 EPUB 内容 文档播放的支持不受保证。阅读系统分页策略的差异意味着 某些阅读系统只会在一种或另一种布局 格式中支持媒体覆盖。

9.3.3.2.1 覆盖结构

媒体覆盖 文档body 由两个元素组成: par 元素和 seq 元素。这些元素的顺序表示阅读系统在 播放期间如何呈现对应 EPUB 内容文档中的内容。

par 元素表示一个内容片段,例如一个词、短语、 句子、表格单元、列表项、图像,或标记中其他可识别的内容片段。 每个元素同时标识要显示的内容(在 text 元素中) 和播放期间要同步的音频(在 audio 元素中)。

seq 元素表示序列 — 由 seq 和/或 par 元素组成的集合,它们共同表示内容的逻辑组件。 该元素用于表示嵌套容器,例如章节、旁注、 页眉、表格、列表和脚注。它允许这些 容器固有的结构保留在媒体覆盖文档中。

seq 元素 MUST 包含 epub:textref 属性。由于 seq 元素不 提供同步指令,因此此属性允许阅读系统将该片段 匹配到文本中的一个位置。

将章节、图、表格和脚注等结构分组到 seq 元素中的原因,是为了让阅读系统能够在播放期间识别它们的起始和 结束位置。随后,阅读系统可以提供 适合内容布局的播放选项,例如跳过长图、关闭 分页符播报的呈现(参见 9.3.4 可跳过性和 可退出性),或自定义阅读模式以适应表格等 结构。

9.3.3.2.2 引用文档片段

epub:textref 属性和 text 元素的 src 属性都可以包含一个 URL-fragment string,用于引用关联 EPUB 内容文档中的特定部分(例如 通过其 ID 引用某个元素)。

对于 XHTMLSVG 内容文档,URL-fragment string SHOULD 分别是通过 ID 对特定元素的引用,或 一个 SVG 片段 标识符 [svg]。

其他片段标识符方案 MAY 使用,但阅读系统可能不支持 此类标识符。

9.3.3.2.3 覆盖 粒度

本节为非规范性内容。

媒体覆盖的粒度级别取决于 EPUB 内容文档 如何标记,以及 text 元素的 src 属性和 seq 元素的 epub:textref 属性中使用的片段标识符类型。例如,在引用 [html] 元素时,如果最细 的标记级别在段落级,那么这就是媒体覆盖同步可能达到的最细级别。 同样,如果有段落内标记,例如 表示短语或句子的 [html] span 元素,则媒体覆盖中可以实现更细粒度。 更细粒度会在用户按词或短语导航以及搜索文本时,为同步播放提供更精确的结果, 但会增加媒体覆盖文档的文件大小。不依赖元素存在的片段 标识符方案,在受支持的情况下,能够提供更细粒度。

9.3.3.2.4 文本转语音呈现

本规范允许使用文本转语音(TTS)— 将 EPUB 出版物的文本 内容以合成语音作为人工人声呈现 — 作为预录音频片段之外的补充。

当媒体覆盖 par 元素省略其 audio 元素时,其 text 元素 可以在阅读系统中通过 TTS 呈现。如果该文本片段不适合 TTS 呈现(例如不是文本元素和/或没有文本回退),则可能 产生意外结果。

有关在 EPUB 出版物中使用 TTS 技术的更多信息,请参阅 EPUB 3 Text-to-Speech Support [epub-tts-10]。

9.3.3.3 覆盖中的结构 语义

要在媒体覆盖文档中表达结构语义epub:type 属性 MAY 指定在 parseqbody 元素上。

epub:type 属性有助于阅读系统执行适合所指示语义类型的行为。 这些行为的示例包括可跳过性和可退出性以及表格阅读模式 [epub-rs-34]。

媒体覆盖文档 MAY 使用适用于 epub:type 属性的词汇 关联机制来定义附加 语义。

9.3.3.4 关联 样式信息

当前正在播放的 EPUB 内容文档元素的视觉呈现信息 MAY 使用作者定义的类在 CSS 样式表中表达。

使用时,类名 MUST 使用 包文档中的 active-classplayback-active-class 属性声明。

每个属性所定义的每项属性中 MUST 正好定义一个 CSS 类名。 每个属性 MUST 定义一个有效的 CSS 类 名,且不包含任何选择器 [css2]。 本规范为 这些属性的使用保留名称。

可以为指定 CSS 类定义任何 CSS 属性 MAY。每个 具有关联 媒体覆盖文档的 EPUB 内容文档 都必须包含一个 CSS 样式表(嵌入式或链接式),其中包含类定义。 在缺少此类定义时,阅读系统可能会提供自己的样式, 或者完全不提供样式。

active-classplayback-active-class 属性 MUST NOTrefines 属性结合使用,因为 它们始终适用于整个 EPUB 出版物

9.3.3.5 媒体覆盖 打包
9.3.3.5.1 包含 媒体覆盖

如果某个 EPUB 内容文档媒体覆盖文档全部或部分引用,则其清单 item 元素 MUST 指定 media-overlay 属性。该属性 MUST 引用 对应媒体覆盖文档的清单 itemID [xml]。

media-overlay 属性 MUST 只指定在 EPUB 内容文档的清单 item 元素上。

媒体覆盖文档的清单项 MUST 具有媒体类型 application/smil+xml

9.3.3.5.2 覆盖 包元数据

整个 EPUB 出版物的持续时间 MUST 使用 包文档中的 带有 duration 属性meta 元素指定。

此外,每个 媒体覆盖文档的持续时间 MUST 使用 refines 属性提供,以将每个 持续时间声明关联到其对应的清单 item

每个媒体覆盖文档的持续时间之和 SHOULD 等于总持续时间,误差不超过一秒。

虽然由于将时间舍入到最接近的秒的小数部分,各个持续时间之和可能无法完全匹配总时长, 但超过一秒的差异表示存在由其他问题造成的不匹配。

旁白者信息 MAY 也可以使用包文档中的 narrator 属性指定。也可以指定要应用于 当前正在播放的 EPUB 内容文档 元素的作者定义 CSS 类名

media: 前缀被保留,用于在包元数据中包含这些 属性。

9.3.4 可跳过性和 可退出性

9.3.4.1 可跳过性

阅读时,用户可能想开启或关闭内容的某些特性,例如 脚注、页码或其他类型的次要内容。此功能称为 可跳过性。阅读系统使用媒体覆盖 元素的 epub:type 属性提供的语义信息, 来确定何时向用户提供可跳过特性的选项。

以下语义 MAY 用于启用可跳过性:

不过,此列表并不详尽。它表示 Structural Semantics Vocabulary [epub-ssv-11] 中 阅读系统最可能提供可跳过性选项的术语。

9.3.4.2 可退出性

可退出项是嵌套结构,例如表格和列表,用户可能希望 跳过它们,从嵌套结构之后的紧邻位置继续阅读。 可退出性功能不同于可跳过性功能,因为它不是启用或 禁用整类项目,而是提供从中退出的方式(例如,用户可以先听取 一部分内容,然后选择退出)。

以下语义 MAY 用于启用可退出性:

不过,此列表并不详尽。它表示 Structural Semantics Vocabulary [epub-ssv-11] 中 阅读系统最可能提供 可退出性选项的术语。

有时可退出结构可能包含可退出结构。例如,表格由 许多行和单元格组成,用户可能希望分别从中退出。阅读 系统对从此类结构退出的支持很复杂,目前支持并不好。 建议在更好的支持可用之前,避免标识嵌套的可退出结构。

9.3.5 导航文档 覆盖

本节为非规范性内容。

由于 EPUB 导航文档是一个 XHTML 内容文档,因此可以有一个 媒体覆盖文档与其关联。 然而,与传统 XHTML 内容文档不同, 阅读系统必须向用户呈现 EPUB 导航 文档,即使它没有 包含在书脊中也是如此(参见 导航 文档处理 [epub-rs-34])。因此,关联的 媒体覆盖行为方式会根据上下文发生变化:

  • 当包含在书脊中时,EPUB 导航文档的媒体覆盖 文档播放遵守与任何其他 XHTML 内容 文档相同的符合性要求。

  • 当在允许用户访问并激活 链接的演示上下文中公开时,阅读系统可以实现附加的呈现行为,以在用户访问导航链接时提供音频 反馈。

具体实现细节超出本规范的范围。DAISY Media Overlays Playback Requirements 文档描述了创作最佳实践,并为阅读系统开发者 提供建议。

10. 可访问性

本节为非规范性内容。

EPUB 3 明确构建在开放 Web 平台之上,以便它能够利用其底层技术内置的结构、语义以及 由此带来的可访问性。

用于创作可访问 Web 内容的一些关键标准包括:

Web 内容可访问性指南(WCAG)

创建可访问 Web 内容的要求和实践记录在 [wcag2] 中。

可访问富互联网应用(ARIA)

[wai-aria] 规范 定义了角色、状态和属性,用于使不使用原生 HTML 元素和属性的动态内容 变得可访问。它还提供了一组用于导航网页的 地标。

数字出版 WAI-ARIA 模块(DPUB-ARIA)

[dpub-aria] 规范是 [wai-aria] 的扩展,提供了 专用于识别常见出版结构的附加角色。

HTML 中的 ARIA

[html-aria] 规定了 ARIA 和 DPUB-ARIA 中定义的角色、状态和属性 如何在 HTML 文档中 使用。

这些标准也构成了使 EPUB 出版物可访问的基础。不过,由于当前的 WCAG 指南(版本 2)高度聚焦于网页,EPUB Accessibility 标准 [epub-a11y-12] 定义了如何将这些标准应用于 EPUB 出版物,并为元数据、分页和媒体 覆盖添加了 EPUB 特定的要求和建议。

本规范建议 EPUB 出版物符合 [epub-a11y-12] 中定义的可访问性 要求。遵循此建议的一个好处是, 它有助于确保 EPUB 出版物满足世界各司法辖区立法规定的可访问性要求。

强烈建议超越法律要求,将可访问性视为所有 EPUB 出版物的一项要求。EPUB 出版物越可访问,其潜在受众 就越大。

本规范未整合可访问性要求,是为了允许这些要求独立于 EPUB 规范适应和 演进 — 可访问性实践通常需要更频繁地 更新。可访问性规范也旨在与 EPUB 的过去、现在和未来 版本一起使用。采用单独规范的方法确保 EPUB 的演进不会 将可访问性锁定在某个时间点(即,它允许较旧版本 EPUB 的生产者引用 最新的可访问性要求)。

11. 安全与隐私

11.1 概述

本节为非规范性内容。

EPUB 出版物的特殊性在于其结构。EPUB 格式提供了一种方式,用于 表示、打包和编码结构化且语义增强的 Web 内容 — 包括 HTML、CSS、SVG、JavaScript 和其他资源 — 以便 在单文件容器中分发。

这意味着 EPUB 3 的安全与隐私问题主要与这些 格式的特性相关,并且与 Web 内容带来的威胁高度相似。

虽然内容风险通常被等同于蓄意恶意的创作意图,但要注意, 许多出于善意而遵循的实践也可能使用户暴露于隐私和安全问题中。 本节其余部分探讨 EPUB 3 的风险模型,以帮助识别并缓解这些 风险。

有关与阅读系统相关的风险,请参阅 [epub-rs-34] 的安全与隐私章节

11.2 威胁模型

本节为非规范性内容。

EPUB 出版物会对毫无戒备的用户造成各种隐私和安全 威胁。其中许多威胁与 Web 内容交叉,但 EPUB 也引入了自己独有的攻击方法, 可用于诱骗用户访问恶意内容,或诱骗用户提供敏感 信息。需要注意的一些较重要的攻击向量包括:

嵌入远程资源

EPUB 3 允许某些 出版资源远程 托管,特别是那些大小可能会对 EPUB 出版物的下载和 打开产生负面影响的资源(例如音频、视频和字体)。虽然按预期使用时对用户有帮助, 但这些例外也可用于向出版物中注入恶意内容。

此威胁并不限于访问恶意行为者创建的内容。如果来自 不可信来源的内容(例如第三方音频和视频)嵌入到 EPUB 出版物中,用户始终有可能收到受感染的 资源。

在分发时检查恶意软件和漏洞利用也并不总是可靠,因为 与嵌入在 EPUB 容器中的资源不同,恶意内容可以在出版后任意时间被替换。

EPUB 的来源特定于每个阅读系统 实现,并且在阅读系统外部不可知。因此,即使 远程资源托管在安全的 Web 服务器上, 也无法使用需要指定允许来源的安全 特性,例如 CORSContent-Security-PolicyX-Frame-Options 的标头。

链接到外部资源

无论是否有意,指向外部 Web 站点和资源的链接都会使用户暴露于 潜在漏洞利用之下,这些漏洞利用可能会危及其阅读系统或操作系统。虽然 外部链接通常会在 Web 浏览器中打开,并受浏览器安全 模型约束,但这并不能保护用户免受所有漏洞利用影响。

即使意图并非恶意,向外部链接添加跟踪信息也 会造成用户隐私问题,因为它可能允许在未经用户 同意的情况下跟踪用户活动。

断链劫持 — 即域名过期并被另一方购买以利用 指向该域名的链接 — 也可能导致用户被带到非预期资源。

包含恶意内容

嵌入在 EPUB 容器中的资源并不免受恶意行为者影响,特别是当 EPUB 出版物来自不可信来源时。资源可能包含漏洞利用,或 将敏感信息提交给非预期方的表单。此类行为者也可能尝试 使用文件间接技术(例如符号 链接或文件别名)访问远程资源

使用第三方内容(例如游戏和测验)也可能导致安全和 隐私问题,如果这些内容无法被完全审查。

允许脚本访问网络

当脚本可以访问设备网络时,它会提供多种渠道来利用 用户:

  • 收集关于用户及其活动的信息,无论是否具有恶意;
  • 尝试访问文件系统和本地存储以收集信息;
  • 网络钓鱼尝试(例如,使 EPUB 内容文档看起来像一个 受信任的 Web 站点,以诱使用户提交登录信息);以及
  • 从外部站点向 EPUB 出版物中注入恶意内容。

网络访问还可能允许第三方内容利用用户。

使用数字版权管理和水印保护内容

使用数字版权管理方案对 EPUB 出版物进行加密和解密, 可能会允许关于用户、其使用的供应商以及其阅读选择的个人可识别信息 被传递给第三方。水印同样如此。

这些攻击的有效性通常还取决于诱骗用户相信他们正在交互的 出版物来自可信来源。这些欺骗可以采取 以下形式:

伪造的出版物信息

EPUB 出版物可以包含关于自身的虚假信息,以诱骗用户相信 它来自合法来源。例如,恶意行为者可能伪造该作品的 标题、作者、标识符和出版者。

虽然这种错误信息本身不会造成直接危害,但它可能导致用户 信任 EPUB 出版物中的恶意表单、链接和其他内容,误以为它 来自可靠来源。

伪装平台

恶意行为者还可以将其内容设计成模仿或复制某个平台的 体验,以诱骗用户信任其内容。

11.2.1 EPUB 特定特性

EPUB 3 试图避免扩展其所构建于其上的底层技术,但它确实引入了 一些新特性。不过,这些特性的受限范围限制了它们可能带来的威胁:

一个潜在例外是 epubReadingSystem 对象 [epub-rs-34],它允许查询关于 当前阅读系统的信息。建议仅 使用此对象暴露的信息来改进 EPUB 出版物的呈现(即,避免使用这些 信息对用户及其环境进行画像)。

11.3 建议

虽然不可能阻止每一种利用用户的方法,但内容的 安全构建责任在于其创建者。这需要采取预防措施,以限制 EPUB 出版物暴露于上一节所描述的各种恶意 利用之下。

一些实际步骤包括:

还应考虑用户的隐私权,避免有意收集数据。理想情况下,用户 SHOULD NOT 被跟踪,但这并不适用于所有类型的出版。

当必须跟踪用户时(例如在教育课程作业中),SHOULD 在打开 EPUB 出版物之前获得用户对收集 信息的批准。如果这 不可能,则 SHOULD 在用户首次访问 EPUB 出版物时获得 许可。用户 SHOULD 被允许选择退出跟踪,并被提供管理和 删除所收集的关于他们的任何数据的能力。

还需要考虑对用户信息的无意收集。链接到出版者 Web 站点上的内容, 或在其服务器上远程托管资源,可能导致对 用户进行画像,特别是在 URL 中添加唯一跟踪标识符时。

在 EPUB 出版物内收集和存储用户信息时(例如通过使用 cookieWeb 存储 [html]),需要考虑同一阅读系统上其他 EPUB 出版物造成数据窃取的可能性。虽然 [epub-rs-34] 为 EPUB 出版物引入了唯一来源要求, 这限制了潜在攻击,但仍存在阅读系统允许 EPUB 出版物访问共享持久化存储的风险(例如未更新的旧阅读系统和不符合规范的新阅读系统)。因此,敏感用户数据 SHOULD NOT 被 存储在持久化存储中。如果必须存储敏感数据,则 SHOULD 对其 加密,以防在发生漏洞利用时被轻易访问。

当必须使用数字版权管理方案时,优先选择不利用或 向外部方传输关于用户或其内容的信息以执行加密或 解密的方案。

当必须使用水印时,应遵循行业隐私最佳实践,例如 Privacy Principles for Digital Watermarking [watermark-privacy] 中定义的原则。

为最大限度降低安全与隐私风险,EPUB 出版物 SHOULD 以 长期保存为目标进行制作。以这种方式创建的 EPUB 出版物通常是自包含的, 不依赖网络访问,也未使用数字版权管理加密,从而移除了许多 可能的攻击向量。[iso22424] 是这种 EPUB 出版物保存格式的一个示例。虽然可以理解并非所有 EPUB 出版物都能达到这些 自包含级别,但尽可能遵循这些实践仍将有利于整体用户 隐私和安全。

A. 详细示例

本节为非规范性内容。

A.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 元素链接。因此,它是清单平面上的链接 资源(即未列在清单中)。它不是 任何其他平面的一部分。

https://www.example.org/meta/data2.xml

该资源是一个元数据记录,远程存储。它通过 包文档元数据中的 link 元素链接。因此,它是清单平面上的链接资源, (即,它未列在清单中)。它不是任何其他平面的一部分。

page.xhtml

该资源是一个 XHTML 文档。它列在书脊中。它是 清单平面上的出版资源,一个 容器资源书脊平面上的一个EPUB 内容文档,并且不存在于内容平面上。不需要回退。

nav.xhtml

该资源是 EPUB 导航 文档。它未列在书脊中。它是 清单平面上的出版资源、容器资源,并且不存在于 书脊平面或内容平面上。不需要回退。

style.css

该资源是一个 CSS 文件。它未列在书脊中,但从 [html] link 元素引用。它是清单平面上的出版 资源、容器资源,不存在于书脊平面上,并且是内容平面上的 核心媒体类型 资源。不需要回退。

font/font-file.otf

该资源是一个 TrueType 字体文件。它未列在书脊中,但从 CSS 文件引用。它是清单平面上的出版资源,是容器资源, 不存在于书脊平面上,并且是内容平面上的核心媒体类型资源。无需 回退。

https://www.example.org/fonts/font-file2.otf

该资源是一个 TrueType 字体文件。它未列在书脊中,但从 CSS 文件引用。它是清单平面上的出版资源,是远程资源,不存在于书脊平面上,并且是内容平面上的核心媒体类型资源。无需 回退。

font/font-file.cff

该资源是 Compact Font Format 中的字体文件。它未列在书脊中,但 从 CSS 文件引用。其媒体类型未列为核心媒体类型。它是清单 平面上的出版资源、容器资源,不存在于书脊平面上,并且是内容平面上的豁免资源。不需要 回退。

speech/cmn.pls

该资源是一个发音词典文件。它未列在书脊中,但从 [html] link 元素引用。它是 清单平面上的出版资源、容器资源,不存在于书脊 平面上,并且是内容平面上的豁免资源。无需回退。

image/image_1.png

该资源是一个 PNG 图像文件。它未列在书脊中,但从 [html] img 元素引用。它是清单平面上的出版资源、容器 资源,不存在于书脊平面上,并且是 内容平面上的核心媒体类型资源。无需回退。

image/image_2.png

该资源是一个 PNG 图像文件。它通过 [html] a 元素引用。由于它 是从超链接引用的,因此它必须列在书脊中。它是 清单平面上的出版资源、容器资源,书脊 平面上的外来内容文档,并且是内容平面上的核心媒体类型资源。作为 外来内容文档,回退是强制性的,并通过清单回退提供。

image_desc.xhtml

该资源是一个 XHTML 文档。它是清单回退的“目标”,因此未 显式列在书脊中(但会在需要时“替换”现有书脊项)。它 是清单平面上的出版资源、容器资源,书脊平面上的 EPUB 内容 文档,并且由于它在呈现另一个 EPUB 内容 文档时并未被“使用”,所以不存在于内容平面上。无需回退。

image/image_3.heic

该资源是一个 High Efficiency(HEIC)图像文件。它未列在书脊中,但 从 [html] source 元素引用。其媒体类型未列为核心媒体类型。 它是清单平面上的出版资源、容器资源,不存在于书脊平面上,并且是内容平面上的外来 资源。作为外来资源,回退是强制性的,并通过 [html] picture 元素中的同级 [html] img 元素提供。

image/image_3.png

该资源是一个 PNG 图像文件。它未列在书脊中,但从 [html] img 元素引用,该元素作为 [html] picture 元素的内在回退使用。它是清单平面上的出版资源、容器资源,不 存在于书脊平面上,并且是内容平面上的核心媒体类型资源。无需 回退。

widget.xhtml

该资源是一个 XHTML 文档。它未列在书脊中,但从 [html] iframe 元素引用。它是清单平面上的出版资源、容器 资源,不存在于书脊平面上,并且由于它在呈现另一个 EPUB 内容文档时被“使用”,因此是内容平面上的核心媒体类型资源。无需回退。

https://www.example.org/some_content

该资源通过 [html] a 元素引用,并且不存储在 EPUB 容器中。阅读系统通常会通过单独的浏览器实例打开此链接。它 不在本规范定义的任何平面上。

关于不同类型资源用法的附加示例可见于 5.7.2.2 示例

A.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>

从这些示例可知:

A.3 打包的 EPUB

此示例演示如何使用 OCF 格式,在 OCF ZIP 容器内包含经过签名和加密的 EPUB 出版物

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 是实际被签名的信息。
           在此情况下,SHA-1 算法用于对
           下方 Object 元素中枚举的 XML 文档的
           规范形式进行签名。
      -->

      <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>

      <!--
           上方摘要的签名值,使用 DSA
           算法
      -->
      <SignatureValue></SignatureValue>

      <!--
           用于验证签名的密钥
      -->
      <KeyInfo>
         <KeyValue>
            <DSAKeyValue>
               <P></P>
               <Q></Q>
               <G></G>
               <Y></Y>
            </DSAKeyValue>
         </KeyValue>
      </KeyInfo>

      <!--
           要签名的资源列表(注意,XML 文档的规范
           形式被签名,而所有其他资源使用
           二进制形式)
      -->
      <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#">

   <!--
        用于加密下方 EncryptedData 块中枚举数据的
        RSA 加密 AES-128 对称密钥
   -->
   <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>

   <!--
        每个 EncryptedData 块标识一个使用 AES-128 算法
        加密的单独资源。
        这些数据仍以其加密形式存储在容器内
        原始文件中。
   -->
   <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>

A.4 时钟值

以下是允许的时钟值示例:

B. 允许的外部标识符

下表列出了允许在公共 系统 标识符 [xml] 中使用的文档类型声明。 [xml]

这些外部标识符 MAY 仅可用于具有所列媒体类型 [rfc2046] 的出版资源,这些媒体类型在其清单声明中指定。(更多 信息请参阅 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. viewport meta 标签

C.1 引言

本节为非规范性内容。

由于 EPUB 3 早期版本中使用的 viewport meta 标签的 Safari HTML 定义不是一个正式承认的标准,本规范定义了一种 基本语法,以允许为 XHTML 固定布局文档表达 宽度和高度尺寸

此语法的语法形式也受到 viewport meta 标签解析算法的影响,如 [css-viewport-1] 中所定义。

该语法有意尽可能保持通用,因为定义所有可能的属性和值不在本规范范围内。 它只定义了属性和值对的基本要求,以及表达式之间可能的分隔符。

C.2 语法

对于 XHTML 固定布局文档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] 之后 (即,阅读 系统去除前导和尾随空白,并将属性内所有多个空白实例压缩为单个空格之后)。任何空白字符 [xml] MAY 包含在创作的标签中,只要结果对此 定义有效。

虽然 [html] 依赖于 [infra] 的空白定义,但 Form Feed(U+000C) 字符根据 [xml] 定义并不是有效空白。 它不能用于 XML 语法(即 XHTML 内容文档)。

对于 [html] 语法允许在 meta 元素上使用的任何其他属性,没有限制。

有关指定 heightwidth 属性 及其预期值的更多信息,请参阅 7.3.2 固定布局文档尺寸

虽然 viewport meta 标签允许使用除 heightwidth 之外的属性,也允许省略 heightwidth 的值,但强烈不建议这样使用。设置其他 属性可能会对固定布局文档的呈现产生意外后果。

D. 词汇表

本附录定义了一组通用机制,本规范中的属性可通过这些机制引用 词汇表中的术语。它还定义了供这些属性使用的 EPUB 特定词汇表。

D.1 属性字段定义

词汇表定义表中的字段具有以下隐含要求:

允许值

使用 [xmlschema-2] 数据类型指定 REQUIRED 的值类型。 数据类型使用 xsd: 前缀声明。

适用于

指定该属性 MAY 指定于哪些出版资源类型。

此字段出现在 properties 属性中使用的属性上。

基数

指定该属性 MAY 被指定的次数,无论是全局指定,还是附加到 另一个元素或属性上。

最小基数为一的属性 MUST 被指定。

描述

描述该属性的用途,并指定必须遵循的任何附加用法要求。

示例

提供非规范性用法示例。

扩展

标识该属性 MAY 与哪些元数据关联。

此字段出现在定义主表达式 和子表达式以及关系的属性上。

名称

指定属性在元数据中出现时 MUST 使用的名称。

D.2 Meta 属性词汇表

此词汇表中的属性可用于 meta 元素的 property 属性。

除非其“扩展”字段中另有说明,本节中定义的属性用于 定义子表达式:换句话说,携带本节中定义属性的 meta 元素 MUST 具有一个 refines 属性,用于引用被增强的资源或表达式。

用于引用这些属性的前缀 URL 是 http://idpf.org/epub/vocab/package/meta/#

D.2.1 alternate-script

名称: alternate-script
描述:

alternate-script 属性以不同语言和/或文字提供 关联属性值的替代表达。 alternate-script 属性及其关联属性的语言标签 — 由 它们各自作用域内的 xml:lang 属性表达 — MUST NOT 相同。

此属性通常附加到 creatortitle 属性,以用于国际化目的。

允许值: xsd:string
基数: zero or more
扩展: 所有属性。

D.2.2 authority

名称: authority
描述:

authority 属性标识被引用元素的值所来源的系统或方案。

允许值: xsd:string

IDPF EPUB 3 工作组维护了一个用于此属性的主题权威机构注册表。本工作组 不再 维护该注册表。

基数: zero or one
扩展: dc:subject

D.2.3 belongs-to-collection

名称: belongs-to-collection
描述:

belongs-to-collection 属性标识 EPUB 出版物 所属合集的名称。EPUB 出版物 MAY 属于一个或多个 合集。

也可以使用 refines 属性链接这些属性,以指示某个 合集本身 是另一个合集的成员。

每个合集实例 SHOULD 使用 dcterms:identifier 属性提供唯一标识符。这将允许阅读系统 组织合集并避免命名冲突(例如,无关的合集可能共享相似 名称,或一个合集的不同版本可能被发布)。

合集 MAY 通过附加 collection-type 属性更精确地定义其性质。

EPUB 出版物在合集中的位置 MAY 通过 附加 group-position 属性提供。

允许值: xsd:string
基数: zero or more
扩展: 适用于 EPUB 出版物,并可细化自身的其他实例。

D.2.4 collection-type

名称: collection-type
描述:

collection-type 属性指示合集的形式或性质。

collection-type 值来自代码列表或其他正式 枚举时,SHOULD 附加 scheme 属性以标识其 来源。

当未指定 scheme 时,本规范还定义以下合集类型:

series

一系列相关作品,它们被正式标识为一个组, 通常是开放式的,作品随时间单独发行。

set

有限的作品集合,它们共同构成一个单一的智力 单元,通常一起发行并可作为一个单元销售。

虽然阅读 系统不必支持这些值,但指定它们 提供了以更有意义方式对相关 EPUB 出版物进行分组的选项。

允许值: xsd:string
基数: zero or one
扩展: belongs-to-collection

D.2.5 display-seq

名称: display-seq
描述:

display-seq 属性指示当前属性相对于相同元数据属性 显示时的数字位置。

此属性仅适用于尚未定义优先规则的情况 (例如,creator 根据其 在文档顺序中的出现位置获得优先级)。

允许值: xsd:unsignedInt
基数: zero or one
扩展: 所有属性。

D.2.6 file-as

名称: file-as
描述: file-as 属性提供用于排序的关联 属性的规范化形式。
允许值: xsd:string
基数: zero or one
扩展: 所有属性。

D.2.7 group-position

名称: group-position
描述:

group-position 属性指示 EPUB 出版物相对于属于同一组的 其他作品(无论是否全都是 EPUB 出版物)排序时的数字位置。

group-position 属性可以附加到建立组的任何元数据 属性,但它通常与 belongs-to-collection 属性相关联。

一个 EPUB 出版物可以属于多个组。

允许值: 一个 xsd:unsignedInt,或一系列以小数点分隔的数字(例如 12.2.1)。
基数: zero or one
扩展: 所有属性。

D.2.8 identifier-type

名称: identifier-type
描述:

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

identifier-type 值来自代码列表或其他正式 枚举时,SHOULD 附加 scheme 属性以标识其 来源。

允许值: xsd:string
基数: zero or one
扩展: dc:identifier, dc:source

D.2.9 pageBreakSource

名称: pageBreakSource
描述:

EPUB 出版物中分页符标记的来源 提供唯一标识符。

当标识符符合公认方案(例如 ISBN)时, 建议使用 URN 作为值。

如果该来源不存在唯一标识符,建议使用能尽可能明确标识来源的文本 描述(例如文字 处理文档的标题)。

如果分页符标记是 EPUB 出版物独有的(例如 仅数字版),则 MUST 指定值 “none”。

允许值: xsd:string
基数: 当出版物包含页码列表和/或分页符标记时正好一个, 否则 为 0。
扩展: 适用于 EPUB 出版物。不扩展其他属性。

pageBreakSource 属性取代 source-of 属性,用于标识 EPUB 出版物静态分页的来源。

有关如何提供可访问页面导航的信息,请参阅 [epub-a11y-tech-11]。

D.2.10 role

名称: role
描述:

role 属性描述 creatorcontributorpublisher 在 EPUB 出版物创作中的角色。

role 值来自代码列表或其他正式 枚举时,SHOULD 附加 scheme 属性以标识其 来源。

为个人或组织分配多个角色时,应将每个角色关联到 单独的 meta 元素中,并确保元素的文档顺序 反映所扮演角色的重要性(即,遇到的第一个 meta 元素 包含最重要的角色)。

允许值: xsd:string
基数: zero or more
扩展: dc:contributor, dc:creator, dc:publisher

D.2.11 source-of

不再建议在 EPUB 出版物中使用 source-of 属性。要指示 EPUB 出版物的分页来源,请参阅 pageBreakSource 属性定义

由于已有大量 EPUB 出版物使用 source-of 属性,因此该属性不会被正式弃用, 但建议将其视为已弃用。有关其用法的信息,请参阅 [epub-33] 中的 source-of 属性 定义

D.2.12 term

名称: term
描述:

term 属性提供主题代码。

允许值: xsd:string
基数: zero or one
扩展: dc:subject

D.2.13 title-type

名称: title-type
描述:

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

title-type 值来自代码列表或其他正式 枚举时,SHOULD 附加 scheme 属性以标识其 来源。当未指定 scheme 时,阅读系统 SHOULD 识别以下标题类型值: mainsubtitleshortcollectioneditionexpanded

允许值: xsd:string
基数: zero or one
扩展: dc:title

D.2.14 示例

D.4 包呈现词汇表

用于引用这些属性的前缀 URL 是 http://www.idpf.org/vocab/rendition/#

rendition:” 前缀保留用于 包呈现属性,并且不必在包文档中声明。

D.4.1 布局控制

D.4.1.1 rendition:layout
名称: rendition:layout
描述:

rendition:layout 属性指定 EPUB 出版物 是可重排、预分页还是卷动。

对于可重排和预分页出版物,全局布局 MAY 针对单个 EPUB 内容 文档覆盖

允许值:

MUST 为以下值之一:

reflowable

内容不是预分页的(即阅读 系统在呈现时可以应用 动态分页)。默认值。

pre-paginated

内容是预分页的(即阅读系统在呈现时为每个书脊 itemref 精确生成一页)。

roll

内容是卷动的(即阅读系统将每个书脊 itemref 的宽度适配到视口,并在 连续卷动中显示它们,且没有可见间隙)。

基数: zero or one
扩展: 仅适用于 EPUB 出版物。当存在 refines 属性MUST NOT 使用。
D.4.1.2 布局覆盖
D.4.1.2.1 rendition:layout-pre-paginated
名称: rendition:layout-pre-paginated
描述:

rendition:layout-pre-paginated 属性指示 关联 item 元素中的资源预期以 预分页布局呈现。

应用:

MAY 仅指定于书脊 itemref 元素。

MUST NOT 与同一 properties 属性中的另一个布局覆盖 属性配对。

MUST NOT卷动布局一起指定。

D.4.1.2.2 rendition:layout-reflowable
名称: rendition:layout-reflowable
描述:

rendition:layout-reflowable 属性指示关联 item 元素中的资源预期以 可重排布局呈现。

应用:

MAY 仅指定于书脊 itemref 元素。

MUST NOT 与同一 properties 属性中的另一个布局覆盖 属性配对。

MUST NOT卷动布局一起指定。

D.4.2 合成跨页放置

D.4.2.1 rendition:page-spread-center
名称: rendition:page-spread-center
描述:

rendition:page-spread-center 属性用于禁用 跨页并使书脊项居中。

应用:

MAY 仅指定于书脊 itemref 元素。

MUST NOT 与任何其他带前缀不带前缀的跨页放置 属性配对。

D.4.2.2 rendition:page-spread-left
名称: rendition:page-spread-left
描述:

rendition:page-spread-left 属性是 page-spread-left 属性的别名,用于 将书脊项放置在双页跨页的左侧槽位。

应用:

MAY 仅指定于书脊 itemref 元素。

MAY 与来自书脊属性词汇表page-spread-left 配对,但 MUST NOT 与任何其他带前缀不带前缀的跨页放置 属性配对。

D.4.2.3 rendition:page-spread-right
名称: rendition:page-spread-right
描述:

rendition:page-spread-right 属性是 page-spread-right 属性的别名,用于 将书脊项放置在双页跨页的右侧槽位。

应用:

MAY 仅指定于书脊 itemref 元素。

MAY 与来自书脊属性词汇表page-spread-right 配对,但 MUST NOT 与任何其他带前缀不带前缀的跨页放置 属性配对。

D.5 自定义呈现属性

自定义属性和书脊覆盖可包含在包文档中,以 解决特定阅读 系统的开发者所定义的、特定于这些阅读系统的呈现问题。

唯一限制是,此类属性 MUST NOT 使用 rendition: 前缀定义, 并且 MUST NOT 在行为上与包 呈现词汇表中的属性冲突。

如果多个独立阅读系统需要使用扩展,首选方法是通过修订本标准来 扩展包呈现词汇表。

D.6 清单属性词汇表

此词汇表中的属性可用于清单 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 从资源中被引用时 MAY 被设置 (例如从 [html] imgobjectiframe 元素引用)。

适用于: XHTML 内容 文档;对于SVG 内容文档,该值是隐含的。
基数: Zero or more

D.6.7 switch

名称: switch
描述:

switch 属性指示所描述的出版 资源 包含一个或多个已弃用的 epub:switch 元素实例。

适用于: XHTML 内容 文档
基数: Zero or more

D.7 书脊属性词汇表

此词汇表中的属性可用于书脊 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 属性是此属性的别名。有关其用法的更多信息,请参阅 6.3.1.1 合成跨页

D.7.2 page-spread-right

名称: page-spread-right
描述:

page-spread-right 属性指示关联 item 元素的 EPUB 内容文档 的第一页表示双页跨页的右侧。

rendition:page-spread-right 属性是此属性的别名。有关其用法的更多信息,请参阅 6.3.1.1 合成跨页

D.7.3 示例

D.8 媒体覆盖词汇表

此词汇表中的属性可用于 meta 元素的 property 属性。

用于引用这些属性的前缀 URL 是 http://idpf.org/epub/vocab/overlays/#

前缀 “media:保留用于 此词汇表中的属性,并且不必在包文档中声明。

D.8.1 active-class

名称: active-class
描述: 要应用于当前正在播放的 EPUB 内容文档 元素的 CSS 类名。
允许值: xsd:string
基数: Zero or one
示例: <meta property="media:active-class">-epub-media-overlay-active</meta>

D.8.2 duration

名称: duration
描述: 整个演示或特定媒体覆盖 文档的持续时间。 指定的持续时间计入创作时已知的音频片段,因此 不包括来自外部资源的实时流和语音合成。
允许值:

MUST 是 [smil3] 时钟值

基数: 对于 EPUB 出版物以及 每个媒体覆盖 文档,正好一个。
示例: <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
描述: 播放处于活动状态时,要应用于 EPUB 内容 文档的 文档元素的作者定义 CSS 类名。
允许值: xsd:string
基数: Zero or one
示例: <meta property="media:playback-active-class">-epub-media-overlay-playing</meta>

E. 过时特性

E.1 陈旧特性

陈旧特性是指 未被弃用,但也并非为 EPUB 3 阅读系统使用而设计的特性,或者 理想情况下本应被弃用,只是 因为这样会使大量现有 EPUB 出版物失效。

EPUB 出版物 MAY 包含 本节定义的陈旧特性,但其使用方式 MUST 符合其引用的定义。

出版资源
开放容器格式(OCF)
  • 字体混淆 [epub-33]

    注意

    NIST 建议到 2030 年底前逐步淘汰 SHA-1 算法 [fips-180-4]。 由于字体混淆依赖 SHA-1,出版维护工作组不打算在该日期之后继续支持 EPUB 出版物中的 字体混淆,不过阅读系统仍必须继续支持对现有 EPUB 出版物 进行去混淆。

    存在更好的字体保护方法。例如,[woff] 和 [woff2] 字体都允许 嵌入许可信息,并通过字体表压缩提供一定程度的 保护。使用远程托管字体也 允许进行字体子集化。

合集
注意

当 EPUB 3 由 IDPF 维护时,曾开发出若干 依赖 collection 元素的规范。由于阅读系统缺乏采用和实现, 这些规范不再维护,也不再建议使用该元素。

遗留特性

EPUB 3 阅读系统会忽略这些特性。它们分别由 meta 元素、 landmarks navtoc nav 取代。

保留这些特性只是为了在一定程度上向后兼容 仅支持 EPUB 2 的阅读系统。由于这类阅读系统现在已经很少, 包含这些特性的价值有限。

包呈现词汇表
带前缀的 CSS 属性
注意

EPUB 3 最初包含这些带前缀的属性,是因为许多与 世界语言相关的 CSS 特性当时尚未成熟。现在保留它们只是为了确保 使用这些前缀创作的内容能够向后兼容。工作组建议 一旦 CSS 支持允许,就尽快切换到不带前缀的版本,因为这些带前缀的 属性预计不会在 EPUB 的下一个主要版本中继续维护。

工作组建议 EPUB 符合性检查器不要仅因 EPUB 出版物中存在 陈旧特性而发出警告。只有在某个特性不符合 其定义或以其他方式违反用法要求时才发出警告。

E.2 弃用特性

弃用特性是指 在阅读 系统中支持有限或不受支持,和/或在EPUB 出版物中使用有限或不使用的特性。

以下弃用特性 SHOULD NOT 使用。使用时,其使用方式 MUST 符合其 引用的定义。

包文档
XHTML 内容文档
词汇关联机制
Meta 属性词汇表
链接关系词汇表
包呈现词汇表
带前缀的 CSS 属性

工作组建议 EPUB 符合性检查器在 EPUB 出版物中遇到 弃用特性时就其存在发出警告。

F. 模式

本节为非规范性内容。

F.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 模式的多遍验证替代。

这些模式的更新和修正可能发生在本规范的正式修订之外。 因此,它们随时可能发生变化。

F.2 OCF 模式

F.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] 的处理器。

F.2.2 encryption.xml 的模式

encryption.xml 文件的模式包含在 [xmlsec-rngschema-20130411] 中。

F.2.3 signatures.xml 的模式

signatures.xml 文件的模式包含在 [xmlsec-rngschema-20130411] 中。

F.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 模式的多遍验证替代。

G. 媒体类型注册

G.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 内容传输编码。更多详情请参阅 [rfc7303]。

安全注意事项:

包文档包含符合 XML 1.0 规范的格式良好的 XML。

显然,可以创作恶意文件,例如包含格式错误数据的文件。 大多数 XML 解析器会通过严格强制 符合性来保护自身免受此类攻击。

所有读取包文档的处理器都需要严格检查 所检索数据的大小和有效性。

EPUB 3 规范目前没有在包文档格式内提供加密、签名或 身份验证机制。

互操作性注意事项:

无。

已发布规范:

此媒体类型注册用于 EPUB 包文档,如位于 https://www.w3.org/TR/epub/ 的 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 格式电子书的分发。

附加信息:
魔数:

none

文件扩展名:

.opf

Macintosh 文件类型代码:

TEXT

片段标识符:

EPUB 规范片段标识符是为 EPUB 出版物定义的自定义片段标识符。它们可用于 引用为出版物定义的任何 出版资源中的任意内容。 这些标识符定义于 https://idpf.org/epub/linking/cfi/

用于进一步信息联系的人员和电子邮件地址:

Publishing Maintenance Working Group (epub-maintenance@w3.org)

预期用途:

COMMON

作者/变更控制者:

World Wide Web Consortium (W3C)

G.2 application/epub+zip 媒体类型

本附录为 EPUB 开放容器格式(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 开放容器格式(OCF),如位于 https://www.w3.org/TR/epub/ 的 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/

用于进一步信息联系的人员和电子邮件地址:

Publishing Maintenance Working Group (epub-maintenance@w3.org)

预期用途:

COMMON

作者/变更控制者:

World Wide Web Consortium (W3C)

H. 索引

H.1 本规范定义的术语

H.2 通过引用定义的术语

I. 变更日志

本节为非规范性内容。

请注意,此变更日志仅标识自 EPUB 3.3 以来的实质性变更 — 即可能影响 EPUB 出版物符合性的变更。

有关所有已处理问题的列表,请参阅工作组的问题跟踪器

EPUB 3.3 以来的实质性变更

J. 致谢

本节为非规范性内容。

出版维护工作组希望特别致谢那些我们一路走来失去的杰出 贡献者和朋友。特别是,若没有 Garth Conboy 的远见、知识和超乎寻常的善良性情, EPUB(不仅是 EPUB 3)不会成为 今天的样子。同样,Ben Schroeter 将永远因其不懈努力而被铭记,他帮助 EPUB 发挥其作为普遍可访问 格式的潜力。我们永远感念他们的贡献。

以下出版维护工作组成员为本规范的制定作出了贡献:

K. 参考文献

K.1 规范性参考文献

[av1-avif]
AV1 Image File Format (AVIF). Alliance for Open Media. Final Deliverable. URL: https://aomediacodec.github.io/av1-avif/
[bcp47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. 2009 年 9 月。Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[bidi]
Unicode Bidirectional Algorithm. Manish Goregaokar मनीष गोरेगांवकर; Robin Leroy. Unicode Consortium. 2025 年 8 月 13 日. Unicode Standard Annex #9. URL: https://www.unicode.org/reports/tr9/tr9-51.html
[css-values]
CSS Values and Units Module Level 4. Tab Atkins Jr.; Elika Etemad. W3C. 2024 年 3 月 12 日。W3C 工作草案。URL: https://www.w3.org/TR/css-values-4/
[css-writing-modes-3]
CSS Writing Modes Level 3. Elika Etemad; Koji Ishii. W3C. 2019 年 12 月 10 日。W3C 推荐标准。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. 2011 年 6 月 7 日。W3C 推荐标准。URL: https://www.w3.org/TR/CSS2/
[datetime]
Date and Time Formats. Misha Wolf. W3C. 1998 年 8 月 27 日。W3C 工作组说明。URL: https://www.w3.org/TR/NOTE-datetime
[dcterms]
DCMI Metadata Terms. DCMI Usage Board. DCMI. 2020 年 1 月 20 日。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-33]
EPUB 3.3. Ivan Herman; Matt Garrish; Dave Cramer. W3C. 2026 年 1 月 13 日。W3C 推荐标准。URL: https://www.w3.org/TR/epub-33/
[epub-a11y-12]
EPUB Accessibility 1.2. Matt Garrish; George Kerscher; Charles LaPierre; Gregorio Pellegrino; Avneesh Singh. W3C. 2026 年 5 月 29 日。W3C 工作 草案。URL: https://www.w3.org/TR/epub-a11y-12/
[epub-rs-34]
EPUB Reading Systems 3.4. Matt Garrish; Ivan Herman. W3C. 2026 年 5 月 29 日。W3C 工作草案。URL: https://www.w3.org/TR/epub-rs-34/
[epub-ssv-11]
EPUB 3 Structural Semantics Vocabulary 1.1. Ivan Herman; Matt Garrish. W3C. 2026 年 5 月 28 日。W3C 工作组说明。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. 2014 年 6 月 26 日。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. 2019 年 5 月 8 日。URL: https://www.w3.org/publishing/epub32/epub-packages.html
[epubpublications-30]
EPUB Publications 3.0. Markus Gylling; William McCoy; Matt Garrish. IDPF. 2011 年 10 月 11 日。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. 2014 年 6 月 26 日。URL: https://idpf.org/epub/301/spec/epub-publications-20140626.html
[gif]
Graphics Interchange Format. CompuServe Incorporated. 1990 年 7 月 31 日。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. 2015 年 3 月 17 日。W3C 推荐标准。URL: https://www.w3.org/TR/html-rdfa/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. 现行标准. URL: https://infra.spec.whatwg.org/
[iso18181-1]
Information technology — JPEG XL image coding system — Part 1: Core coding system. ISO/IEC. 2024 年 7 月。Published. URL: https://www.iso.org/standard/85066.html
[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
[its20]
Internationalization Tag Set (ITS) Version 2.0. David Filip; Shaun McCance; David Lewis; Christian Lieske; Arle Lommel; Jirka Kosek; Felix Sasaki; Yves Savourel. W3C. 2013 年 10 月 29 日。W3C 推荐标准。URL: https://www.w3.org/TR/its20/
[jpeg]
JPEG File Interchange Format. Eric Hamilton. C-Cube Microsystems. Milpitas, CA, USA. 1992 年 9 月。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. 2014 年 4 月 10 日。W3C 推荐标准。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. 1993 年 8 月。Published. URL: https://www.iso.org/standard/22412.html
[mp4]
Information technology — Coding of audio-visual objects — Part 14: MP4 file format. ISO/IEC. 2020 年 1 月。 Published. URL: https://www.iso.org/standard/79110.html
[mpeg4-audio]
Information technology — Coding of audio-visual objects — Part 3: Audio. ISO/IEC. 2019 年 12 月。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. 2010 年 9 月 4 日。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. 2025 年 6 月 24 日。W3C 推荐标准。URL: https://www.w3.org/TR/png-3/
[rdfa-core]
RDFa Core 1.1 - Third Edition. Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman et al. W3C. 2015 年 3 月 17 日。W3C 推荐标准。URL: https://www.w3.org/TR/rdfa-core/
[rfc2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed; N. Borenstein. IETF. 1996 年 11 月。Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997 年 3 月。Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[rfc2397]
The "data" URL scheme. L. Masinter. IETF. 1998 年 8 月。Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
[rfc4329]
Scripting Media Types. B. Hoehrmann. IETF. 2006 年 4 月。Informational. URL: https://www.rfc-editor.org/rfc/rfc4329
[rfc7303]
XML Media Types. H. Thompson; C. Lilley. IETF. 2014 年 7 月。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. 2016 年 4 月。Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7845
[rfc8089]
The "file" URI Scheme. M. Kerwin. IETF. 2017 年 2 月。Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8089
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017 年 5 月。Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[rfc8251]
Updates to the Opus Audio Codec. JM. Valin; K. Vos. IETF. 2017 年 10 月。Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8251
[rfc9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. 2022 年 6 月。Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[rfc9649]
WebP Image Format. J. Zern; P. Massimino; J. Alakuijala. IETF. 2024 年 11 月。Informational. URL: https://www.rfc-editor.org/rfc/rfc9649
[smil3]
Synchronized Multimedia Integration Language (SMIL 3.0). Dick Bulterman. W3C. 2008 年 12 月 1 日。W3C 推荐标准。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. 2025 年 7 月 30 日。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/
[watermark-privacy]
Privacy Principles for Digital Watermarking Version 1.0. Center for Democracy & Technology. 2008 年 5 月。URL: https://cdt.org/wp-content/uploads/copyright/20080529watermarking.pdf
[woff]
WOFF File Format 1.0. Jonathan Kew; Tal Leming; Erik van Blokland. W3C. 2012 年 12 月 13 日。W3C 推荐标准。URL: https://www.w3.org/TR/WOFF/
[woff2]
WOFF File Format 2.0. Vladimir Levantovsky. W3C. 2024 年 8 月 8 日。W3C 推荐标准。URL: https://www.w3.org/TR/WOFF2/
[xinclude]
XML Inclusions (XInclude) Version 1.0 (Second Edition). Jonathan Marsh; David Orchard; Daniel Veillard. W3C. 2006 年 11 月 15 日。 W3C 推荐标准。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. 2008 年 11 月 26 日。W3C 推荐标准。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. 2009 年 12 月 8 日。 W3C 推荐标准。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. 2008 年 6 月 10 日。W3C 推荐标准。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. 2013 年 4 月 11 日。W3C 推荐标准。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. 2013 年 4 月 11 日。W3C 推荐标准。URL: https://www.w3.org/TR/xmlenc-core1/
[xmlenc-decrypt]
Decryption Transform for XML Signature. Merlin Hughes; Takeshi Imamura; Hiroshi Maruyama. W3C. 2002 年 12 月 10 日。W3C 推荐标准。URL: https://www.w3.org/TR/xmlenc-decrypt/
[xmlschema-2]
XML Schema Part 2: Datatypes Second Edition. Paul V. Biron; Ashok Malhotra. W3C. 2004 年 10 月 28 日。W3C 推荐标准。 URL: https://www.w3.org/TR/xmlschema-2/
[zip]
.ZIP File Format Specification. 2020 年 7 月 15 日。Final. URL: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

K.2 资料性参考文献

[audiobooks]
Audiobooks. Wendy Reid; Matt Garrish. W3C. 2020 年 11 月 10 日。W3C 推荐标准。URL: https://www.w3.org/TR/audiobooks/
[charmod-norm]
Character Model for the World Wide Web: String Matching. Addison Phillips et al. W3C. 2021 年 8 月 11 日。W3C 工作组说明。 URL: https://www.w3.org/TR/charmod-norm/
[css-speech]
CSS Speech Module Level 1. Léonie Watson; Elika Etemad. W3C. 2023 年 2 月 14 日。CRD. URL: https://www.w3.org/TR/css-speech-1/
[css-viewport-1]
CSS Viewport Module Level 1. W3C. URL: https://drafts.csswg.org/css-viewport/
[csssnapshot]
CSS Snapshot. URL: https://www.w3.org/TR/CSS/
[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. 2025 年 3 月 13 日。W3C 工作组说明。URL: https://www.w3.org/TR/epub-a11y-tech-11/
[epub-multi-rend-11]
EPUB 3 Multiple-Rendition Publications 1.1. Matt Garrish. W3C. 2026 年 1 月 20 日。W3C 工作组说明。URL: https://www.w3.org/TR/epub-multi-rend-11/
[epub-overview-34]
EPUB 3 Overview. Matt Garrish; Ivan Herman. W3C. 2026 年 3 月 9 日。W3C 工作组说明。URL: https://www.w3.org/TR/epub-overview-34/
[epub-tts-10]
EPUB 3 Text-to-Speech Enhancements 1.0. Matt Garrish. W3C. 2025 年 8 月 28 日。W3C 工作组说明。URL: https://www.w3.org/TR/epub-tts-10/
[fetch]
Fetch Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://fetch.spec.whatwg.org/
[fips-180-4]
FIPS PUB 180-4: Secure Hash Standard (SHS). U.S. Department of Commerce/National Institute of Standards and Technology. 2015 年 8 月。National Standard. URL: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
[geolocation]
Geolocation. Marcos Caceres; Reilly Grant. W3C. 2026 年 3 月 26 日。W3C 候选推荐标准。URL: https://www.w3.org/TR/geolocation/
[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
[html-aria]
ARIA in HTML. Scott O'Hara; Patrick Lauke. W3C. 2026 年 4 月 15 日。W3C 推荐标准。URL: https://www.w3.org/TR/html-aria/
[international-specs]
Internationalization Best Practices for Spec Developers. Richard Ishida; Addison Phillips. W3C. 2025 年 8 月 8 日。W3C 工作组说明。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. 2020 年 7 月 16 日。W3C 推荐标准。URL: https://www.w3.org/TR/json-ld11/
[mediaqueries-3]
Media Queries Level 3. Florian Rivoal. W3C. 2024 年 5 月 21 日。W3C 推荐标准。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. 2005 年 5 月 1 日。URL: https://www.oasis-open.org/committees/download.php/12572/OpenDocument-v1.0-os.pdf
[pronunciation-lexicon]
Pronunciation Lexicon Specification (PLS) Version 1.0. Paolo Baggia. W3C. 2008 年 10 月 14 日。W3C 推荐标准。URL: https://www.w3.org/TR/pronunciation-lexicon/
[push-api]
Push API. Marcos Caceres; Kagami Rosylight. W3C. 2025 年 12 月 1 日。W3C 工作草案。URL: https://www.w3.org/TR/push-api/
[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. 2005 年 1 月。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. 2007 年 4 月。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. 2011 年 11 月。Informational. URL: https://www.rfc-editor.org/rfc/rfc6386
[rfc8141]
Uniform Resource Names (URNs). P. Saint-Andre; J. Klensin. IETF. 2017 年 4 月。Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8141
[schema-org]
Schema.org. W3C Schema.org Community Group. W3C. 6.0. URL: https://schema.org/
[ssml]
Speech Synthesis Markup Language (SSML) Version 1.1. Daniel Burnett; Zhi Wei Shuang. W3C. 2010 年 9 月 7 日。W3C 推荐标准。URL: https://www.w3.org/TR/speech-synthesis11/
[uaag20]
User Agent Accessibility Guidelines (UAAG) 2.0. James Allan; Greg Lowney; Kimberly Patch; Jeanne F Spellman. W3C. 2015 年 12 月 15 日。W3C 工作组说明。URL: https://www.w3.org/TR/UAAG20/
[uax44]
Unicode Character Database. Ken Whistler. Unicode Consortium. 2025 年 8 月 27 日。Unicode Standard Annex #44. URL: https://www.unicode.org/reports/tr44/tr44-36.html
[wasm-core-2]
WebAssembly Core Specification. Andreas Rossberg. W3C. 2026 年 5 月 27 日。CRD. URL: https://www.w3.org/TR/wasm-core-2/
[wcag2]
Web Content Accessibility Guidelines (WCAG) 2. W3C. URL: https://www.w3.org/TR/WCAG2/
[webvtt]
WebVTT: The Web Video Text Tracks Format. Gary Katsevman. W3C. 2026 年 5 月 20 日。CRD. URL: https://www.w3.org/TR/webvtt1/
[xhr]
XMLHttpRequest Standard. Anne van Kesteren. WHATWG. 现行标准. URL: https://xhr.spec.whatwg.org/
[xhtml11]
XHTML™ 1.1 - Module-based XHTML - Second Edition. Masayasu Ishikawa; Shane McCarron. W3C. 2018 年 3 月 27 日。W3C 推荐标准。URL: https://www.w3.org/TR/xhtml11/
[xmlbase]
XML Base (Second Edition). Jonathan Marsh; Richard Tobin. W3C. 2009 年 1 月 28 日。W3C 推荐标准。URL: https://www.w3.org/TR/xmlbase/
[xmlsec-rngschema-20130411]
XML Security RELAX NG Schemas. Murata Makoto; Frederick Hirsch. W3C. 2013 年 4 月 11 日。W3C 工作组 说明。URL: https://www.w3.org/TR/2013/NOTE-xmlsec-rngschema-20130411/