Copyright © 1999-2026 International Digital Publishing Forum and World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
EPUB® 3 定义了一种用于数字出版物和文档的分发与交换格式。EPUB 格式提供了一种表示、打包和编码结构化且语义增强的 Web 内容 — 包括 HTML、CSS、SVG 和其他资源 — 的方法,以便在单文件 容器中分发。
本规范定义了 EPUB 出版物的创作要求,并代表了该标准的第三次 主要修订。
本节描述了本文档在发布时的 状态。当前 W3C 出版物以及本技术报告的最新修订版列表可以在 W3C 标准和草案 索引中找到。
本文档由 Publishing Maintenance Working Group 作为 工作草案发布,并使用 推荐 标准轨道。
作为 工作草案发布并不意味着 获得 W3C 及其成员的认可。
这是一份草案文档,可能随时被其他 文档更新、替换或废弃。除作为正在进行的工作外,不应引用本文档。 此即将发布的推荐标准未来更新可能会纳入 新特性。
本文档由一个 依据 W3C 专利 政策运作的小组制作。 W3C 维护一份 任何专利披露的公开列表, 这些披露与该小组的交付物 相关;该页面还包含 披露专利的说明。任何实际 知悉某项专利且认为该专利包含 必要权利要求的个人, 必须依照 W3C 专利政策第 6 节披露相关信息。
本文档受 2025 年 8 月 18 日 W3C 流程文档管辖。
本节为非规范性内容。
EPUB 3 已被广泛采用为数字图书(电子书)的格式,本次修订继续 增强该格式的能力,以便更好地支持更广泛的出版需求, 包括复杂布局、富媒体和交互性,以及全球排版特性。预期 出版商会将 EPUB 3 格式用于广泛的内容, 包括图书、杂志,以及教育、专业和科学出版物。
本规范代表 EPUB 3 的核心,并包括 EPUB 出版物 — 即该标准产物 — 的符合性要求。构成 EPUB 3 的其他 规范如下:
EPUB 3 阅读系统 [epub-rs-34] — 定义 EPUB 阅读系统 — 即使用 EPUB 出版物 并向用户呈现其内容的应用程序 — 的处理 要求。
EPUB 可访问性 [epub-a11y-12] — 定义 EPUB 出版物的可访问性 符合性和发现要求。
这些规范代表被正式认可为属于 EPUB 3 的列表,并包含 作为该标准一部分以规范方式引用的功能。扩展 规范的发展会定期向 EPUB 出版物添加新功能。在本 规范中未被正式认可的、在该标准核心修订之外定义的特性和功能, 仍然可用于 EPUB 出版物并在阅读 系统中实现。
非规范性的 EPUB 3 概述 [epub-overview-34] 提供了 EPUB 3 的一般性介绍。与上一版本相比的技术变更列表也 可在 变更日志中获得。
本节为非规范性内容。
本节通过其定义的核心产品: 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 出版物并不 需要阅读该文档,但了解阅读系统如何 呈现内容有助于制作面向用户实现最佳呈现的出版物。
本节为非规范性内容。
EPUB 3 所构建于其上的技术正在不断演进。有些通常被称为 “现行”或“常青”标准,可能每天都会变化,其对 EPUB 出版物有效性的影响是即时的。其他标准更新频率较低,其变更可能要等到 EPUB 3 进行新的修订后才会影响 EPUB 出版物。
在所有情况下,以前有效的特性都有可能变得过时(例如,由于 缺乏支持或因为安全问题)。新特性也可能在 阅读系统中广泛支持之前就已经可用。
因此,建议只使用获得广泛支持的特性,并保持 EPUB 符合性检查器为最新状态。
[html] 标准持续演进 — 不再有 带版本号的发布。 该标准反过来会引用各种同样持续演进的技术,例如 MathML、SVG、CSS 和 JavaScript。
这种方法的好处是 EPUB 3 始终与 Web 保持同步,但这也意味着 本规范不会跟踪 HTML 及其所引用技术的变更。必须 分别监控这些标准,以确保创作流程保持 最新。
[html] 标准定义了一个单一内容模型,并提供 使用 HTML 语法或 XML 语法表达标签集的规则。但是,EPUB 3 仅允许 使用 XML 语法创作内容文档,这些文档称为 XHTML 内容文档。
本规范定义的 XHTML 配置文件继承 [html] 中关于语义、结构和处理行为的所有定义, 除非另有规定。
本规范不引用 [svg] 的特定版本,而是使用 无日期 引用。每当该引用存在任何歧义时,最新推荐版本就是 权威引用。
这种方法的好处是 EPUB 3 始终与 SVG 标准保持同步,但 这也意味着本规范不会跟踪 SVG 的变更。必须 分别监控 SVG 标准,以确保创作流程保持最新。
EPUB 3 支持 CSS Working Group Snapshot [csssnapshot] 所定义的 CSS。EPUB 3 还 保留了一些带前缀的 CSS 属性,以确保对全球语言的一致支持。
本规范依赖 [smil3] 的一个子集, 9.3.2.2 媒体叠加文档定义中定义的媒体叠加元素和 属性即由此派生。
本规范引用 [url] 标准,作为与 EPUB 出版物中表达的 URL 相关的术语和处理依据。预计新的和 修订后的 Web 格式会采用该标准,但在此之前,这可能会使本规范与 某些格式的内部要求(例如有效的相对路径)发生冲突,特别是在 国际化 URL 的使用方面。如果某个格式不允许国际化 URL(即 URL 必须符合 [rfc3986] 或更早版本), 则该要求在这些资源中优先适用。
本规范定义了以下 EPUB 3 专用术语。
每个节中某个术语只有第一次出现会链接到其定义。
Codec 指具有内在二进制格式特性的内容,例如为最佳压缩而设计的 视频和音频媒体类型,或提供优化流式传输 能力的内容。
位于 EPUB 容器内的 出版资源,与不在其中的 远程资源相对。
有关资源位置的媒体类型专用规则,请参阅 3.6 资源 位置。
表示 URL [url] 的 根目录, 该根目录表示 OCF 抽象容器。 尽管容器根 URL 是 实现专用的,其属性在 4.2.5 OCF 抽象容器中的 URL中定义。
URL, 指 OCF 抽象容器中的文件或目录,如 4.2.5 OCF 抽象容器中的 URL所定义。
符合 3.2 核心媒体 类型中列出的某个 MIME 媒体类型 [rfc2046] 的 出版资源,因此不要求提供 回退(参见 外来 资源)。
“core media type resource”这一称谓仅在资源用于 EPUB 内容文档和 外来内容文档的呈现时适用。例如,核心媒体类型 资源不能在 书脊中使用而不提供回退, 除非它同时具有 EPUB 内容文档的媒体类型。
一种应用程序,用于根据本规范验证 EPUB 出版物的要求,并报告其符合性。
在 4.3 OCF ZIP 容器中定义的、用于 EPUB 出版物的基于 ZIP 的打包和分发格式。
EPUB container 和 OCF ZIP container 是同义词。
从 书脊或 清单回退链引用的 出版资源, 且符合 XHTML 或 SVG 内容文档定义之一。
EPUB 内容文档包含 EPUB 出版物的全部或部分内容(即 文本、视觉和/或音频内容)。
EPUB 出版物可以从书脊引用 EPUB 内容文档,而无需提供 回退。
有关更多信息,请参阅 5.7.1
manifest
元素。
XHTML 内容文档的一种特化, 包含可供人类和机器读取的 全局导航信息。EPUB 导航文档符合 8. EPUB 导航 文档中表达的约束。
由一组相互关联的 资源组成,并打包在 EPUB 容器中的逻辑文档实体。
EPUB 出版物通常表示一个单一的智力或艺术作品,但本 规范不限制内容的性质。
一种系统,以符合本规范的方式处理 EPUB 出版物, 并向用户呈现。
包文档中定义 EPUB 内容文档和 外来内容文档有序列表的节。此列表 表示 EPUB 出版物的默认阅读 顺序。
有关更多信息,请参阅 5.8.1
spine
元素。
豁免资源是一类特殊的 出版资源,它们不要求 回退,并且阅读系统不必 支持其呈现。
有关更多信息,请参阅 3.4 豁免 资源。
OCF 抽象容器内任何类型文件的名称,无论是目录还是 目录中的 文件。
文件或目录的文件路径,是其相对于 根目录的完整路径,如 4.2.4 推导文件路径中指定的算法所定义。
从 书脊
itemref
元素引用的任何 出版资源,或
清单回退链中不是 EPUB 内容文档的资源。
当外来内容文档从书脊 itemref 元素引用时,它
要求有一条清单回退链,其中至少包含一个 EPUB 内容文档。
除 XHTML 和 SVG 外,所有 核心媒体类型资源在从书脊直接引用时都是 外来 内容文档。
一种 出版资源,其 MIME 媒体类型 [rfc2046] 与 3.2 核心媒体类型中列出的任何类型都不匹配。外来资源受 3.3 外来资源中定义的回退要求约束。
“foreign resource”这一称谓仅适用于在 EPUB 内容文档和 外来内容文档呈现中使用的资源。
Foreign resource 和 foreign content document 不是可互换的术语。资源在书脊中使用时被视为外来的 类型范围,大于在 EPUB 内容 文档中使用时被视为外来的资源类型范围。
一种 XML 文档,它将 XHTML 内容文档与预录音频 叙述相关联,以提供同步播放体验,如 9.3 媒体叠加所定义。
Non-codec 指因其内部数据结构性质而受益于压缩的内容类型, 例如基于字符串的文件格式(例如 HTML、 CSS 等)。
OCF 抽象容器定义了 OCF ZIP 容器内容的文件系统模型,如 4.2 OCF 抽象 容器所定义。
一种 出版资源,描述 EPUB 出版物的呈现,如 5. 包 文档所定义。包文档承载关于 EPUB 出版物的元信息, 提供资源清单,并定义默认阅读 顺序。
包含内容或说明、并有助于 EPUB 出版物的逻辑和呈现的资源。如果缺少该资源, 阅读系统可能无法 按预期呈现 EPUB 出版物。出版资源示例包括 包文档、EPUB 内容文档、CSS 样式表、 音频、视频、图像、 嵌入字体和脚本。
包文档 清单 必须包含通常必须打包在 EPUB 容器中的所有出版 资源的列表(例外是 3.6 资源位置中列出的资源可以位于 EPUB 容器之外)。
位于 EPUB 容器之外、通常位于 Web 上的 出版资源。
EPUB 容器内的出版资源称为 容器资源。
有关资源位置的媒体类型专用规则,请参阅 3.6 资源 位置。
包含脚本的 EPUB 内容文档,或包含 [html]
form
元素的 XHTML 内容文档。
有关更多信息,请参阅 7.4.2 脚本。
符合 7.2 SVG 内容文档中表达的约束的 EPUB 内容文档。
在设备屏幕上同时呈现两个相邻页面。
符合 7.1 XHTML 内容文档中定义的 [html] 配置文件的 EPUB 内容文档。
EPUB 出版物的主标识符。唯一
标识符是
值,即
unique-identifier 属性在
包文档中指定的
dc:identifier
元素的值。
内容发生重大修订、删节等时,需要新的唯一标识符。
除标记为非规范性的节外,本规范中的所有创作指南、图示、示例和注释均为 非规范性内容。本规范中的其他所有内容均为规范性内容。
本文档中的关键词 MAY、MUST、MUST NOT、OPTIONAL、RECOMMENDED、REQUIRED、SHOULD 和 SHOULD NOT 应按 BCP 14 [RFC2119] [RFC8174] 中所述解释,且仅当它们像这里这样全部 大写出现时才如此解释。
所有注意框、括号中的解释性语句以及算法说明也都是 非规范性内容。
本节为非规范性内容。
对 Dublin Core 元素 [dcterms] 的引用使用 dc: 前缀。该前缀必须
在 包文档中声明,才可有效使用
(xmlns:dc="http://purl.org/dc/elements/1.1/")。
epub 命名空间前缀 [xml-names] 也
会在元素和属性上使用,而不一定总是有显式声明
(xmlns:epub="http://www.idpf.org/2007/ops")。
MUST 至少按如下方式定义其内容的一种呈现:
SHOULD 符合 [epub-a11y-12] 中定义的可访问性要求。
MUST 按 4. 开放 容器格式 (OCF)中定义的方式打包在 EPUB 容器中。
此外,所有出版资源 MUST 遵守 3. 出版 资源中的要求。
本规范的其余部分涵盖具体的符合性细节。
本节为非规范性内容。
由于本规范复杂且 EPUB 出版物中使用的技术数量众多, 建议使用 EPUB 符合性检查器来 验证内容符合性。
EPUBCheck 是出版业实际使用的 EPUB 符合性 检查器,并且随 EPUB 的每个新版本更新。它 集成在许多创作工具中,也可通过替代接口和 其他语言使用(更多信息,请参阅其 Apps and Tools 页面)。
验证 EPUB 出版物时,应确保它们不违反本 规范的要求(由关键词“MUST”、“MUST NOT”和“REQUIRED”标识的做法)。这些类型 的问题通常会导致 EPUB 出版物无法呈现或以不一致的方式呈现。 这些问题通常报告为错误或严重错误。
还应确保 EPUB 出版物不违反本规范的建议 (由关键词“SHOULD”、“SHOULD NOT”和“RECOMMENDED”标识的做法)。未能遵循 这些做法并不会导致 EPUB 出版物无效,但可能导致互操作性 问题以及其他影响用户阅读体验的问题。这些问题通常 报告为警告。
EPUB 出版物的供应商、分销商和其他零售商,在依据 EPUB 符合性检查器 零问题结果接受或拒绝内容之前,需要考虑推荐做法的重要性。 EPUB 出版物在所有情况下无法 遵守推荐做法,可能存在正当理由。
本节为非规范性内容。
EPUB 出版物由许多不同类别的 资源组成,这些类别并非全部 相互排斥。有些资源是 出版资源,有些不是。有些出版 资源默认允许在 书脊中使用,而 其他所有资源都需要回退。 有些资源可用于呈现 EPUB 内容文档,而其他资源只能与回退一起使用。
试图通过阅读每种资源类别的技术定义来理解这些差异 可能很复杂。为了使分类更易理解,本引言使用 不同平面的概念来解释资源如何分组和引用。
这三个平面是:
同一资源可以存在于多个平面上,并会根据本 规范所讨论的平面而被不同地引用。例如,用于呈现 EPUB 内容文档 (位于内容平面)的核心媒体类型资源,如果也列在书脊中(书脊平面), 则也可能是外来 内容文档。
以下各节更详细地描述这些平面。
请参阅 A.1 资源,其中有一个详细示例说明 资源如何适配到不同平面中。
manifest plane 定义 EPUB 出版物的所有资源。它类似于 包文档的 清单, 但包括该列表中不存在的资源。
这一组中的主要资源被称为 出版资源,也就是用于向用户呈现 EPUB 出版物的所有
资源。
manifest
元素必须
包含这些资源的完整列表。
出版资源会根据其在 书脊平面和 内容 平面中的用途进一步分类。
清单平面还包含一组 链接 资源。这些资源与 直接呈现关系较为间接。例如,它们包括元数据记录以及指向外部内容的链接 (例如购买 EPUB 出版物的位置)。
与出版资源不同,它们不会列在包文档清单中(即,因为
它们不是呈现 EPUB 出版物所必需的)。相反,它们在
包文档元数据中的
link
元素中定义。这些元素定义其性质和用途,
类似于清单
item
元素定义出版资源的方式。(从这个意义上说,它们
像是清单的扩展。)
有关链接资源的更多信息,请参阅 5.6.6
link
元素。
清单平面中的资源有时也会按其所在位置进一步划分。 虽然大多数出版资源必须位于 EPUB 容器中(称为 容器资源),但 EPUB 3 允许 音频、视频、字体和脚本数据 资源托管在容器之外。允许这些例外是为了加快 EPUB 出版物的下载和加载,因为这些资源通常很大,并且在 字体的情况下,不是呈现所必需的。当远程托管时,这些出版 资源称为 远程资源。
由于链接资源不是呈现 EPUB 出版物所必需的,因此对其 位置没有要求,因此也不会根据其 位置对它们进行特殊命名。它们可以位于 EPUB 容器内,也可以位于容器之外。
EPUB 容器之外的超链接内容(例如 Web 页面)不是出版 资源,因此不会列在清单中。阅读系统通常会 在单独的浏览器实例中打开这些链接,而不是作为 EPUB 出版物的一部分打开。
spine plane 定义 由 书脊建立的 默认阅读顺序中使用的资源,其中 包括线性和非线性内容。书脊会指示 阅读系统在用户浏览 EPUB 出版物时如何加载这些资源。虽然许多 资源可以打包在 EPUB 容器中,但并非所有资源 都默认允许在书脊中使用。
EPUB 3 定义了一类特殊资源,称为 EPUB 内容文档,可不受限制地用于 书脊。EPUB 内容文档包括 XHTML 内容文档和 SVG 内容文档。
在书脊中使用任何其他类型的资源,包括 核心媒体类型资源,都
称为 外来内容文档。
外来内容文档需要 清单回退到
EPUB 内容文档。在这个
模型中,外来内容文档的 清单条目必须包含一个
fallback 属性,指向阅读系统在不支持其格式时要尝试的下一个
可能资源。虽然并不常见,但回退资源可以指定另一个回退,从而形成许多资源
深度的链。唯一要求是在
清单回退链中必须至少有一个 EPUB 内容文档。
虽然回退链中的所有资源并未直接列在书脊中, 但它们都被视为书脊的一部分,并由此视为书脊平面的一部分,因为阅读系统 可以使用其中任何资源。
这种可扩展性模型允许对格式进行实验,同时确保阅读系统 总能呈现一些可供用户阅读的内容,因为不能保证 支持外来内容文档。
有关更多信息,请参阅 3.5.1 清单 回退。
虽然清单回退满足 EPUB 的技术要求, 但阅读系统对它们的实际支持很少。强烈不建议使用, 因为这可能导致出版物不可读。
可以为 EPUB 内容文档提供清单回退,但这并不 常见,也不是一项要求。例如,脚本化内容文档可以为 不支持脚本的阅读系统回退 到无脚本替代内容。
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 外的所有外来资源和所有核心媒体类型资源)。
符合下表中定义的 MIME 媒体 类型 [rfc2046] 规范的 出版资源, 当用于 EPUB 出版物中的 EPUB 内容文档和 外来内容文档时,MAY 不带回退地包含。这些资源被 分类为 核心媒体类型资源。
只有 XHTML 内容文档和 SVG 内容文档可以在没有 清单回退的情况下从书脊引用。所有其他核心媒体类型 资源如果直接从 书脊引用,MUST 包含清单回退。 在这种情况下,它们是 外来内容文档。
表中的列表示以下信息:
媒体类型—用于在 清单中表示给定 出版资源的 MIME 媒体类型 [rfc2046]。
如果资源有多个媒体类型,则列出的第一个是首选媒体类型。 建议使用该媒体类型声明资源。
| 媒体类型 | 内容类型定义 | 适用于 | 自 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 |
|
[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 |
| 字体 | |||
|
[truetype] | TrueType 字体 | 3.0 |
|
[opentype] | OpenType 字体 | 3.0 |
|
[woff] | WOFF 字体 | 3.0 |
font/woff2
|
[woff2] | WOFF2 字体 | 3.2 |
| 其他 | |||
|
[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 之后引入,见 表格最后一列 — 可能不受某些阅读系统支持,例如 依赖自有呈现引擎或最近没有更新的阅读系统。
外来资源不同于 核心媒体类型资源,它是一种在 EPUB 内容文档或 外来内容文档中使用时不能保证 阅读系统支持的资源。
外来资源 MUST 提供回退。回退通常 使用宿主格式的内在回退机制提供(例如,[html] 元素通常 提供引用多个媒体类型或在某个 媒体类型无法呈现时显示替代嵌入消息的能力)。
有关其元素提供的内在回退能力,请参阅 [html] 和 [svg] 规范。
3.5.2 内在 回退也提供了关于如何解释特定元素回退的更多信息。
豁免资源同时具有 外来资源和 核心媒体类型资源的属性。它最像 外来资源,因为不能保证 阅读系统支持,但像核心媒体类型 资源一样,不要求回退。
在某些情况下,本节定义的豁免与现有核心媒体类型
资源如何包含在 EPUB 内容文档中存在重叠(例如,
使用 [html] link 元素包含 CSS 样式表,
在 CSS 中导入字体,或使用 [html]
script
元素处理 JavaScript)。虽然这
从表面上看使这些资源在不要求回退方面相似,但核心媒体类型因
对阅读系统有更强的支持预期而有所区别。核心媒体类型
资源不会仅仅因为它们共享相同的包含机制而成为豁免资源。
如果没有豁免,豁免资源本会成为 外来
资源。
豁免资源仅有少量特殊情况。例如,视频不要求 回退,因为目前尚未就核心媒体类型视频格式达成共识(即 没有可回退的格式)。类似地,音频和视频轨道为可访问性 目的而豁免,因此可以使用阅读系统支持最好的任何格式。
以下列表详细说明内容专用豁免资源的情况,包括 它们可使用位置的任何限制。
字体资源是豁免资源。
此豁免允许使用任何字体格式而不需要回退,无论阅读 系统支持预期如何,因为 CSS 规则会在不 支持时确保回退字体。
有关更多信息,请参阅 字体的阅读系统 支持 要求 [epub-rs-34]。
上述豁免不适用于 书脊。如果豁免资源 用于书脊,并且它本身不是 EPUB 内容文档,那么在 该上下文中仍需要回退。
除内容专用豁免外,如果满足以下条件, 资源也会被分类为豁免资源:
该豁免允许在 EPUB 容器 中包含不供 EPUB 阅读系统使用的资源,例如:
从 CSS 样式表中 url
函数 [css-values] 引用的外来图像资源,是一个
未被
此规则豁免的资源示例,因为它会导致非核心媒体类型格式被显示。
该豁免还允许在外来内容文档中使用外来资源,而无需阅读 系统或 EPUB 符合性检查器理解这些 资源的回退能力(即,外来内容文档的回退要求已经涵盖其中的任何 呈现问题)。由于该资源未从 EPUB 内容文档引用,它 自动豁免于回退要求。
清单回退是 包 文档的一项特性,它创建一个替代 资源的 manifest fallback chain, 阅读系统可用它代替 顶级内容 文档,从而在 书脊中的默认资源不受支持时选择一种可呈现的格式。
回退链使用 fallback
属性在 清单
item
元素上创建。该属性引用另一个清单
item 的 ID
[xml],
该 item 是当前 item 的
回退。阅读系统从给定
item 的 fallback 属性开始能够到达的所有引用的有序列表,
同时表示该 item 的完整回退链和
首选回退链。
外来内容文档 MUST 指定一条回退链,该回退链 MUST 至少包含一个 EPUB 内容文档,以确保阅读 系统始终可以呈现 书脊项。
EPUB 内容文档 MAY 指定回退。例如,为 脚本化内容提供回退。
当回退链包含多个 EPUB 内容文档时,可以使用
properties 属性来
区分每个文档的用途。
清单回退链 MUST NOT 包含自引用或对链中
item 元素的循环
引用。
以下各节对 [html] 中特定元素的内在回退要求 提供说明。
嵌入在 audio 或 video 元素中的 [html] 流内容,不算作
外来资源的
内在回退。只有子级
source
元素 [html]
才提供内在回退能力。
只有不识别 audio 或
video 元素的较旧 阅读系统(例如 EPUB 2 阅读系统)
会呈现嵌入
内容。当阅读系统支持这些元素但不支持可用媒体格式时,
它们不会为用户呈现嵌入内容。
回退要求仅适用于从
audio 和 video 元素引用的音频外来资源。视频资源不需要
回退;它们是 豁免资源。
为了提供替代格式回退,[html]
img
元素可用作
picture
元素的子元素,前提是
以下条件成立:
img 元素在设置 src 和 srcset 属性时,
MUST 仅从这些属性引用核心媒体类型
资源;
并且
source
元素 MUST 仅从其
src
和
srcset
属性引用 核心媒体类型资源,除非它
在其
type
属性中指定了
外来资源的 MIME 媒体类型 [rfc2046]。
当 img 不是 picture 的子元素时,其 src 和
srcset 属性 MUST NOT 用于为外来
资源提供回退。
虽然数据块具有与其所包含的
XHTML 内容文档不同的 MIME 媒体类型 [rfc2046],
但由于 [html]
script
元素没有指定此类机制,因此无法提供内在回退。
但是,由于 script 元素不表示用户内容 — 数据块除非由脚本操作,否则不会被呈现,
而脚本呈现的内容已有 核心
媒体类型要求 — 因此要求原始数据提供回退并无
实用意义。
因此,数据块豁免于回退要求,以允许脚本使用它们。
该豁免使数据块与 数据文件豁免保持一致。
截至发布时,[svg] 尚未定义数据块,但 如果未来更新添加了这一概念,同样的排除也会适用。
所有其他资源 MUST 存储在 EPUB 容器内。
只要有可能,强烈鼓励将所有资源存储在 EPUB 容器内部,因为这样可以让 用户无论连接状态如何,都能访问完整呈现。
当资源必须位于 EPUB 容器之外时,RECOMMENDED
通过
安全的 https URI 方案 [rfc9110] 引用它们,以限制其
出版物和用户暴露于网络攻击的威胁。阅读
系统可能不会加载使用 http 等不安全方案引用的 远程资源。
这些出版资源位置规则适用于给定资源,无论该资源是 核心媒体类型资源还是 外来资源。
有关如何指示 清单
item
引用
远程资源的更多信息,请参阅
remote-resources 属性。
data: URL 方案 [rfc2397] 用于将资源
直接编码到 URL 字符串中。该方案的优点是允许将资源嵌入
另一个资源中,从而避免需要外部文件。
Data URLs MUST NOT 用于以下场景,因为它们会导致 顶级内容文档或 顶级浏览上下文 [html]:
在 [html] area 元素的
href 属性中,除非位于
iframe 元素内;
在对 [ecmascript]
window.open 或 document.open 的调用中。
嵌入的一个后果是,data URL 中的数据在清单报告目的下不被视为其自身唯一的 出版资源 (即,只列出包含它的出版 资源)。然而,由于这些数据有自己的媒体类型,它仍受 外来资源限制约束。因此,data URLs MUST 编码为 核心媒体类型资源,或使用 宿主格式的内在回退机制 提供回退。
file: URL 方案在 [rfc8089] 中定义为
“标识存储在主机上结构化对象命名和访问环境(‘文件系统’)中的对象
(‘文件’)”。它通常用于从本地操作
系统检索文件。
在可在不同主机之间传输的 EPUB 出版物中使用 file URL, 既存在安全风险,也不具备互操作性。因此,file URLs MUST NOT 用于 EPUB 出版物。
本节为非规范性内容。
OCF 是 EPUB 出版物的容器技术。它可以在以下 工作流中发挥作用:
本节定义了以抽象方式组织文件集合的规则:“抽象 容器”。它还定义了在 ZIP 归档中表示此抽象容器的规则:“物理容器”。ZIP 物理容器的规则建立在 [odf] 所使用的 ZIP 技术之上。
本节为非规范性内容。
OCF 抽象容器文件系统模型使用一个 单一的公共根目录。所有 容器资源都位于以根目录为首的目录 树中,但 本规范不强制要求它们采用特定的文件系统结构。
该文件系统模型还包括一个名为 META-INF 的强制目录,它是
根目录的直接子目录,并存储以下特殊文件:
container.xml
[required]
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 目录。
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] 中定义的限制。为避免与这些阅读系统出现互操作性 问题,建议 将所有资源放在包含包文档的目录或其下级目录中。
在 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+FFFE 和 U+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] 中关于“截断或 限制 字符串长度”的章节。
容器根 URL是URL [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:
将容器根 URL设置为
https://a.example.org/A/。
令 base 为用于解析 url 的base 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 元素)。
将容器根 URL设置为
https://b.example.org/B/。
使用不同的人工
容器根 URL 设置重复相同步骤两次的原因,是为了避免在
url 字符串也包含 /A/ 时可能发生的冲突。例如,考虑
url 为 ../../A/doc.xhtml 的情况。
如果 testURLStringA 不以 https://a.example.org/ 开头,或者
testURLStringB 不以 https://b.example.org/ 开头,
返回 true。
如果任一结果不共享测试 URL 主机,意味着 url
或其 base URL(例如在 HTML 中,如果通过
base 元素显式设置)是绝对的,并指向
容器外部。这是可接受的。
如果 testURLStringA 以 https://a.example.org/A/ 开头,且
testURLStringB 以 https://b.example.org/B/ 开头,返回
true。
第一个测试路径段(分别为 A 和
B)的存在表明该 URL 没有泄漏到容器之外。
在 OCF 抽象容器中,任何 URL 字符串 MUST 是 absolute-url-with-fragment string,或是 valid-relative-ocf-URL-with-fragment string。
此外,所有relative-URL-with-fragment strings [url] 在解析后,MUST 等于 OCF 抽象容器中现有 文件的内容 URL。
这些对 URL 字符串的约束意味着:
/(U+002F)开头的相对 URL 字符串(例如
/EPUB/content.xhtml)是不允许的;
EPUB/../../../../config.xml)是不允许的;请注意,在任何情况下,即使是上述不允许的 URL 字符串,在解析后也不会“泄漏” 到容器之外(如本节第一个注中所解释)。尽管如此,为了更好地 与不符合要求或遗留的阅读系统和工具链互操作,它们仍然 是不允许的。
所有 OCF 抽象容器 MUST 在其根目录中包含一个名为 META-INF 的目录。
此目录保留用于配置文件,具体为 4.2.6.3 保留文件中定义的那些文件。
要解析位于
META-INF 目录中文件使用的 URL 字符串
url,URL parser MUST 应用于
url,并以
容器根 URL作为base。
META-INF 目录中的 REQUIRED
container.xml 文件
标识 OCF 抽象
容器中可用的包文档。
本节中定义的所有 [xml]
元素都位于
urn:oasis:names:tc:opendocument:xmlns:container 命名空间 [xml-names] 中,
除非另有说明。
移除所有来自其他命名空间的元素和属性(包括此类元素的所有属性和内容)后, 此文件的内容 MUST 符合本 节中的定义。
一个 XML Schema 也非正式地定义了 此文件的内容。
container 元素封装
container.xml 文件中的所有信息。
每个 rootfile 元素都标识 EPUB 容器中一个包文档的位置。
rootfile
作为
rootfiles
元素的子元素。可重复。
full-path
[required]
标识包文档的位置。
该属性的值 MUST 是 path-relative-scheme-less-URL string [url]。路径 相对于根目录。
media-type
[required]
标识包文档的媒体类型。
该属性的值 MUST 是
“application/oebps-package+xml”。
空
如果指定了多个 rootfile 元素,每个元素 MUST 引用
符合同一 EPUB 版本的包文档。每个包文档
表示 EPUB 出版物的一种呈现。
尽管 EPUB 容器提供了引用多个 包文档的能力,但本规范并未定义如何解释或从 可用选项中进行选择。有关如何捆绑多个内容呈现的更多 信息,请参阅 [epub-multi-rend-11]。
links 元素标识处理 OCF ZIP 容器所必需的资源。
本规范目前未定义 links
元素的用途。有关其用法示例,请参阅 [epub-multi-rend-11]。
link
作为
links
元素的子元素。可重复。
href
[required]
标识资源的位置。
link 元素 href
属性的值 MUST 是 path-relative-scheme-less-URL
string
[url]。路径相对于
根
目录。
media-type
[optional]
标识所引用资源的类型和格式。
该属性的值 MUST 是媒体类型 [rfc2046]。
rel
[required]
标识资源的关系。
该属性的值 MUST 是 以空格分隔的 token 列表。
空
本节为非规范性内容。
META-INF 目录中的 OPTIONAL
encryption.xml 文件
保存关于容器内容的所有加密信息。如果容器内有任何资源
被加密,则 MUST 有一个
encryption.xml 文件来
提供有关所用加密的信息。
encryption
urn:oasis:names:tc:opendocument:xmlns:container
无
任意顺序:
EncryptedKey [一个或多个]EncryptedData [一个或多个]encryption 元素包含
EncryptedKey 和 EncryptedData 类型的子元素,如
[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 用于加密已签名资源。此功能使阅读系统能够 区分签名前加密的数据和签名后加密的数据。
当存储在 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
EncryptionProperty 的 OPTIONAL 子元素。
[required]标识所用的压缩方法。
值为 “0”(无压缩)或 “8”
(Deflate 算法)。
[required]表示初始资源的大小(字节数)。
值为正整数。
空
META-INF 目录中的 OPTIONAL
manifest.xml 文件
提供容器中文件的清单。
OCF 规范不强制规定清单的格式。
请注意,包文档指定了 用于处理 EPUB 出版物的唯一清单。阅读系统不使用 此文件。
META-INF 目录中的 OPTIONAL
metadata.xml 文件仅
用于容器级元数据。
如果包含 metadata.xml 文件,它 SHOULD 只包含
命名空间限定元素 [xml-names]。该文件 SHOULD 包含 [xml]
的根元素
metadata,位于
命名空间 http://www.idpf.org/2013/metadata 中,但本规范允许
使用其他根元素以实现向后兼容。
此版本的规范未定义用于
metadata.xml 文件的元数据。本规范的未来版本 MAY 定义
容器级元数据。
本规范保留 META-INF 目录中的 OPTIONAL
rights.xml
文件,用于权利持有人、中介和用户之间可信交换
EPUB 出版物。
当未包含 rights.xml 文件时,OCF 抽象容器的任何部分都不在
容器级别受权利治理。权利表达式可能存在于
EPUB 出版物中。
META-INF 目录中的 OPTIONAL
signatures.xml 文件
保存容器及其内容的数字签名。
signatures
urn:oasis:names:tc:opendocument:xmlns:container
无
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 文件取决于目标:
signatures.xml 文件 SHOULD NOT 被签名。Signature。该 transform 将签署所有先前
签名,并且如果后续签名被添加到
包中,它将变为无效。如果希望只有移除现有签名才会使 OCF 抽象容器的签名 失效(即允许添加新 签名),可以使用 XPath transform 只签署现有 签名。此类 transform 的细节超出本 规范范围。
[xmldsig-core1]
规范并未将任何语义与
签名相关联;代理可以包含语义信息,例如通过向
Signature 元素添加描述该签名的信息。[xmldsig-core1]
规范描述了如何向
签名添加附加信息,例如使用 SignatureProperties 元素。
本节为非规范性内容。
OCF ZIP 容器是 OCF 抽象容器的一种物理单文件 表现形式。该 容器允许:
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 设置为 10、20 或
45,以匹配给定文件所需的最高版本级别(例如,
Deflate 使用 20,ZIP64 使用 45)。
在本地文件头表中,compression
method 字段 MUST 设置为 0 或 8。
mimetype 文件 MUST 是 OCF 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 媒体类型。
本节中定义的所有 [xml] 元素都位于
http://www.idpf.org/2007/opf
命名空间 [xml-names] 中,除非另有说明。
本节为非规范性内容。
包文档是一个XML 文档,由一组 元素组成,每个元素都封装了 EPUB 出版物某一特定方面的信息。 这些元素用于集中元数据、详细说明各个资源,并提供 其呈现所必需的阅读顺序和其他信息。
以下列表概述了包文档中的信息:
元数据 — 用于包含和/或引用 EPUB 出版物相关信息的机制。
书脊 — 指向清单中顶级 资源的 ID 引用有序序列,阅读系统可从这些资源到达或利用该集合中的所有其他 资源。书脊定义默认阅读顺序。
清单回退链 — 一种机制, 定义作为内容等价物的顶级 资源有序列表。阅读系统随后可以根据其能够呈现的资源 在这些资源之间进行选择。
EPUB 出版物可以引用多个包文档,从而允许内容具有替代
表示形式。更多信息,请参阅 4.2.6.3.1
容器文件(container.xml)
有关包文档文件
属性的信息,请参阅 G.1
application/oebps-package+xml 媒体类型。
要解析 包文档中使用的 URL 字符串 url,URL parser [url] MUST 应用于 url, 并以包 文档的内容 URL作为 base。
本节为非规范性内容。
包文档通过使用 紧凑 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 的更多详细信息。
紧凑 URL 数据类型是一种表达 URL [url] 的紧凑方式, 由一个 OPTIONAL 前缀组成,该前缀通过冒号与引用分隔。
| 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 值省略前缀时,指定的术语取自该属性的默认词汇。
默认词汇是指当需要紧凑 URL时,其术语和 属性 MUST NOT 带有前缀的词汇。
MUST NOT 使用 prefix
属性为与这些词汇关联的 URL 分配前缀。
有关其默认词汇的更多信息,请参阅每个接受紧凑 URL 数据类型的属性定义。
prefix 属性定义用于紧凑 URL的前缀映射。
prefix 属性的值是一个由空白分隔的列表,包含一个或多个
前缀到 URL 的映射,形式如下:
| 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 内容文档中,这两个属性同时出现很常见。
<html … prefix="…"
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] 元素允许出现在包文档 元数据中。
虽然保留前缀便于编写,但它们可能导致问题。例如,供应商 通常会在更新其EPUB 符合性检查器之前拒绝新的前缀。 建议声明所有前缀以避免任何问题。
保留前缀 MAY 用于期望紧凑 URL的属性,而无需在
prefix 属性中声明它们。
保留前缀 SHOULD NOT 在 prefix
属性中被覆盖。
可以使用哪些保留前缀取决于上下文:
以下前缀 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/ |
用于 scheme 属性,以标识某个值
对应的 ONIX 代码列表。 |
| rendition | http://www.idpf.org/vocab/rendition/# | 用于声明来自包 呈现词汇的属性。 |
| schema | http://schema.org/ | 用于声明来自 Schema.org 词汇的属性。 |
package 元素封装包文档中表达的所有信息。
package
按此顺序:
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
属性。
metadata 元素封装元信息。
metadata
package
的
REQUIRED 第一个子元素。
无
任意顺序:
dc:identifier
[1 个或多个]
dc:title
[1 个或多个]
dc:language
[1 个或多个]
Dublin Core Optional Elements
[0 个或多个]
meta
[1 个或多个]
link
[0 个或多个]
包文档的 metadata 元素具有两个
主要功能:
包文档不提供复杂的元数据编码能力。如果需要提供更详细的
信息,则可以将元数据记录(例如,符合 [onix] 等国际
标准,或为自定义目的创建)与 EPUB
出版物关联,方式是使用
link
元素。此方法允许阅读系统以其原生形式处理
元数据,避免因转换为使用最小包文档结构而导致的潜在问题和信息损失。
与这一理念一致,包文档只有以下
最小元数据要求:它 MUST 包含 [dcterms]
dc:title、
dc:identifier
和
dc:language
元素,以及 [dcterms]
属性。所有其他元数据都是 OPTIONAL。
dcterms:modified
meta
元素提供了一种通用机制,用于包含来自任何词汇的元数据属性。
虽然此机制可用于任何
元数据目的,但它通常用于包含 EPUB 规范中定义的呈现和可访问性元数据。
有关可访问性元数据 建议,请参阅 [epub-a11y-12]。
Dublin Core 元素 [dcterms] 和
meta
元素具有强制性的子文本内容
[dom]。在这些元素的描述中,本
规范将此内容称为
元素的值。
在去除前导和尾随 ASCII 空白 [infra] 后,这些元素 MUST 具有非空值(即它们必须由至少 一个 非空白字符组成)。
dc:identifier 元素 [dcterms] 包含
一个标识符,例如 UUID、DOI 或 ISBN。
dc:identifier
http://purl.org/dc/elements/1.1/
metadata
的
REQUIRED 子元素。
可重复。
id
[conditionally required]
文本
EPUB 出版物 MUST
包含一个 dc:identifier 元素,该元素指定
一个对其自身唯一的标识符 — 其唯一标识符。此元素
MUST 由
package
元素的 unique-identifier
属性引用。
虽然唯一标识符并非静态不变,但应避免过于频繁地更改它。唯一标识符 旨在为引用和分发目的提供最大持久性。 在进行较小修订(例如更新元数据、 修复勘误或进行类似小改动)时,不要发布新的标识符。
可以指定附加标识符 MAY。
建议尽可能使用absolute-URL strings [url] 作为标识符。例如, 包含域名可以提高标识符的唯一性, 而使用带有命名空间 标识符 [rfc8141] 的 URN 能改善 阅读系统的处理。
identifier-type 属性 MAY
用于
指示 dc:identifier 元素的值符合某个
既定系统或被某个颁发机构授予。
dc:title 元素 [dcterms] 表示
EPUB 出版物名称的一个
实例。
dc:title
http://purl.org/dc/elements/1.1/
metadata
的
REQUIRED 子元素。
可重复。
文本
文档顺序中的第一个 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-type 和 display-seq 属性来标识和
格式化
多部分标题的片段(见 Great Cookbooks 示例)。
仍可以添加这些语义,但它们也未得到很好支持。
dc:language 元素 [dcterms] 指定
EPUB 出版物内容的
语言。
dc:language
http://purl.org/dc/elements/1.1/
metadata
的
REQUIRED 子元素。
可重复。
id
[optional]
文本
每个 dc:language 元素的值 MUST 是一个格式良好的语言标签
[bcp47]。
虽然可以为多语言
EPUB 出版物指定附加的 dc:language 元素 MAY,
但阅读系统会将文档顺序中的第一个
dc:language
元素视为主要语言。
出版
资源不会从 dc:language
元素继承其语言。每个资源的语言必须使用该格式的内在方法
设置。
除
dc:identifier、
dc:language
和
dc: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/
metadata
的
OPTIONAL 子元素。
可重复。
文本
除以下各节中注明的内容外,本规范不修改 [dcterms] 元素 定义。
dc:contributor 元素 [dcterms] 用于表示
在内容创作中发挥次要作用的人、组织等的
名称。
dc:contributor 元素的要求在其他所有方面都与
元素的要求相同。
dc:creator
dc:creator
元素 [dcterms] 表示负责创建内容的
人、组织等的名称。role 属性 MAY 与该元素关联,以指示创作者所发挥的功能。
建议 dc:creator 元素包含创作者的名称,其形式应与
阅读系统预期向用户显示的形式一致。
file-as 属性 MAY 用于
关联创作者名称的规范化形式,
alternate-script 属性用于以另一种语言或文字表示
创作者的名称。
如果 EPUB 出版物有多个创作者,
请在单独的
dc:creator 元素中分别指定。
metadata
节中 dc:creator 元素的文档顺序决定显示优先级,其中遇到的第一个 dc:creator 元素
是主要创作者。
次要贡献者使用
元素表示。
dc:contributor
dc:date 元素
[dcterms] 定义
EPUB 出版物的出版日期。出版日期不同于
最后修改日期(EPUB
出版物最后一次更改的时间)。
建议日期字符串符合 [iso8601-1], 特别是 W3C Date and Time Formats [datetime] 中表达的子集,因为此类字符串既适合人类阅读, 也适合 机器读取。
可以使用 [dcterms] 词汇中可用的专门日期属性 或类似属性来表达附加日期。
EPUB 出版物 MUST NOT 包含多个
dc:date 元素。
dc:subject
元素 [dcterms] 标识
EPUB 出版物的主题。建议将该元素的值设置为
人类可读的标题或标签,但如果主题分类法
不提供单独的描述性标签,也可以使用代码值。
可以使用 authority 属性标识该元素值所来源的系统或 scheme。
当标识了 scheme 时,主题代码 MUST 使用 term
属性关联到该元素。
term 属性 MUST NOT 关联到未指定 scheme
的
dc:subject 元素。
dc:subject 元素和
term 属性的值
只有在指定的 scheme 要求时才区分大小写。
dc:type 元素
[dcterms] 用于指示 EPUB 出版物属于某种专门类型
(例如,以 EPUB 格式打包的注释或词典)。
该元素的值 MAY 是任何文本字符串。
前 IDPF EPUB 3 Working Group 维护了一个非规范性的 专门 EPUB 出版物类型注册表,供 此元素使用。本工作组不再维护该注册表,也不 预期开发新的专门出版物类型。
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 属性没有
默认词汇(即所有值都需要前缀)。
metadata 节 MUST 正好包含
一个 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]。
link 元素将资源与 EPUB
出版物关联,例如元数据
记录。
link
作为
metadata
的子元素。可重复。
href
[required]
hreflang
[optional]
id
[optional]
media-type
[conditionally required]
properties
[optional]
refines
[optional]
rel
[required]
空
metadata
元素 MAY 包含零个或多个 link 元素,每个元素
都在其 REQUIRED
href 属性中标识一个出版资源或链接资源的位置。
从 link 元素引用的资源仅在以下情况下
是出版资源:
从书脊引用;或
包含或嵌入在 EPUB 内容文档中(例如,序列化为
RDFa [rdfa-core] 或 JSON-LD [json-ld11] 的元数据
记录,嵌入在
[html] script
元素中)。
在所有其他情况下(例如,链接到独立的 [onix] 记录时),所引用的 资源 不是出版资源(即不受核心 媒体类型要求约束),且 MUST NOT 列在清单中。
虽然链接资源 MAY 位于 EPUB 容器之外, 阅读系统不必获取远程资源。建议在远程托管它们之前考虑 这可能对用户阅读体验产生的影响。
对于 EPUB 容器内的所有链接资源,media-type
属性 MUST 被指定。对于位于 EPUB 容器外部的链接资源,该属性为
OPTIONAL,因为同一个 URL 可能提供多个媒体类型 [url]。
OPTIONAL hreflang 属性
标识链接资源的
语言。其值 MUST 是一个格式良好的语言
标签 [bcp47]。
REQUIRED rel 属性接受一个以空格分隔的
紧凑 URL列表,用于建立链接
资源与 EPUB
出版物之间的关系。
media-type 属性的值并不总是足以标识链接资源的类型
(例如,许多基于 XML 的记录格式使用媒体类型
“application/xml”)。为帮助阅读系统识别此类
通用资源,可以在
properties
属性中指定语义标识符 MAY。
Metadata Link Vocabulary 是
rel 和 properties 属性的默认
词汇。
可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的关系和属性 MAY。
可以提供一个或多个链接的 元数据记录 MAY。
由于可以链接到 EPUB 出版物的元数据记录格式和序列化方式多种多样, 且比较它们之间的元数据属性具有复杂性,本 规范不要求阅读系统处理链接记录。
除了完整记录之外,link 元素 MAY 用于
标识以替代格式提供的单个
元数据属性。
manifest 元素提供用于呈现内容的出版资源的完整列表。
除包
文档外,
manifest MUST 列出所有出版资源,无论它们是
容器资源还是远程资源。
由于包文档已经由 container.xml 文件标识,
manifest MUST NOT 为其指定 item 元素
(即自引用没有意义)。
清单仅用于列出出版资源。链接资源以及用于处理 OCF
容器的特殊文件(即 META-INF 目录中的文件以及
mimetype 文件)都被限制不得纳入。
未提供完整的出版资源清单可能导致呈现问题。 阅读系统可能不会解压这些 资源,或可能出于 安全原因阻止对它们的访问。
item 元素表示一个出版资源。
item
作为
manifest
的子元素。可重复。
fallback
[conditionally required]
href
[required]
id
[required]
media-overlay
[optional]
media-type
[required]
properties
[optional]
空
每个 item 元素通过其 href
属性中的
URL [url] 标识一个出版资源。其值 MUST 是
absolute- 或 path-relative-scheme-less-URL
string [url]。每个 URL 在解析后
MUST 在 manifest 范围内唯一。
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
媒体覆盖打包。
manifest 中 item 元素的顺序并不重要。
spine
元素提供内容文档的呈现序列。
properties 属性向
阅读系统提供有关资源内容的信息。
此信息支持发现
关键资源,例如封面图像和 EPUB 导航文档。它还允许
阅读系统通过指示资源是否
包含嵌入脚本、MathML 或 SVG 等来优化呈现。
Manifest Properties
Vocabulary 是
properties
属性的默认词汇。
当 item
元素引用的资源匹配以下属性各自的定义时,MUST 设置这些属性:
这些属性不会递归应用于包含进资源中的内容(例如,通过
[html]
iframe
元素包含的内容)。例如,如果非脚本化的 XHTML 内容文档
嵌入了脚本化内容
文档,则只有嵌入文档的清单
item
properties 属性会具有 scripted 值。
MUST 使用 nav 属性将
正好一个 item 声明为 EPUB 导航
文档。
如果 EPUB 出版物包含封面图像,建议设置 OPTIONAL cover-image
属性。
可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的术语 MAY。
spine 元素定义一个有序的清单
item 引用列表,用于表示默认阅读顺序。
spine
id
[optional]
page-progression-direction
[optional]
itemref
[1 个或多个]
spine MUST 指定至少一个
EPUB 内容文档或外来内容文档。
所有从 spine 中的出版资源超链接到的
EPUB 和外来内容文档都 MUST 列在
spine 中,其中
超链接包括任何要求用户从当前资源导航离开的链接机制。常见的超链接机制包括
[html]
a
和
area
元素的
href
属性,以及脚本化链接(例如,使用 DOM Events 和/或表单
元素)。列出超链接资源的要求会递归适用(即,从被超链接文档
超链接到的所有 EPUB 和外来内容文档也必须列出,依此类推)。
所有从 EPUB 导航文档超链接到的 EPUB 和外来内容文档
也 MUST
列在 spine 中,无论 EPUB 导航文档是否
包含在 spine 中。
page-progression-direction
属性设置内容流动的全局方向。允许的值为
ltr(从左到右)、rtl(从右到左)和 default。
指定 default 值时,表示未表达任何偏好,且
阅读系统可以选择呈现方向。
虽然 page-progression-direction 属性设置全局流动方向,
但各个 EPUB 内容文档以及 EPUB 内容文档的各部分 MAY
覆盖此设置
(例如,通过 writing-mode CSS 属性)。阅读系统也可以提供
覆盖默认方向的机制(例如,允许应用
替代样式表的按钮或设置)。
itemref 元素标识默认阅读顺序中的一个 EPUB 内容文档或外来内容文档。
itemref
作为
spine
的子元素。可重复。
id
[optional]
idref
[required]
linear
[optional]
properties
[optional]
空
每个 itemref 元素 MUST 通过其
idref 属性中的
IDREF [xml]
引用清单中某个
item
的 ID [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
Vocabulary 是
properties 属性的默认词汇。
可以按 5.3 词汇关联 机制中定义的方式添加其他词汇中的术语 MAY。
本节为非规范性内容。
并非所有呈现信息都能通过 EPUB 3 所基于的底层技术来表达。 例如,虽然带有 CSS 的 HTML 提供了强大的布局能力,但这些 能力仅限于正在呈现的文档范围。
因此,EPUB 3 为显示 EPUB 内容文档提供了多种布局选项:
本节解释这些布局选项,以及用于控制包级呈现意图表达的其他属性 (即只能由 EPUB 阅读系统实现的功能)。如果阅读系统支持所需的 呈现方式,这些 属性可使内容按照其最优设计方式呈现。
可重排布局是指 EPUB 内容文档的内容会重排,以适应 阅读系统视口中的可用空间。阅读 系统随后可以动态分页 内容,或以滚动方式提供内容,并通常为用户提供选择其偏好 阅读体验的能力。
可重排布局是 EPUB 3 的默认布局,并且通常最具可访问性。由于它是
默认布局,因此无需声明任何元数据来表示 EPUB
出版物意图以
可重排方式呈现。不过,如果更希望进行显式声明,则可以在 meta 元素中设置
rendition:layout 属性,
并指定值 reflowable。
除了将整个 EPUB 出版物设置为可重排外,还可以覆盖预分页固定布局,以指定某些书脊项为
可重排。为此,需要在每个可重排的书脊
itemref 上的 properties 属性中设置
rendition:layout-reflowable
书脊覆盖。
当两个可重排 EPUB 内容文档在书脊中连续出现时,
其 [html] body 元素的默认呈现与 page-break-before
属性 [css2]
设置为
always 时一致。如果阅读系统支持此类覆盖,则可以通过适当的
样式表
声明覆盖此行为 MAY。
EPUB 3 使用固定布局文档提供两类固定布局。第一类 预分页提供了非常类似传统印刷书籍的阅读体验, 其中每个固定布局文档表示一页内容。 预分页布局通常用于儿童书、漫画以及类似内容,在这些内容中, 页面设计若被重排会损失意义或可读性。
第二类布局 卷动,以 连续滚动布局提供固定布局文档。这种体验对于许多漫画和 manga 至关重要,因为对 文档分页会产生人为断点。
在引入卷动布局之前,预分页布局通常被称为固定布局 EPUB。 现在规范按每种固定布局类型的设计来称呼它们,以避免 只把其中一种称为“固定布局”所造成的一般混淆。
在预分页固定布局中,由书脊
itemref
引用的每个固定布局文档都表示一页内容。阅读系统应将
文档缩放以适应视口或合成跨页。
要指示 EPUB 出版物使用预分页固定布局,需要在 meta
元素中声明 rendition:layout 属性,
并指定值 pre-paginated。
除了将整个 EPUB 出版物设置为具有预分页布局外,还可以
覆盖可重排布局,以指定某些书脊项为
预分页。为此,需要在每个预分页的书脊
itemref 上的 properties 属性中设置
rendition:layout-pre-paginated 书脊覆盖。
卷动布局不支持书脊覆盖,因此预分页布局 不能以类似方式与卷动布局混合。
当属性为某个书脊项设置为
pre-paginated 时,
itemref
元素 MUST 引用一个固定布局文档,
或者其清单回退链中 MUST
存在一个固定布局文档。
阅读系统通常会限制或拒绝将用户或用户代理样式表应用于 预分页文档,因为动态样式更改很可能对此类文档的内在属性产生意外 后果。选择使用 预分页内容时,建议考虑这些限制对可用性和 可访问性的负面影响。相关信息请参阅 准则 1.4 - 提供文本配置 [uaag20]。
对于预分页布局,默认情况下,阅读系统会在视口中单独呈现每个 固定布局文档,并按照书脊顺序用 下一个固定布局文档替换该文档。
阅读系统也可以提供合成跨页选项,其中会呈现两个视口,
从而使两个固定布局文档能够并排显示,或使单个
固定布局文档能够单独显示在两个可用视口之一中(例如,在
新章节开始前留出空白页)。在这种情况下,阅读系统将
单独呈现第一个文档 — 要么单独位于两个可用位置之一中
(该位置由给定的页面
推进方向或 EPUB 内容文档内的本地声明决定),
要么单独居中
(等同于设置
rendition:page-spread-center 属性)。在第一个文档之后,它将
通过呈现接下来两个连续的 EPUB 内容文档来填充跨页。随后,
每当用户在出版物中向前或向后推进时,跨页中的两个
文档都会被替换。
可以通过在书脊
itemref
元素的 properties 属性中指定以下
属性之一,覆盖自动填充行为 MAY:
rendition:page-spread-center
— 不使用合成跨页,并将固定布局文档在
视口中居中。rendition:page-spread-left
— 将被引用的固定布局文档放入合成
跨页的左侧位置。rendition:page-spread-right
— 将被引用的固定布局文档放入合成
跨页的右侧位置。rendition:page-spread-center、rendition:page-spread-left 和
rendition:page-spread-right 属性仅在阅读系统
创建合成跨页时适用。它们也只适用于预分页内容,尽管当
书脊项布局被覆盖为预分页时,可以在可重排布局中存在跨页。
rendition:page-spread-left 和 rendition:page-spread-right
属性创建的目的,是允许包呈现属性使用单一词汇。
两组属性均可使用,但较旧的阅读系统可能只
识别无前缀版本。
rendition:page-spread-center 的创建是为了更容易理解
在双页跨页和单个居中页面之间切换的过程。
当在 meta 元素中声明
rendition:layout 属性并使用值 roll 时,
它表示内容为卷动形式(即阅读系统将每个书脊
itemref
的宽度适配到视口,并以无
可见间隙的连续卷动方式显示)。卷动布局样式全局适用(即适用于所有书脊项),且不能被
覆盖。
声明 roll 布局时,每个书脊项 MUST 引用一个
固定布局文档。每个
文档的尺寸 MUST 按 7.3.2 固定布局文档尺寸中的定义设置。
包呈现 词汇中的其他属性或书脊覆盖都不能用于控制卷动布局的呈现。
阅读系统通常会限制或拒绝将用户或用户代理样式表应用于卷动文档, 因为动态样式更改很可能对此类文档的内在属性产生意外 后果。选择使用卷动布局时,建议 考虑这些限制对可用性和可访问性的负面影响。 相关信息请参阅 准则 1.4 - 提供文本配置 [uaag20]。
本节为非规范性内容。
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 的后继者。
XHTML 内容文档:
MUST 符合 [html] 为所有 文档构造定义的符合性标准,除非在 7.1.4 HTML 偏差和约束中明确覆盖。
MAY 包含 [html] 语法的扩展,如 7.1.3 HTML 扩展中所定义,并且 MUST 符合其中定义的所有内容 符合性约束。
除非另有说明,XHTML 内容文档继承 [html] 规范中语义、 结构和处理行为的所有定义。
建议EPUB 出版物遵循 [epub-a11y-12] 中可访问性要求的建议 适用于 XHTML 内容文档。参见可访问性。
本节定义 EPUB 3 XHTML 内容文档 对底层 [html] 文档模型的扩展。
epub:type
属性 MAY 用于 XHTML 内容文档中,以表达结构语义。
[html-rdfa] 规范定义了一组 可用于 XHTML 内容文档中以在语义上 丰富内容的属性 MAY。这些属性的使用 MUST 符合 [html-rdfa] 中定义的要求。
[html-rdfa] 规范定义了 当作者使用 RDFa 属性时对 [html] 内容模型的 更改。此修改后的内容模型在 XHTML 内容文档中有效。
列出 RDFa 并不表达工作组的偏好,只表示这些属性是 HTML 语法的扩展。Microdata 属性 [html] 和链接数据 [json-ld11] 在 XHTML 内容文档中得到原生支持,也可以使用。
[its20] 规范 定义了一组属性,可用于 XHTML 内容文档中,以增加对 国际化、翻译和本地化的支持 MAY。
ITS 属性 MUST 只能按 Using ITS markup in HTML [its20] 中的定义使用(即 EPUB 3 不支持带命名空间的 属性)。
这些属性的使用 MUST 符合 [its20] 中定义的要求。
XHTML 内容文档 MAY 包含自定义属性,这些属性是带前缀的 [xml-names] 属性,其 命名空间 URL 的域 [url] 中不包含以下任一字符串:
w3.org
idpf.org
使用自定义属性时,无论内容在哪个阅读系统上 呈现,用户都 MUST 仍能消费该内容,且不会有任何 信息丢失或其他显著劣化。
自定义属性通常以特定阅读系统的方式定义,并不 打算供其他阅读系统使用。为多个独立阅读系统添加扩展以供使用的 首选方法是扩展本规范。
本节定义适用于 EPUB 3 XHTML 内容文档的 底层 [html] 文档 模型的偏差和约束。
XHTML 内容文档支持嵌入式 [mathml3]。 出现的 MathML 标记 MUST 符合 MathML 规范 [mathml3] 中表达的约束, 并带有以下 附加限制:
math 元素 MUST
只包含 Presentation MathML,但
annotation-xml 元素内部除外。
Content
MathML MAY 包含在 XHTML
内容文档中的 MathML 标记内,并且
当存在时,MUST 包含在
semantics 元素的一个
annotation-xml 子元素内。
按前述
条件包含 Content MathML 时,给定 annotation-xml 元素的
encoding 属性 MUST 设置为两个功能等价值之一:
MathML-Content 或 application/mathml-content+xml,并且
name 属性设置为 contentequiv。
XHTML 内容文档支持 SVG 的嵌入:
img
或
object
元素嵌入。通过引用嵌入的 SVG 是 SVG
核心媒体类型,因此其要求已在 7.2 SVG
内容文档中定义。
本节为非规范性内容。
[html] base
元素可用于指定文档基 URL,以便解析 URL。
在 EPUB 出版物中使用它时,对
base 元素的解释可能会无意中导致引用远程资源。它还可能导致阅读系统误解
超链接的位置(例如,如果 base 元素指定绝对 URL,则指向出版物中其他文档的
相对链接可能看起来像是
指向某个网站的链接)。为
避免重大互操作性问题,不鼓励使用 base 元素。
[html]
rp
元素旨在为不能识别 ruby 标记的旧阅读系统提供回退
(即,在 ruby 标记周围显示括号)。
由于 EPUB 3 阅读系统知晓 ruby,并且
可以提供回退项,因此不鼓励使用 rp 元素。
由于 [html] embed
element 元素不包含用于不支持
脚本的阅读系统的内在回退设施,
因此不鼓励将该元素与脚本化资源一起使用。[html]
object
元素是更好的替代方案,因为它包含
内在回退能力。
本节为非规范性内容。
Scalable Vector Graphics(SVG)规范 [svg] 定义了一种用于表示 最终形态矢量图形和文本的格式。
虽然 XHTML 内容文档更常作为顶级内容文档使用,但也允许使用SVG 内容文档。SVG 通常 只在某些特殊情况下才需要,例如当最终形态页面图像是内容唯一合适的 表示形式时(例如封面图,或在 manga 或漫画书语境中)。
本节为 [svg] 文档定义一个配置文件。符合此配置文件的 XML 文档实例 是核心媒体类型资源,在本 规范中称为 SVG 内容文档。
本节定义 SVG 内容文档的符合性要求。有关嵌入在 XHTML 内容文档中的 SVG 的符合性要求,请参阅 7.1.4.2 嵌入式 SVG。
SVG 内容文档 MUST 是一个符合要求的 SVG 独立文件 [svg],并符合 7.2.3 SVG 限制中表达的所有内容符合性约束。
建议EPUB 出版物遵循 [epub-a11y-12] 中可访问性要求的建议 适用于 SVG 内容文档。参见可访问性。
本规范按如下方式限制 SVG 内容文档和通过包含方式嵌入 XHTML 内容文档中的 SVG的内容模型:
[svg] foreignObject
元素:
MUST 包含
[html] 流内容,或正好一个 [html] body 元素。
对于通过
包含方式嵌入的 SVG,根据 [html] 中定义的 SVG 限制,
不允许使用 body 元素。
MUST 包含一个 有效的文档片段, 该片段符合 7.1.2 XHTML 要求中定义的 XHTML 内容文档模型。
如果 [svg]
title
元素包含
带标记文本,则该标记 MUST 只包含在
HTML 命名空间 [infra]
中声明的元素。
虽然 [svg] title 元素允许标记
元素,但对此
特性的支持有限。建议使用纯文本标题以获得最大
互操作性。
指定时,
epub:type
属性 MUST
只能包含在可呈现元素 [svg] 上。
SVG 内容模型允许作者包含
带命名空间的属性,因此本规范不需要允许
epub:type
属性或词汇关联
机制。
然而,通过引用嵌入的 SVG 与通过包含嵌入的 SVG 之间的一个关键区别是,
通过包含嵌入的 SVG 不能在其根
svg
元素
[svg] 上具有
epub:prefix 属性。更多信息请参阅 5.3.4
prefix 属性。
本节为非规范性内容。
与印刷书或 PDF 文件不同,EPUB 出版物被 设计为可以变化。内容 会流动或重排,以适应屏幕并满足用户需求。如 Rendering and CSS 中所述,“内容呈现 会适应用户,而不是要求用户适应某种特定的内容呈现。” [epub-overview-34]
但这一原则并不适用于所有类型的文档。有时内容和设计高度 交织,以至于不可能将其分离。任何外观变化都可能改变 含义或丢失所有含义。当可重排布局不适合内容时,固定布局文档提供 对呈现的更大控制。
固定布局文档不同于reflowable EPUB
内容文档,因为阅读系统会按文档内元数据指定的一组宽度和高度
呈现它们。这允许以像素精确的方式定位文档内容。
任何外来资源也可以被指定为具有
固定布局(尽管这些资源需要
回退到 EPUB 内容文档)。例如,图像外来资源经常用于固定布局的书脊中,
尤其是在卷动布局中。
EPUB 内容文档或外来资源是否表示固定布局文档 取决于出版物的布局。预分页和 卷动固定布局默认都期望从 书脊引用的所有项都是固定布局 文档(尽管在预分页 布局的情况下可以覆盖此行为)。也可以覆盖可重排布局以添加预分页固定布局 文档。
固定布局文档的布局尺寸 从各自的 EPUB 内容文档中获取。文档在 阅读系统中的呈现方式取决于所使用的布局 — 它们以预分页方式显示 (每个视口或合成跨页位置一个),也可以作为连续卷动呈现。
EPUB 3 支持多种用于表示固定布局内容的格式。当需要固定布局 内容时,格式选择将取决于许多因素,包括所需 精度、文件大小、可访问性等。本文档不试图 规定格式选择。
特别是,在书脊中使用图像已知在 分发和可访问性方面都有问题。并非所有供应商都接受书脊中包含图像的 EPUB 出版物, 即使要求提供 EPUB 内容文档回退项,阅读系统也并不 总是为用户提供访问这些回退项的选项。它们的使用只建议用于 支持卷动布局的专门生态系统,例如漫画和 manga。
本节定义 固定布局文档尺寸属性的表达和解释规则。
固定布局文档按适用于其格式的方式指定其初始包含 块 [css2]:
对于 XHTML 固定布局文档,
初始
包含块 [css2]
从 viewport
meta 标签中 REQUIRED 的 height 和
width 定义获得,其中:
height
属性 MUST 以正
值作为其值,该值为一个正数字 [css2]
或关键字
device-height;并且
width 属性 MUST 以一个正
数字 [css2]
或关键字
device-width 作为其值。
device-width 和 device-height 值分别指阅读系统
视口宽度和高度的 100%。
height 和 width 定义 MUST
指定在 [html] head 元素中文档顺序的第一个
viewport meta 标签中。阅读系统
会忽略后续的 viewport meta 标签。
EPUB 创建者 MUST NOT 在一个 viewport meta 标签中指定多个
height 或
width 定义。
对于 SVG 固定布局文档,
初始包含块 [css2]
尺寸
MUST 使用 viewBox
属性 [svg] 表达。
对于从书脊引用的图像外来资源, 初始 包含块 [css2] 从图像的宽度和高度 元数据获得。有关此元数据如何存储的信息,请参阅该图像格式的 文档。
初始包含块定义只影响其 定义所在的文档。同一出版物中其他内容文档中的包含块 尺寸可以不同。
本节定义可同时用于 XHTML 和 SVG 内容文档的技术要求。
本节为非规范性内容。
CSS 是开放 Web 平台不可或缺的一部分。读者、出版商和文档作者 都期望 CSS “直接可用”,就像他们期望 HTML 直接可用一样。
过去,EPUB 定义了一个 CSS 配置文件,强制支持某些属性,并 为许多其他属性提供带前缀版本。虽然 CSS Working Group 不再 建议使用带前缀属性,但本规范保留了一些带前缀 属性,以避免破坏现有内容。但除本 节中定义的少量例外外,EPUB 服从 W3C 对 CSS 的定义,并 期望阅读系统以 主要浏览器的水平支持它。
虽然阅读系统预期支持CSS 快照中定义的 CSS [epub-rs-34],但现实是大多数 阅读系统目前并不支持 CSS 的所有 所需特性,并且经常会修改 EPUB 出版物中定义的默认 呈现,并允许用户更改它。因此,样式必须适应这些 现实。更多信息请参阅 7.4.1.3 阅读系统支持注意事项。
CSS 样式表:
MAY 包含任何 CSS 属性,但有以下 例外:
它 MUST NOT 包含
direction
属性 [css-writing-modes-3]。
它 MUST NOT
包含 unicode-bidi
属性 [css-writing-modes-3]。
MUST 以 UTF-8 或 UTF-16 [unicode] 编码, 推荐编码为 UTF-8 RECOMMENDED。
本节为非规范性内容。
已知以下 CSS 特性在 EPUB 阅读系统中 支持尤其容易出问题:
阅读系统引发的分页可能与样式表产生不良交互,因为阅读 系统有时使用列进行分页。这可能导致 视口尺寸值不正确。固定和绝对定位尤其成问题。
某些类型的屏幕会很差地呈现动画和过渡(例如,具有 高延迟的屏幕)。
阅读系统通常会设置 EPUB 出版物样式的某些方面(例如,设置适合应用程序的边距),并可能 覆盖默认指令。为减少冲突以及任何潜在的呈现 问题,建议在公开可用时查阅阅读系统的用户代理样式表, 并调整样式选择以获得最佳显示效果。
此外,允许用户更改外观(例如,选择
字体、文本对齐方式例如,选择
字体、文本对齐方式或前景色和背景色)的阅读系统,也会修改 EPUB 出版物中的某些 CSS
呈现方向。由于 CSS 优先级规则,建议
限制在 EPUB 内容文档中使用 [html]
style
属性,以免
对用户体验产生负面影响(即用户的样式选择无法
普遍应用)。虽然某些阅读系统会覆盖内联样式,但这种
行为并无保证。
EPUB 内容文档 MAY
包含使用相应底层规范
([html] 和 [svg])中为此定义的设施的脚本。当 EPUB
内容文档
包含脚本时,本规范将其称为脚本化内容文档。此
标签也适用于包含 [html]
form
元素的 XHTML 内容文档。
scripted 属性用于清单 item 元素,
以表示 EPUB 内容文档是
脚本化内容文档。
当 [html] script 元素包含数据
块 [html] 时,它不表示脚本化内容。
[svg] 截至发布时未定义数据块,但如果 未来更新添加这一概念,相同的排除规则将适用。
请注意,阅读系统必须表现得像是已经为每个 源 [html] 分配了唯一的 EPUB 出版物。实际上,这 意味着脚本无法在 EPUB 出版物之间共享数据。
脚本使用的上下文也决定 阅读系统赋予它的权利和限制(更多 信息请参阅 脚本 [epub-rs-34])。
阅读系统可能以禁用其他 EPUB 能力和/或提供不同呈现方式和用户体验的方式呈现脚本化内容文档(例如,通过 禁用分页)。
EPUB 3 定义了两种脚本执行上下文:
脚本可以在其他上下文中执行,但阅读系统对这些
上下文的支持
是可选的。例如,脚本化 SVG 文档可能从 [html]
object
元素引用。
更多信息请参阅脚本处理 [epub-rs-34]。
代码是直接嵌入在 script 元素中,还是通过该
元素的 src 属性引用,都不影响其执行上下文。
脚本使用的上下文会影响脚本能够执行的操作以及 阅读系统支持它的可能性,如以下小节所述。
关于两种上下文区别的示例,请参阅 A.2 脚本上下文。
容器受限脚本是以下任一项:
[html]
script
元素的实例,包含在一个 XHTML
内容文档中,而该 XHTML 内容文档
使用 [html]
iframe
元素嵌入在 XHTML 内容文档中。
[svg] script
元素的实例,包含在一个 SVG 内容文档中,而该
SVG 内容文档
使用 [html]
iframe
元素嵌入在 XHTML 内容文档中。
容器受限脚本 MUST
NOT 包含
用于修改嵌入它的 EPUB 内容文档的 DOM 的
指令(即包含 iframe 元素的那个文档)。它也 MUST NOT 包含
操纵其包含矩形大小的指令。
请注意,阅读系统对 容器受限脚本的支持仅在 可重排文档中被推荐 [epub-rs-34],而在固定布局文档中为可选。
确保容器受限脚本在不支持脚本的阅读系统中优雅降级 (见 7.4.2.5 脚本回退)。
选择将脚本使用限制在容器受限模型中,将 确保脚本化和非脚本化内容之间具有更一致的用户体验 (例如,一致的分页行为)。
书脊级脚本是包含在顶级内容文档中的 [html]
script
或 [svg] script
元素的实例。
请注意,阅读系统对书脊级脚本的支持仅建议用于固定布局文档 和设置为 滚动的可重排文档 [epub-rs-34]。此外,阅读系统 在所有其他上下文中的支持 是可选的。
包含书脊级 脚本的顶级内容文档 SHOULD 在脚本被禁用或不可用时,仍可供用户消费且不会有任何 信息丢失或其他 显著劣化(例如,通过 采用渐进增强技术或回退项)。如果未在顶级 内容文档中考虑非脚本环境,可能导致 EPUB 出版物不可读。
本节为非规范性内容。
在向 EPUB 出版物添加脚本功能时,需要考虑各种可能的阅读系统 实现(例如,并非所有设备都有物理 键盘,而且在许多情况下,软键盘只会为文本输入元素激活)。 因此,不要只依赖键盘事件;始终提供触发所需操作的 替代方式。
包含脚本的EPUB 内容文档 SHOULD 采用 相关 [wai-aria] 可访问性技术,以确保内容仍能供所有用户 消费。
包含脚本的EPUB 内容文档
MAY
为此类内容提供回退项,可通过使用内在回退机制(例如
[html]
object
和
canvas
元素可用的机制),或者当内在
回退不适用时,使用清单级
回退。
脚本 MUST 只生成核心媒体类型资源或其片段。
结构语义为元素所起的具体结构目的添加额外含义。
epub:type
属性用于在 EPUB 内容文档中表达领域特定语义,其携带的结构
信息补充底层
词汇。它也可用于媒体覆盖文档中,以反映正在播放内容的
语义
结构。
所应用的语义会细化其所在元素的含义,但不会像使用类似的
role
属性 [html] 时那样,改变其对辅助技术的性质。
换言之,该属性不会增强内容的可访问性;它只提供关于用途的提示。
语义元数据丰富内容,以便在出版工作流和作者定义的 用途中使用。它还允许阅读系统了解更多关于文档结构和内容 的信息(例如,在媒体覆盖中启用可跳过性和 可退出性)。
本规范定义了一种使用属性轴添加结构语义的方法:
不添加新元素,而是可以将 epub:type 属性
附加到现有元素,以添加所需语义。
epub:type
http://www.idpf.org/2007/ops
一个以空白分隔的 [xml] 紧凑 URL列表, 并带有 5.3 词汇关联机制中定义的限制。
虽然 epub:type 属性在性质上类似于
role
属性 [html],但这些属性服务于不同目的。
epub:type 属性的值不会像这些技术使用的可访问性
API 映射那样,通过辅助
技术(如屏幕阅读器)增强访问。
这意味着向语义中性的元素
例如 [html]
div
和
span
添加 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 词汇 关联机制。
本节为非规范性内容。
虽然 EPUB 3 主要被视为一种视觉阅读格式,但 EPUB 出版物在设计上 支持其听觉呈现。实现这一点主要有两种方式:
通过文本转语音呈现阅读 EPUB 出版物的体验,由用户的 阅读系统使用内置合成语音来控制。 此功能通常称为 “朗读”能力,尽管确切名称可能因阅读系统而异。
虽然 EPUB 3 阅读系统提供的朗读功能提高了需要语音辅助的残障用户的 可访问性,但它不同于专用辅助技术(通常称为屏幕 阅读器)提供的文本转语音呈现。朗读功能设计为供所有用户使用,因为它存在于阅读 系统内部,而不是作为单独的应用程序。例如,旅行中的人可能会从视觉 阅读切换到听觉阅读以避免晕动症。虽然两种类型的文本转语音呈现都可能存在 于用户系统上,并且都可用于阅读 EPUB 出版物,但本规范只 关注阅读系统提供的内置功能。
另一方面,媒体覆盖依赖 EPUB 出版物的生产者提供音频 并将其与文本同步。媒体覆盖允许 EPUB 出版物兼作更 传统的有声书,但好处是用户也可以在 音频播放时跟随文本阅读。
虽然媒体覆盖通常用于提供专业朗读,但这只是一种惯例。 也可以录制内容的文本转语音播放并使用媒体覆盖进行同步, 而且真人和合成发声经常混合使用(例如,正文使用真人朗读,而后辅文使用合成 朗读,因为让人类阅读后辅文更繁琐且耗时)。也 可以使用媒体覆盖来指定阅读系统使用其文本转语音能力来读取关联文本,但实际上此 功能 支持得并不好。
媒体覆盖播放和文本转语音播放并不是互斥的特性。包含通过媒体覆盖提供的预录 旁白的 EPUB 出版物,仍可由用户使用其阅读系统的朗读功能来阅读。
本节为非规范性内容。
目前没有被广泛支持的技术可用于提高文本转语音 播放的质量。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] 的可访问性要求。这将 确保结构和 语义可用于辅助阅读系统播放,并且为无法感知视觉内容的用户提供 文本替代。
本节为非规范性内容。
主流电子书、教育工具以及面向印刷品阅读障碍者格式化的电子书,是包含同步音频旁白的 作品示例。在 EPUB 3 中,这类 书籍可以使用媒体覆盖文档创建,用于描述预录 音频旁白的时间安排以及它与 EPUB 内容文档标记的关系。本规范 将媒体覆盖的文件格式定义为 [smil3] 的一个子集,后者是用于 在 XML 中表示同步多媒体信息的 W3C 推荐标准。
媒体覆盖所实现的文本和音频同步,为任何难以跟随传统图书文本的 用户提供了增强的可访问性。媒体覆盖还 为因任何原因无法阅读文本的读者提供连续聆听体验, 这是传统音频嵌入技术无法提供的。它们甚至可用于 传统上不被视为可访问性关注点的目的(例如语言 学习)。
对于不支持该功能的 EPUB 阅读系统而言,媒体覆盖功能是透明的。在 EPUB 出版物中包含媒体覆盖,不会影响 不感知媒体覆盖的阅读系统像媒体 覆盖不存在一样呈现 EPUB 出版物的能力。
EPUB 中的媒体覆盖并不等同于有声书,因为有声书主要 基于音频,并偶尔以文本作为替代格式提供。W3C [audiobooks] 推荐标准用于构建音频出版物。
虽然本规范的未来版本可能会纳入对视频媒体的支持(例如 同步文本/手语书),但此版本仅支持将音频媒体 与 EPUB 内容文档同步。
MUST 对媒体 覆盖架构有效,如 F.3 媒体 覆盖架构中所定义,并符合 9.3.2.2 媒体覆盖文档定义中表达的所有内容符合性 约束。
MAY 引用多个 EPUB 内容 文档,但多个媒体覆盖文档 MUST NOT 引用同一个 EPUB 内容文档。
除非另有说明,本节中定义的所有元素 [xml] 都位于
http://www.w3.org/ns/SMIL 命名空间 [xml-names] 中。
smil 元素封装媒体覆盖文档中的所有信息。
head 元素是媒体覆盖文档中元数据的容器。
由于本规范未定义任何必须出现在
媒体覆盖文档中的元数据属性,因此 head 元素是 OPTIONAL 的。
metadata 元素表示媒体覆盖文档的元数据。
metadata 元素是一个扩展点,允许包含来自任何元信息结构化语言的
元数据。
metadata
作为
head
元素的子元素。
无
来自任意命名空间的 [0 个或多个] 元素
本规范不要求媒体覆盖
文档中有任何元数据属性;提供 metadata 元素是为了满足自定义元数据
要求。
body 元素是
媒体覆盖文档中所含演示的起点。它包含
par
和
seq
元素的主序列。
body
epub:type
[optional]
表示 EPUB 内容文档中对应元素的结构语义。
该值是以空白分隔的紧凑 URL列表。 更多信息请参阅 9.3.3.3 覆盖中的结构语义。
id
[optional]
epub:textref
[optional]
引用关联的 EPUB 内容文档,并可选地 标识其中的特定部分。
该值 MUST 是一个path-relative-scheme-less-URL
string,可选地
后跟 U+0023 (#) 和一个 URL-fragment string。
任意顺序:
MUST 至少包含一个 par 或
seq。
seq 元素是媒体对象和/或
子时间容器的顺序时间容器。
seq
epub:type
[optional]
表示 EPUB 内容文档中对应元素的结构语义。
该值是以空白分隔的紧凑 URL列表。 更多信息请参阅 9.3.3.3 覆盖中的结构语义。
id
[optional]
epub:textref
[required]
引用关联的 EPUB 内容文档,并 可选地 标识其中的特定部分。
该值 MUST 是一个path-relative-scheme-less-URL
string,可选地
后跟 U+0023 (#) 和一个 URL-fragment string。
更多 信息请参阅 9.3.3.2.1 覆盖结构。
任意顺序:
MUST 至少包含一个 par 或
seq。
par 元素是媒体对象的并行时间容器。
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]
空
本规范不对 text 元素的 src 属性
施加限制,但建议该属性引用可用 CSS 设置样式的内容,以使与样式信息的关联有效。对于
XHTML,这意味着引用可感知内容。对于 SVG,这意味着
引用路径、基本形状或文本元素。
[epub-rs-34] 不再为阅读系统提供
关于定时媒体播放(即自动启动所引用媒体)的指导。虽然
text 元素的 src 属性可以引用嵌入的
定时媒体(例如通过 [html] video
元素),但引用此类媒体可能会
产生不可预测的结果。
audio 元素表示一个音频媒体片段。
audio
par
元素的 OPTIONAL 子元素。
id
[optional]
src
[required]
引用音频文件的 relative- 或 absolute-URL string [url]。该音频文件 MUST 是 核心媒体类型 资源表中列出的音频 格式之一。
以可变
比特率编码的 MP3(audio/mpeg)音频文件 [mp3]
不太适合精确跳转,因为跳转精度
通常与音轨长度成反比。因此,
媒体覆盖 SHOULD NOT 使用可变比特率 MP3 音频。
clipBegin
[optional]
一个时钟值,指定物理媒体中 对应于音频片段起点的偏移。
参见 A.4 时钟值。
clipEnd
[optional]
一个时钟值,指定物理媒体中 对应于音频片段终点的偏移。
参见 A.4 时钟值。
终止位置的时间偏移 MUST 位于
clipBegin 属性中指定的起始偏移之后。
空
本节为非规范性内容。
出版物的预录旁白可以表示为一系列音频片段,每个片段 对应 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 属性同样引用对应音频片段的
位置,并添加 clipBegin 和 clipEnd 属性,以指示该片段中的特定
偏移。
par 元素按顺序放在一起,以形成短语或
句子的序列。并非 EPUB 内容文档中的每个元素都会在媒体覆盖文档中有对应的
par 元素,只有与音频
旁白相关的元素才会有。
par 元素也可以添加到 seq 元素中,以定义更
复杂的结构,例如部和章(参见 9.3.3.2.1 覆盖结构)。
在本节中,假定 EPUB 内容文档是一个 XHTML 内容 文档。虽然媒体覆盖可以与 SVG 内容 文档一起使用,但播放 行为可能不一致,因此不保证互操作性。
阅读系统对可重排和固定布局 EPUB 内容 文档播放的支持不受保证。阅读系统分页策略的差异意味着 某些阅读系统只会在一种或另一种布局 格式中支持媒体覆盖。
媒体覆盖
文档的
body
由两个元素组成:
par
元素和
seq
元素。这些元素的顺序表示阅读系统在
播放期间如何呈现对应 EPUB 内容文档中的内容。
par 元素表示一个内容片段,例如一个词、短语、
句子、表格单元、列表项、图像,或标记中其他可识别的内容片段。
每个元素同时标识要显示的内容(在
text
元素中)
和播放期间要同步的音频(在
audio
元素中)。
seq 元素表示序列 — 由 seq 和/或
par 元素组成的集合,它们共同表示内容的逻辑组件。
该元素用于表示嵌套容器,例如章节、旁注、
页眉、表格、列表和脚注。它允许这些
容器固有的结构保留在媒体覆盖文档中。
seq 元素 MUST 包含
epub:textref 属性。由于
seq 元素不
提供同步指令,因此此属性允许阅读系统将该片段
匹配到文本中的一个位置。
将章节、图、表格和脚注等结构分组到
seq 元素中的原因,是为了让阅读系统能够在播放期间识别它们的起始和
结束位置。随后,阅读系统可以提供
适合内容布局的播放选项,例如跳过长图、关闭
分页符播报的呈现(参见 9.3.4 可跳过性和
可退出性),或自定义阅读模式以适应表格等
结构。
epub:textref 属性和
text
元素的 src
属性都可以包含一个 URL-fragment string,用于引用关联 EPUB 内容文档中的特定部分(例如
通过其 ID 引用某个元素)。
对于 XHTML 和 SVG 内容文档,URL-fragment string SHOULD 分别是通过 ID 对特定元素的引用,或 一个 SVG 片段 标识符 [svg]。
其他片段标识符方案 MAY 使用,但阅读系统可能不支持 此类标识符。
本节为非规范性内容。
媒体覆盖的粒度级别取决于 EPUB 内容文档
如何标记,以及
text
元素的
src 属性和
seq
元素的 epub:textref
属性中使用的片段标识符类型。例如,在引用 [html] 元素时,如果最细
的标记级别在段落级,那么这就是媒体覆盖同步可能达到的最细级别。
同样,如果有段落内标记,例如
表示短语或句子的 [html]
span
元素,则媒体覆盖中可以实现更细粒度。
更细粒度会在用户按词或短语导航以及搜索文本时,为同步播放提供更精确的结果,
但会增加媒体覆盖文档的文件大小。不依赖元素存在的片段
标识符方案,在受支持的情况下,能够提供更细粒度。
本规范允许使用文本转语音(TTS)— 将 EPUB 出版物的文本 内容以合成语音作为人工人声呈现 — 作为预录音频片段之外的补充。
当媒体覆盖
par
元素省略其
audio
元素时,其
text
元素
可以在阅读系统中通过 TTS 呈现。如果该文本片段不适合
TTS 呈现(例如不是文本元素和/或没有文本回退),则可能
产生意外结果。
有关在 EPUB 出版物中使用 TTS 技术的更多信息,请参阅 EPUB 3 Text-to-Speech Support [epub-tts-10]。
要在媒体覆盖文档中表达结构语义,
epub:type
属性 MAY 指定在
par、
seq
和
body
元素上。
epub:type 属性有助于阅读系统执行适合所指示语义类型的行为。
这些行为的示例包括可跳过性和可退出性以及表格阅读模式
[epub-rs-34]。
当前正在播放的 EPUB 内容文档元素的视觉呈现信息 MAY 使用作者定义的类在 CSS 样式表中表达。
使用时,类名 MUST 使用 包文档中的 active-class 和 playback-active-class 属性声明。
每个属性所定义的每项属性中 MUST 正好定义一个 CSS 类名。 每个属性 MUST 定义一个有效的 CSS 类 名,且不包含任何选择器 [css2]。 本规范不为 这些属性的使用保留名称。
可以为指定 CSS 类定义任何 CSS 属性 MAY。每个 具有关联 媒体覆盖文档的 EPUB 内容文档 都必须包含一个 CSS 样式表(嵌入式或链接式),其中包含类定义。 在缺少此类定义时,阅读系统可能会提供自己的样式, 或者完全不提供样式。
active-class 和 playback-active-class 属性 MUST
NOT
与 refines 属性结合使用,因为
它们始终适用于整个 EPUB 出版物。
如果某个 EPUB 内容文档
被 媒体覆盖文档全部或部分引用,则其清单
item
元素 MUST 指定
media-overlay 属性。该属性 MUST 引用
对应媒体覆盖文档的清单 item 的 ID [xml]。
media-overlay 属性 MUST 只指定在
EPUB 内容文档的清单
item 元素上。
媒体覆盖文档的清单项 MUST 具有媒体类型
application/smil+xml。
整个 EPUB 出版物的持续时间 MUST
使用
包文档中的
带有 duration 属性的
meta
元素指定。
此外,每个 媒体覆盖文档的持续时间 MUST 使用
refines 属性提供,以将每个
持续时间声明关联到其对应的清单
item。
每个媒体覆盖文档的持续时间之和 SHOULD 等于总持续时间,误差不超过一秒。
虽然由于将时间舍入到最接近的秒的小数部分,各个持续时间之和可能无法完全匹配总时长, 但超过一秒的差异表示存在由其他问题造成的不匹配。
旁白者信息 MAY 也可以使用包文档中的
narrator 属性指定。也可以指定要应用于
当前正在播放的 EPUB 内容文档
元素的作者定义 CSS 类名。
media: 前缀被保留,用于在包元数据中包含这些
属性。
阅读时,用户可能想开启或关闭内容的某些特性,例如
脚注、页码或其他类型的次要内容。此功能称为
可跳过性。阅读系统使用媒体覆盖
元素的 epub:type 属性提供的语义信息,
来确定何时向用户提供可跳过特性的选项。
以下语义 MAY 用于启用可跳过性:
不过,此列表并不详尽。它表示 Structural Semantics Vocabulary [epub-ssv-11] 中 阅读系统最可能提供可跳过性选项的术语。
可退出项是嵌套结构,例如表格和列表,用户可能希望 跳过它们,从嵌套结构之后的紧邻位置继续阅读。 可退出性功能不同于可跳过性功能,因为它不是启用或 禁用整类项目,而是提供从中退出的方式(例如,用户可以先听取 一部分内容,然后选择退出)。
以下语义 MAY 用于启用可退出性:
不过,此列表并不详尽。它表示 Structural Semantics Vocabulary [epub-ssv-11] 中 阅读系统最可能提供 可退出性选项的术语。
有时可退出结构可能包含可退出结构。例如,表格由 许多行和单元格组成,用户可能希望分别从中退出。阅读 系统对从此类结构退出的支持很复杂,目前支持并不好。 建议在更好的支持可用之前,避免标识嵌套的可退出结构。
本节为非规范性内容。
EPUB 3 明确构建在开放 Web 平台之上,以便它能够利用其底层技术内置的结构、语义以及 由此带来的可访问性。
用于创作可访问 Web 内容的一些关键标准包括:
创建可访问 Web 内容的要求和实践记录在 [wcag2] 中。
[wai-aria] 规范 定义了角色、状态和属性,用于使不使用原生 HTML 元素和属性的动态内容 变得可访问。它还提供了一组用于导航网页的 地标。
[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 的生产者引用 最新的可访问性要求)。
本节为非规范性内容。
EPUB 出版物的特殊性在于其结构。EPUB 格式提供了一种方式,用于 表示、打包和编码结构化且语义增强的 Web 内容 — 包括 HTML、CSS、SVG、JavaScript 和其他资源 — 以便 在单文件容器中分发。
这意味着 EPUB 3 的安全与隐私问题主要与这些 格式的特性相关,并且与 Web 内容带来的威胁高度相似。
虽然内容风险通常被等同于蓄意恶意的创作意图,但要注意, 许多出于善意而遵循的实践也可能使用户暴露于隐私和安全问题中。 本节其余部分探讨 EPUB 3 的风险模型,以帮助识别并缓解这些 风险。
有关与阅读系统相关的风险,请参阅 [epub-rs-34] 的安全与隐私章节。
本节为非规范性内容。
EPUB 出版物会对毫无戒备的用户造成各种隐私和安全 威胁。其中许多威胁与 Web 内容交叉,但 EPUB 也引入了自己独有的攻击方法, 可用于诱骗用户访问恶意内容,或诱骗用户提供敏感 信息。需要注意的一些较重要的攻击向量包括:
EPUB 3 允许某些 出版资源被远程 托管,特别是那些大小可能会对 EPUB 出版物的下载和 打开产生负面影响的资源(例如音频、视频和字体)。虽然按预期使用时对用户有帮助, 但这些例外也可用于向出版物中注入恶意内容。
此威胁并不限于访问恶意行为者创建的内容。如果来自 不可信来源的内容(例如第三方音频和视频)嵌入到 EPUB 出版物中,用户始终有可能收到受感染的 资源。
在分发时检查恶意软件和漏洞利用也并不总是可靠,因为 与嵌入在 EPUB 容器中的资源不同,恶意内容可以在出版后任意时间被替换。
EPUB 的来源特定于每个阅读系统
实现,并且在阅读系统外部不可知。因此,即使
远程资源托管在安全的 Web 服务器上,
也无法使用需要指定允许来源的安全
特性,例如 CORS、Content-Security-Policy
或 X-Frame-Options 的标头。
无论是否有意,指向外部 Web 站点和资源的链接都会使用户暴露于 潜在漏洞利用之下,这些漏洞利用可能会危及其阅读系统或操作系统。虽然 外部链接通常会在 Web 浏览器中打开,并受浏览器安全 模型约束,但这并不能保护用户免受所有漏洞利用影响。
即使意图并非恶意,向外部链接添加跟踪信息也 会造成用户隐私问题,因为它可能允许在未经用户 同意的情况下跟踪用户活动。
断链劫持 — 即域名过期并被另一方购买以利用 指向该域名的链接 — 也可能导致用户被带到非预期资源。
嵌入在 EPUB 容器中的资源并不免受恶意行为者影响,特别是当 EPUB 出版物来自不可信来源时。资源可能包含漏洞利用,或 将敏感信息提交给非预期方的表单。此类行为者也可能尝试 使用文件间接技术(例如符号 链接或文件别名)访问远程资源。
使用第三方内容(例如游戏和测验)也可能导致安全和 隐私问题,如果这些内容无法被完全审查。
当脚本可以访问设备网络时,它会提供多种渠道来利用 用户:
网络访问还可能允许第三方内容利用用户。
使用数字版权管理方案对 EPUB 出版物进行加密和解密, 可能会允许关于用户、其使用的供应商以及其阅读选择的个人可识别信息 被传递给第三方。水印同样如此。
这些攻击的有效性通常还取决于诱骗用户相信他们正在交互的 出版物来自可信来源。这些欺骗可以采取 以下形式:
EPUB 出版物可以包含关于自身的虚假信息,以诱骗用户相信 它来自合法来源。例如,恶意行为者可能伪造该作品的 标题、作者、标识符和出版者。
虽然这种错误信息本身不会造成直接危害,但它可能导致用户 信任 EPUB 出版物中的恶意表单、链接和其他内容,误以为它 来自可靠来源。
恶意行为者还可以将其内容设计成模仿或复制某个平台的 体验,以诱骗用户信任其内容。
EPUB 3 试图避免扩展其所构建于其上的底层技术,但它确实引入了 一些新特性。不过,这些特性的受限范围限制了它们可能带来的威胁:
内容切换和多媒体控制元素只允许在 HTML 中隐藏 内容以及无脚本控制播放。此外,这些在 EPUB 3.0 首个版本中 引入的特性已弃用, 不再建议使用。
HTML 和 SVG 中的结构语义表达 只允许对元素进行注释。
一个潜在例外是
epubReadingSystem 对象
[epub-rs-34],它允许查询关于
当前阅读系统的信息。建议仅
使用此对象暴露的信息来改进 EPUB 出版物的呈现(即,避免使用这些
信息对用户及其环境进行画像)。
虽然不可能阻止每一种利用用户的方法,但内容的 安全构建责任在于其创建者。这需要采取预防措施,以限制 EPUB 出版物暴露于上一节所描述的各种恶意 利用之下。
一些实际步骤包括:
还应考虑用户的隐私权,避免有意收集数据。理想情况下,用户 SHOULD NOT 被跟踪,但这并不适用于所有类型的出版。
当必须跟踪用户时(例如在教育课程作业中),SHOULD 在打开 EPUB 出版物之前获得用户对收集 信息的批准。如果这 不可能,则 SHOULD 在用户首次访问 EPUB 出版物时获得 许可。用户 SHOULD 被允许选择退出跟踪,并被提供管理和 删除所收集的关于他们的任何数据的能力。
还需要考虑对用户信息的无意收集。链接到出版者 Web 站点上的内容, 或在其服务器上远程托管资源,可能导致对 用户进行画像,特别是在 URL 中添加唯一跟踪标识符时。
在 EPUB 出版物内收集和存储用户信息时(例如通过使用 cookie 和 Web 存储 [html]),需要考虑同一阅读系统上其他 EPUB 出版物造成数据窃取的可能性。虽然 [epub-rs-34] 为 EPUB 出版物引入了唯一来源要求, 这限制了潜在攻击,但仍存在阅读系统允许 EPUB 出版物访问共享持久化存储的风险(例如未更新的旧阅读系统和不符合规范的新阅读系统)。因此,敏感用户数据 SHOULD NOT 被 存储在持久化存储中。如果必须存储敏感数据,则 SHOULD 对其 加密,以防在发生漏洞利用时被轻易访问。
当必须使用数字版权管理方案时,优先选择不利用或 向外部方传输关于用户或其内容的信息以执行加密或 解密的方案。
当必须使用水印时,应遵循行业隐私最佳实践,例如 Privacy Principles for Digital Watermarking [watermark-privacy] 中定义的原则。
为最大限度降低安全与隐私风险,EPUB 出版物 SHOULD 以 长期保存为目标进行制作。以这种方式创建的 EPUB 出版物通常是自包含的, 不依赖网络访问,也未使用数字版权管理加密,从而移除了许多 可能的攻击向量。[iso22424] 是这种 EPUB 出版物保存格式的一个示例。虽然可以理解并非所有 EPUB 出版物都能达到这些 自包含级别,但尽可能遵循这些实践仍将有利于整体用户 隐私和安全。
本节为非规范性内容。
请考虑以下 包文档和 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 示例。
请考虑以下示例包文档:
<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>
从这些示例可知:
此示例演示如何使用 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>
以下是允许的时钟值示例:
5:34:31.396 = 5 小时、34 分钟、31 秒和 396 毫秒
124:59:36 = 124 小时、59 分钟和 36 秒
0:05:01.2 = 5 分钟、1 秒和 200 毫秒
0:00:04 = 4 秒
09:58 = 9 分钟和 58 秒
00:56.78 = 56 秒和 780 毫秒
76.2s = 76.2 秒 = 76 秒和 200 毫秒
7.75h = 7.75 小时 = 7 小时和 45 分钟
13min = 13 分钟
2345ms = 2345 毫秒
12.345 = 12 秒和 345 毫秒
下表列出了允许在公共 和 系统 标识符 [xml] 中使用的文档类型声明。 [xml]
这些外部标识符 MAY 仅可用于具有所列媒体类型 [rfc2046] 的出版资源,这些媒体类型在其清单声明中指定。(更多 信息请参阅 3.9 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
|
本节为非规范性内容。
由于 EPUB 3 早期版本中使用的 viewport meta 标签的 Safari
HTML 定义不是一个正式承认的标准,本规范定义了一种
基本语法,以允许为 XHTML 固定布局文档表达
宽度和高度尺寸。
此语法的语法形式也受到 viewport
meta 标签解析算法的影响,如 [css-viewport-1] 中所定义。
该语法有意尽可能保持通用,因为定义所有可能的属性和值不在本规范范围内。 它只定义了属性和值对的基本要求,以及表达式之间可能的分隔符。
对于 XHTML 固定布局文档,viewport
meta 标签 [html] MUST 具有符合以下定义的 name
和 content 属性:
name
属性 [html] 的值在空白规范化 [xml] 后 MUST 为 viewport。
content
属性 [html] 的值在空白
规范化 [xml] 后 MUST 具有以下形式:
| 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] 语法允许在
meta 元素上使用的任何其他属性,没有限制。
有关指定 height 和 width 属性
及其预期值的更多信息,请参阅 7.3.2
固定布局文档尺寸。
虽然 viewport meta 标签允许使用除
height 和 width 之外的属性,也允许省略
height 和 width 的值,但强烈不建议这样使用。设置其他
属性可能会对固定布局文档的呈现产生意外后果。
本附录定义了一组通用机制,本规范中的属性可通过这些机制引用 词汇表中的术语。它还定义了供这些属性使用的 EPUB 特定词汇表。
词汇表定义表中的字段具有以下隐含要求:
使用 [xmlschema-2] 数据类型指定 REQUIRED 的值类型。
数据类型使用 xsd: 前缀声明。
指定该属性 MAY 指定于哪些出版资源类型。
此字段出现在 properties 属性中使用的属性上。
指定该属性 MAY 被指定的次数,无论是全局指定,还是附加到 另一个元素或属性上。
最小基数为一的属性 MUST 被指定。
描述该属性的用途,并指定必须遵循的任何附加用法要求。
提供非规范性用法示例。
标识该属性 MAY 与哪些元数据关联。
此字段出现在定义主表达式 和子表达式以及关系的属性上。
指定属性在元数据中出现时 MUST 使用的名称。
此词汇表中的属性可用于
meta
元素的 property 属性。
除非其“扩展”字段中另有说明,本节中定义的属性用于
定义子表达式:换句话说,携带本节中定义属性的
meta
元素
MUST 具有一个
refines 属性,用于引用被增强的资源或表达式。
用于引用这些属性的前缀 URL 是
http://idpf.org/epub/vocab/package/meta/#。
| 名称: |
alternate-script
|
|---|---|
| 描述: |
此属性通常附加到 |
| 允许值: |
xsd:string
|
| 基数: |
zero or more
|
| 扩展: | 所有属性。 |
| 名称: |
belongs-to-collection
|
|---|---|
| 描述: |
也可以使用 每个合集实例 SHOULD 使用
合集 MAY 通过附加 EPUB 出版物在合集中的位置 MAY 通过
附加 |
| 允许值: |
xsd:string
|
| 基数: |
zero or more
|
| 扩展: | 适用于 EPUB 出版物,并可细化自身的其他实例。 |
| 名称: |
collection-type
|
|---|---|
| 描述: |
当 当未指定 scheme 时,本规范还定义以下合集类型:
|
| 允许值: |
xsd:string
|
| 基数: |
zero or one
|
| 扩展: |
belongs-to-collection
|
| 名称: |
display-seq
|
|---|---|
| 描述: |
此属性仅适用于尚未定义优先规则的情况 (例如,creator 根据其 在文档顺序中的出现位置获得优先级)。 |
| 允许值: |
xsd:unsignedInt
|
| 基数: |
zero or one
|
| 扩展: | 所有属性。 |
| 名称: |
file-as
|
|---|---|
| 描述: | file-as 属性提供用于排序的关联
属性的规范化形式。 |
| 允许值: |
xsd:string
|
| 基数: |
zero or one
|
| 扩展: | 所有属性。 |
| 名称: |
group-position
|
|---|---|
| 描述: |
一个 EPUB 出版物可以属于多个组。 |
| 允许值: | 一个 xsd:unsignedInt,或一系列以小数点分隔的数字(例如
1 或 2.2.1)。
|
| 基数: |
zero or one
|
| 扩展: | 所有属性。 |
| 名称: |
identifier-type
|
|---|---|
| 描述: |
当 |
| 允许值: |
xsd:string
|
| 基数: |
zero or one
|
| 扩展: |
dc:identifier,
dc:source
|
| 名称: |
pageBreakSource
|
|---|---|
| 描述: |
为 EPUB 出版物中分页符标记的来源 提供唯一标识符。 当标识符符合公认方案(例如 ISBN)时, 建议使用 URN 作为值。 如果该来源不存在唯一标识符,建议使用能尽可能明确标识来源的文本 描述(例如文字 处理文档的标题)。 如果分页符标记是 EPUB 出版物独有的(例如
仅数字版),则 MUST 指定值 “ |
| 允许值: |
xsd:string
|
| 基数: | 当出版物包含页码列表和/或分页符标记时正好一个, 否则 为 0。 |
| 扩展: | 适用于 EPUB 出版物。不扩展其他属性。 |
pageBreakSource 属性取代 source-of
属性,用于标识 EPUB 出版物静态分页的来源。
有关如何提供可访问页面导航的信息,请参阅 [epub-a11y-tech-11]。
| 名称: |
role
|
|---|---|
| 描述: |
当 为个人或组织分配多个角色时,应将每个角色关联到
单独的 |
| 允许值: |
xsd:string
|
| 基数: |
zero or more
|
| 扩展: |
,
,
dc:publisher
|
不再建议在 EPUB 出版物中使用 source-of 属性。要指示
EPUB 出版物的分页来源,请参阅 pageBreakSource 属性定义。
由于已有大量 EPUB
出版物使用 source-of 属性,因此该属性不会被正式弃用,
但建议将其视为已弃用。有关其用法的信息,请参阅 [epub-33] 中的 source-of 属性
定义。
| 名称: |
term
|
|---|---|
| 描述: |
|
| 允许值: |
xsd:string
|
| 基数: |
zero or one
|
| 扩展: |
|
| 名称: |
title-type
|
|---|---|
| 描述: |
当 |
| 允许值: |
xsd:string
|
| 基数: |
zero or one
|
| 扩展: |
dc:title
|
此词汇表中的属性可用于元数据
link
元素的 rel 和 properties 属性。
用于引用这些属性的前缀 URL 是
http://idpf.org/epub/vocab/package/link/#。
以下值可用于 link 元素的 rel 属性,以建立在
href 属性中引用的资源的关系。
| 名称: |
alternate
|
|---|---|
| 描述: |
|
| 基数: |
Zero or more
|
| 扩展: | 仅适用于 EPUB 出版物或合集。当存在 refines
属性时 MUST
NOT 使用。 |
| 示例: |
<link rel="alternate" href="package.json"
media-type="application/json-ld"/>
|
| 名称: |
record
|
|---|---|
| 描述: |
指示被引用的资源是一个元数据记录。 指定此关键字时,记录的媒体类型 MUST 在
有关常见链接元数据记录类型列表,请参阅 EPUB Linked Metadata Guide 如果无法从媒体类型识别记录类型,则可在
|
| 基数: |
Zero or more
|
| 扩展: | 仅适用于 EPUB 出版物或
合集。当存在 refines 属性时 MUST NOT 使用。 |
| 示例: |
<link rel="record" href="book/52.atom"
media-type="application/atom+xml;type=entry;profile=opds-catalog"/>
|
| 名称: |
voicing
|
|---|---|
| 描述: |
指示被引用的音频文件为由 refines 属性指定的表达式或资源(通常是标题或创作者)提供听觉表示。 指定此关键字时,音频文件的媒体类型 MUST 在
|
| 基数: |
Zero or more
|
| 扩展: | 所有属性。使用此值时,refines 属性
MUST 存在。
|
| 示例: |
<link refines="#title" rel="voicing" media-type="audio/mpeg"
href="title.mp3" />
|
以下值可用于
link
元素的
properties 属性,以建立被引用资源表示的记录类型。
这些值用于无法通过媒体
类型唯一识别的记录格式。
| 名称: |
onix
|
|---|---|
| 描述: | onix 属性指示被引用的资源是 ONIX 记录
[onix]。 |
| 示例: |
<link rel="record" href="pub/meta/nor-wood-onix.xml"
media-type="application/xml" properties="onix"/>
|
用于引用这些属性的前缀 URL 是
http://www.idpf.org/vocab/rendition/#。
“rendition:” 前缀保留用于
包呈现属性,并且不必在包文档中声明。
| 名称: |
rendition:layout
|
|---|---|
| 描述: |
对于可重排和预分页出版物,全局布局 MAY 针对单个 EPUB 内容 文档被覆盖。 |
| 允许值: |
MUST 为以下值之一: |
| 基数: |
zero or one
|
| 扩展: | 仅适用于 EPUB 出版物。当存在
refines 属性时 MUST
NOT 使用。
|
| 名称: |
rendition:layout-pre-paginated
|
|---|---|
| 描述: |
|
| 应用: |
MAY 仅指定于书脊
MUST NOT 与同一 properties 属性中的另一个布局覆盖 属性配对。 MUST NOT 与卷动布局一起指定。 |
| 名称: |
rendition:layout-reflowable
|
|---|---|
| 描述: |
|
| 应用: |
MAY 仅指定于书脊
MUST NOT 与同一 properties 属性中的另一个布局覆盖 属性配对。 MUST NOT 与卷动布局一起指定。 |
| 名称: |
rendition:page-spread-center
|
|---|---|
| 描述: |
|
| 应用: |
MAY 仅指定于书脊
|
| 名称: |
rendition:page-spread-left
|
|---|---|
| 描述: |
|
| 应用: |
MAY 仅指定于书脊
MAY 与来自书脊属性词汇表的
|
| 名称: |
rendition:page-spread-right
|
|---|---|
| 描述: |
|
| 应用: |
MAY 仅指定于书脊
MAY 与来自书脊属性词汇表的
|
自定义属性和书脊覆盖可包含在包文档中,以 解决特定阅读 系统的开发者所定义的、特定于这些阅读系统的呈现问题。
唯一限制是,此类属性 MUST NOT 使用
rendition: 前缀定义,
并且 MUST NOT 在行为上与包
呈现词汇表中的属性冲突。
如果多个独立阅读系统需要使用扩展,首选方法是通过修订本标准来 扩展包呈现词汇表。
此词汇表中的属性可用于清单
item
元素的 properties 属性。
用于引用这些属性的前缀 URL 是
http://idpf.org/epub/vocab/package/item/#。
| 名称: |
cover-image
|
|---|---|
| 描述: | cover-image 属性将所描述的出版
资源标识为
EPUB 出版物的封面图像。
|
| 适用于: | 所有光栅和矢量图像类型 |
| 基数: |
Zero or one
|
| 名称: |
mathml
|
|---|---|
| 描述: | mathml 属性指示所描述的出版
资源
包含一个或多个 MathML 标记实例。 |
| 适用于: | EPUB 内容 文档 |
| 基数: |
Zero or more
|
| 名称: |
remote-resources
|
|---|---|
| 描述: |
更多信息请参阅 3.6 资源位置。 |
| 适用于: | 所有具备内部引用能力的出版资源 (例如 XHTML 内容 文档、SVG 内容 文档、 CSS 样式表和媒体覆盖文档)。 |
| 基数: |
Zero or more
|
| 名称: |
scripted
|
|---|---|
| 描述: | scripted 属性指示所描述的出版
资源是
一个脚本化内容
文档(即包含脚本和/或 [html]
form
元素)。
|
| 适用于: | EPUB 内容 文档 |
| 基数: |
Zero or more
|
| 名称: |
svg
|
|---|---|
| 描述: |
当 SVG 标记直接包含在资源中时,此属性 MUST 被设置;
当 SVG 从资源中被引用时
MAY 被设置
(例如从 [html]
|
| 适用于: | XHTML 内容 文档;对于SVG 内容文档,该值是隐含的。 |
| 基数: |
Zero or more
|
| 名称: |
switch
|
|---|---|
| 描述: |
|
| 适用于: | XHTML 内容 文档。 |
| 基数: |
Zero or more
|
此词汇表中的属性可用于书脊
itemref
元素的
properties 属性。
用于引用这些属性的前缀 URL 是
http://idpf.org/epub/vocab/package/itemref/#。
| 名称: |
page-spread-left
|
|---|---|
| 描述: |
|
| 名称: |
page-spread-right
|
|---|---|
| 描述: |
|
此词汇表中的属性可用于
meta
元素的
property 属性。
用于引用这些属性的前缀 URL 是
http://idpf.org/epub/vocab/overlays/#。
前缀 “media:” 保留用于
此词汇表中的属性,并且不必在包文档中声明。
| 名称: |
active-class
|
|---|---|
| 描述: | 要应用于当前正在播放的 EPUB 内容文档 元素的 CSS 类名。 |
| 允许值: |
xsd:string
|
| 基数: |
Zero or one
|
| 示例: |
<meta
property="media:active-class">-epub-media-overlay-active</meta>
|
| 名称: |
duration
|
|---|---|
| 描述: | 整个演示或特定媒体覆盖 文档的持续时间。 指定的持续时间计入创作时已知的音频片段,因此 不包括来自外部资源的实时流和语音合成。 |
| 允许值: | |
| 基数: | 对于 EPUB 出版物以及 每个媒体覆盖 文档,正好一个。 |
| 示例: |
<meta property="media:duration">1:36:20</meta>
|
| 名称: |
narrator
|
|---|---|
| 描述: | 旁白者姓名。 |
| 允许值: |
xsd:string
|
| 基数: |
Zero or more
|
| 示例: |
<meta property="media:narrator">Joe Speaker</meta>
|
| 名称: |
playback-active-class
|
|---|---|
| 描述: | 播放处于活动状态时,要应用于 EPUB 内容 文档的 文档元素的作者定义 CSS 类名。 |
| 允许值: |
xsd:string
|
| 基数: |
Zero or one
|
| 示例: |
<meta
property="media:playback-active-class">-epub-media-overlay-playing</meta>
|
陈旧特性是指 未被弃用,但也并非为 EPUB 3 阅读系统使用而设计的特性,或者 理想情况下本应被弃用,只是 因为这样会使大量现有 EPUB 出版物失效。
EPUB 出版物 MAY 包含 本节定义的陈旧特性,但其使用方式 MUST 符合其引用的定义。
NIST 建议到 2030 年底前逐步淘汰 SHA-1 算法 [fips-180-4]。 由于字体混淆依赖 SHA-1,出版维护工作组不打算在该日期之后继续支持 EPUB 出版物中的 字体混淆,不过阅读系统仍必须继续支持对现有 EPUB 出版物 进行去混淆。
存在更好的字体保护方法。例如,[woff] 和 [woff2] 字体都允许 嵌入许可信息,并通过字体表压缩提供一定程度的 保护。使用远程托管字体也 允许进行字体子集化。
当 EPUB 3 由 IDPF 维护时,曾开发出若干
依赖 collection 元素的规范。由于阅读系统缺乏采用和实现,
这些规范不再维护,也不再建议使用该元素。
EPUB 3 阅读系统会忽略这些特性。它们分别由
meta
元素、
landmarks nav 和 toc
nav 取代。
保留这些特性只是为了在一定程度上向后兼容 仅支持 EPUB 2 的阅读系统。由于这类阅读系统现在已经很少, 包含这些特性的价值有限。
-epub-text-orientation
[epub-33]
-epub-writing-mode
[epub-33]
-epub-text-combine-horizontal
[epub-33]
-epub-hyphens
[epub-33]
-epub-line-break [epub-33]
-epub-text-align-last
[epub-33]
-epub-word-break [epub-33]
text-transform 值 -epub-fullwidth [epub-33]-epub-text-emphasis-color
[epub-33]
-epub-text-emphasis-position
[epub-33]
-epub-text-emphasis-style
[epub-33]
-epub-text-underline-position
[epub-33]
EPUB 3 最初包含这些带前缀的属性,是因为许多与 世界语言相关的 CSS 特性当时尚未成熟。现在保留它们只是为了确保 使用这些前缀创作的内容能够向后兼容。工作组建议 一旦 CSS 支持允许,就尽快切换到不带前缀的版本,因为这些带前缀的 属性预计不会在 EPUB 的下一个主要版本中继续维护。
工作组建议 EPUB 符合性检查器不要仅因 EPUB 出版物中存在 陈旧特性而发出警告。只有在某个特性不符合 其定义或以其他方式违反用法要求时才发出警告。
弃用特性是指 在阅读 系统中支持有限或不受支持,和/或在EPUB 出版物中使用有限或不使用的特性。
以下弃用特性 SHOULD NOT 使用。使用时,其使用方式 MUST 符合其 引用的定义。
msv 和
prism
保留前缀 [epub-33],用于结构
语义。
marc21xml-record
属性 [epubpublications-30] —
它由带有 media-type 属性值
“application/marcxml+xml” 的 record
关键字取代。
mods-record
属性 [epubpublications-30] — 它
由带有 media-type 属性值
“application/mods+xml” 的 record 关键字取代。
onix-record
属性 [epubpublications-30] — 它
由带有 properties 属性值 onix 的 record
关键字取代。
工作组建议 EPUB 符合性检查器在 EPUB 出版物中遇到 弃用特性时就其存在发出警告。
本节为非规范性内容。
包文档的模式可在 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 模式的多遍验证替代。
这些模式的更新和修正可能发生在本规范的正式修订之外。 因此,它们随时可能发生变化。
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] 的处理器。
encryption.xml
文件的模式包含在 [xmlsec-rngschema-20130411] 中。
signatures.xml
文件的模式包含在 [xmlsec-rngschema-20130411] 中。
媒体覆盖文档的模式可在 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 模式的多遍验证替代。
本附录为 EPUB 包文档注册媒体类型 application/oebps-package+xml。
此注册取代 RFC4839(参见 https://www.rfc-editor.org/rfc/rfc4839)。
包文档是描述 EPUB 出版物的 XML 文件。它标识 EPUB 出版物中的资源, 并提供元数据信息。包文档及其相关 规范由 World Wide Web Consortium(W3C)维护和定义。
application
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
TEXT
EPUB 规范片段标识符是为 EPUB 出版物定义的自定义片段标识符。它们可用于 引用为出版物定义的任何 出版资源中的任意内容。 这些标识符定义于 https://idpf.org/epub/linking/cfi/。
Publishing Maintenance Working Group (epub-maintenance@w3.org)
COMMON
World Wide Web Consortium (W3C)
本附录为 EPUB 开放容器格式(OCF)注册媒体类型 application/epub+zip。
OCF ZIP 容器,或 EPUB 容器文件,是一种基于 zip 归档 格式的容器技术(参见 https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT)。 它用于封装 EPUB 出版物。OCF 及其相关标准由 World Wide Web Consortium(W3C)维护和定义。
application
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 标识。
ZIP
EPUB 规范片段标识符是为 EPUB 出版物定义的自定义片段标识符。它们可用于 引用为出版物定义的任何 出版资源中的任意内容。 这些标识符定义于 https://idpf.org/epub/linking/cfi/。
Publishing Maintenance Working Group (epub-maintenance@w3.org)
COMMON
World Wide Web Consortium (W3C)
audio
§9.3.2.2.8
body
§9.3.2.2.4
Compression
§4.2.6.3.2.2
container
§4.2.6.3.1.1
dc:contributor
§5.6.3.2.2
dc:creator
§5.6.3.2.3
dc:date
§5.6.3.2.4
dc:identifier
§5.6.3.1.1
dc:language
§5.6.3.1.3
dc:subject
§5.6.3.2.5
dc:title
§5.6.3.1.2
dc:type
§5.6.3.2.6
EncryptedData
§4.2.6.3.2.1
EncryptedKey
§4.2.6.3.2.1
encryption
§4.2.6.3.2.1
epub:type
§7.4.3.2
head
§9.3.2.2.2
item
§5.7.2
itemref
§5.8.2
link
§5.6.6
links
§4.2.6.3.1.4
manifest
§5.7.1
meta
§5.6.4
metadata
§5.6.1
package
§5.5
par
§9.3.2.2.6
rootfile
§4.2.6.3.1.3
rootfiles
§4.2.6.3.1.2
seq
§9.3.2.2.5
signatures
§4.2.6.3.6.1
smil
§9.3.2.2.1
spine
§5.8.1
text
§9.3.2.2.7
a
元素
area
元素
base
元素
bdo
元素
canvas
元素
content 属性(用于 meta
元素)
dir 属性(用于 html-global
元素)
div
元素
embed
元素
form
元素
href 属性(用于 a 元素)
html
元素
iframe
元素
img
元素
li
元素
name 属性(用于 meta
元素)
object
类型
ol
元素
picture
元素
role
属性
rp
元素
script
元素
source
元素
span
元素
src 属性(用于 source
元素)
srcset 属性(用于 source
元素)
style 属性(用于 html-global
元素)
template 元素
track
元素
type 属性(用于 source
元素)
video
元素
list)
svg
元素
title
元素
本节为非规范性内容。
请注意,此变更日志仅标识自 EPUB 3.3 以来的实质性变更 — 即可能影响 EPUB 出版物符合性的变更。
有关所有已处理问题的列表,请参阅工作组的问题跟踪器。
rendition:align-x-center 属性。参见问题 2847。rendition:flow、rendition:orientation、
rendition:spread 及其覆盖等价项添加到陈旧
特性列表中。参见问题 2841,以及
相关的工作组
决议。
collection 元素、遗留包文档特性和
带前缀的 CSS 属性移入其中。参见问题
2807。xsd、msv 和 prism 保留
前缀移至弃用特性章节。参见问题 2739。pageBreakSource 属性添加到 meta 属性词汇表,
以取代 source-of。参见问题
2714。application/x-font-ttf 添加到核心媒体类型列表,用于
标识 TTF 字体。参见问题 667。
script 元素引用的资源属于豁免范围。
参见问题 2649。本节为非规范性内容。
出版维护工作组希望特别致谢那些我们一路走来失去的杰出 贡献者和朋友。特别是,若没有 Garth Conboy 的远见、知识和超乎寻常的善良性情, EPUB(不仅是 EPUB 3)不会成为 今天的样子。同样,Ben Schroeter 将永远因其不懈努力而被铭记,他帮助 EPUB 发挥其作为普遍可访问 格式的潜力。我们永远感念他们的贡献。
以下出版维护工作组成员为本规范的制定作出了贡献:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: