Copyright © 1999-2025 International Digital Publishing Forum and World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
EPUB® 3 defines a distribution and interchange format for digital publications and documents. The EPUB format provides a means of representing, packaging, and encoding structured and semantically enhanced web content — including HTML, CSS, SVG, and other resources — for distribution in a single-file container.
This specification defines the authoring requirements for EPUB publications and represents the third major revision of the standard.
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.
This document was published by the Publishing Maintenance Working Group as a Working Draft using the Recommendation track.
Publication as a Working Draft does not imply endorsement by W3C and its Members.
This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress. Future updates to this upcoming Recommendation may incorporate new features.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent that the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 18 August 2025 W3C Process Document.
This section is non-normative.
EPUB 3 has been widely adopted as the format for digital books (ebooks), and this revision continues to increase the format's capabilities to better support a wider range of publication requirements, including complex layouts, rich media and interactivity, and global typography features. The expectation is that publishers will utilize the EPUB 3 format for a broad range of content, including books, magazines, and educational, professional, and scientific publications.
This specification represents the core of EPUB 3 and includes the conformance requirements for EPUB publications — the product of the standard. The other specifications that comprise EPUB 3 are as follows:
EPUB 3 Reading Systems [epub-rs-34] — defines the processing requirements for EPUB reading systems — the applications that consume EPUB publications and present their content to users.
EPUB Accessibility [epub-a11y-111] — defines accessibility conformance and discovery requirements for EPUB publications.
These specifications represent the formal list recognized as belonging to EPUB 3 and that contain functionality normatively referenced as part of the standard. The development of extension specifications periodically adds new functionality to EPUB publications. Features and functionality defined outside of core revisions to the standard, while not formally recognized in this specification, are nonetheless available for use in EPUB publications and implementation in reading systems.
The non-normative EPUB 3 Overview [epub-overview-34] provides a general introduction to EPUB 3. A list of technical changes from the previous version is also available in the change log.
This section is non-normative.
This section reviews the organization of this specification through the central product it defines: the EPUB publication.
An EPUB publication is, in its most basic sense, a bundle of resources with instructions on how to render those resources to present the content in a logical order. The types of resources that are allowed in EPUB publication, as well as restrictions on their use, are defined in 3. Publication resources.
A ZIP-based archive with the file extension .epub
bundles the EPUB publication's
resources for distribution. As conformant ZIP archives, EPUB publications can be unzipped by many
software programs, simplifying both their production and consumption.
The container format not only provides a means of determining that the zipped content represents an
EPUB publication (the mimetype
file), but also provides a universally named directory
of non-normative resources (/META-INF
). Key among these resources is the
container.xml
file, which directs reading systems to the available package documents. Refer to 4. Open Container Format (OCF) for more information about the container format.
An EPUB publication is typically represented by a single package document. This document includes metadata used by reading systems to present the content to the user, such as the title and author for display in a bookshelf as well as rendering metadata (e.g., whether the content is reflowable or has a fixed layout). It also provides a manifest of resources and includes a spine that lists the default sequence in which to render documents as a user progresses through the content. Refer to 5. Package document for the requirements for the package document.
The actual content of an EPUB publication — what users are presented with when they begin reading — is built on the Open Web Platform and comes in two flavors: XHTML and SVG. Called EPUB content documents, these documents typically reference many additional resources necessary for their proper rendering, such as images, audio and video clips, scripts, and style sheets.
Refer to 6. EPUB content documents for detailed information about the rules and requirements to produce EPUB content documents, and [epub-a11y-111] for accessibility requirements.
An EPUB publication also includes another key file called the EPUB navigation document. This document provides critical navigation capabilities, such as the table of contents, that allow users to navigate the content quickly and easily. The navigation document is a specialized type of XHTML content document which also allows for its use in the content (i.e., avoiding one table of contents for machine processing and another for user consumption). Refer to 7. EPUB navigation document for more information about this document.
EPUB publications by default are intended to reflow to fit the available screen space. It is also possible to create publications that have pixel-precise fixed layouts using images and/or CSS positioning. The metadata to control layouts are defined in 8. Layout rendering control.
Media overlay documents complement EPUB content documents. They provide declarative markup for synchronizing the text in EPUB content documents with prerecorded audio. The result is the ability to create a read-aloud experience where reading systems highlight the text as it is narrated. Refer to 9. Media overlays for the definition of media overlay documents.
While conceptually simple, an EPUB publication is more than just a collection of HTML pages and dependent assets in a ZIP package as presented here. Additional information about the primary features and functionality that EPUB publications provide to enhance the reading experience is available from the referenced specifications, and a more general introduction to the features of EPUB 3 is provided in the non-normative [epub-overview-34].
Refer to [epub-rs-34] for the processing requirements for reading systems. Although it is not necessary to read that document to create EPUB publications, an understanding of how reading systems present the content can help in crafting publications for optimal presentation to users.
This section is non-normative.
The technologies EPUB 3 builds on are constantly evolving. Some, typically referred to as "living" or "evergreen" standards, are subject to change daily and their impact on the validity of EPUB publications is immediate. Others are updated less frequently and the changes might not affect EPUB publications until EPUB 3 undergoes a new revision.
In all cases, it is possible that previously valid features might become obsolete (e.g., due to a lack of support or because of security issues). Consequently, it is advised to only use features without broad support sparingly and keep EPUB conformance checkers up to date.
The [html] standard is continuously evolving — there are no longer versioned releases of it. That standard, in turn, references various technologies that also continue to evolve, such as MathML, SVG, CSS, and JavaScript.
The benefit of this approach is that EPUB 3 is always up to date with the web, but it also means that this specification does not track changes to HTML and the technologies it references. Those standards have to be monitored separately to ensure that authoring processes are kept up to date.
The [html] standard defines a single content model with rules for expressing a tag set using either the HTML syntax or the XML syntax. EPUB 3 allows authoring of content documents using either of these syntaxes even though the [html] standard no longer recommends the use of the XML syntax. The Working Group recognizes that XML remains an integral technology in the publishing ecosystem and will not remove support for the XML syntax from EPUB 3. Regardless, publishers that prefer to keep using the XML syntax will need to monitor future support for it, and might have to adapt to the HTML syntax to gain access to some features of [html].
The change to allow both syntaxes of HTML is an open issue in EPUB 3.4. The above paragraph was added to help explain the change, but would be amended if the HTML syntax is not adopted.
The HTML profile defined by this specification inherits all definitions of semantics, structure and processing behaviors from [html] unless otherwise specified.
In addition, this specification defines a set of extensions to the [html] document model that can be included in HTML content documents.
This specification does not reference a specific version of [svg], but instead uses an undated reference. Whenever there is any ambiguity in this reference, the latest recommended version is the authoritative reference.
The benefit of this approach is that EPUB 3 is always up to date with the SVG standard, but it also means that this specification does not track changes to SVG. The SVG standards has to be monitored separately to ensure that authoring processes are kept up to date.
EPUB 3 supports CSS as defined by the CSS Working Group Snapshot [csssnapshot]. EPUB 3 also maintains some prefixed CSS properties, to ensure consistent support for global languages.
EPUB 3 only supports Presentation Markup [mathml3]. Content Markup is only allowed in structured markup annotations.
This specification relies on a subset of [smil3], from which the media overlays elements and attributes defined in 9.2.2 Media overlay document definition are derived.
This specification refers to the [url] standard for terminology and processing related to URLs expressed in EPUB publications. It is anticipated that new and revised web formats will adopt this standard, but until then this could put this specification in conflict with the internal requirements for some formats (e.g., valid relative paths), specifically with respect to the use of internationalized URLs. If a format does not allow internationalized URLs (i.e., URLs have to conform to [rfc3986] or earlier), that requirement takes precedence within those resources.
This specification defines the following terms specific to EPUB 3.
Only the first instance of a term in a section links to its definition.
Codec refers to content that has intrinsic binary format qualities, such as video and audio media types designed for optimum compression or that provide optimized streaming capabilities.
A publication resource that is located within the EPUB container, as opposed to a remote resource which is not.
Refer to 3.6 Resource locations for media type-specific rules for resource locations.
The URL [url] of the root directory representing the OCF abstract container. Although the container root URL is implementation specific, its properties are defined in 4.2.5 URLs in the OCF abstract container.
The URL of a file or directory in the OCF abstract container, defined in 4.2.5 URLs in the OCF abstract container.
A publication resource that conforms to one of the MIME media types [rfc2046] listed in 3.2 Core media types and, therefore, does not require the provision of a fallback (cf. foreign resource).
The designation "core media type resource" only applies when a resource is used in the rendering of EPUB content documents and foreign content documents. A core media type resource cannot be used in the spine, for example, without a fallback unless it also has the media type of an EPUB content document.
An application that verifies the requirements of this specification against EPUB publications and reports on their conformance.
The ZIP-based packaging and distribution format for EPUB publications defined in 4.3 OCF ZIP container.
EPUB container and OCF ZIP container are synonymous.
A publication resource referenced from the spine or a manifest fallback chain that conforms to either the XHTML or SVG content document definitions.
EPUB content documents contain all or part of the content of an EPUB publication (i.e., the textual, visual and/or audio content).
EPUB publications can reference EPUB content documents from the spine without the provision of fallbacks.
The section of the package document that lists the publication resources.
Refer to 5.6.1 The manifest
element for more information.
A specialization of the XHTML content document that contains human- and machine-readable global navigation information. The EPUB navigation document conforms to the constraints expressed in 7. EPUB navigation document.
A logical document entity consisting of a set of interrelated resources packaged in an EPUB container.
An EPUB publication typically represents a single intellectual or artistic work, but this specification does not restrict the nature of the content.
A system that processes EPUB publications for presentation to a user in a manner conformant with this specification.
The section of the package document that defines an ordered list of EPUB content documents and foreign content documents. This list represents the default reading order of the EPUB publication.
Refer to 5.7.1 The spine
element for more information.
Exempt resources are a special class of publication resources that do not require fallbacks and that reading systems do not have to support the rendering of.
Refer to 3.4 Exempt resources for more information.
The name of any type of file within an OCF abstract container, whether a directory or a file within a directory.
The file path of a file or directory is its full path relative to the root directory, as defined by the algorithm specified in 4.2.4 Deriving file paths.
An EPUB content document with fixed dimensions directly referenced from the spine. Fixed-layout documents are designated pre-paginated
in the package document, as defined in 8.2 Fixed layouts.
Any publication resource referenced from a spine
element, or
a manifest fallback chain, that is not an EPUB content document.itemref
When a foreign content document is referenced from a spine itemref
element, it
requires a manifest fallback chain with at least one EPUB content document.
With the exception of XHTML and SVG, all core media type resources are foreign content documents when referenced directly from the spine.
A publication resource with a MIME media type [rfc2046] that does not match any of those listed in 3.2 Core media types. Foreign resources are subject to the fallback requirements defined in 3.3 Foreign resources.
The designation "foreign resource" only applies to resources used in the rendering of EPUB content documents and foreign content documents.
Foreign resource and foreign content document are not interchangeable terms. The types of resources considered foreign when used in the spine is greater than the types of resources considered foreign when used in EPUB content documents.
An EPUB content document that conforms to the profile of [html] defined in 6.1 HTML content documents.
HTML content documents can be expressed in either the HTML syntax or the XML syntax [html].
EPUB 3 previously supported only the XML syntax of [html] via what were called XHTML content documents. The change of name to HTML content documents is not to give priority to the HTML syntax but to better reflect that [html] is the common standard for both syntaxes. The term "XHTML" used to refer to [xhtml11], but that was replaced by the XML syntax of [html] in 2011, which also officially superseded [xhtml11] in 2018.
The change to allow both syntaxes of HTML is an open issue in EPUB 3.4. It is important to note that EPUB 3 is already based on [html] and this change only makes the HTML syntax valid to use. Because EPUB 2's XHTML content documents were implemented using [xhtml11], some authors mistakenly assume EPUB 3's XHTML content documents use the same technology and that this change represents a move to a new standard.
This new definition will be amended if the HTML syntax is not adopted.
A resource that is only referenced from a package document
element (i.e., not
also used in the rendering of an EPUB publication.link
Linked resources are not publication resources but can be stored in the EPUB container. They do not require fallbacks.
An XML document that associates the XHTML content document with pre-recorded audio narration to provide a synchronized playback experience, as defined in 9. Media overlays.
Non-codec refers to content types that benefit from compression due to the nature of their internal data structure, such as file formats based on character strings (for example, HTML, CSS, etc.).
The OCF abstract container defines a file system model for the contents of the OCF ZIP container, as defined in 4.2 OCF abstract container.
A publication resource that describes the rendering of an EPUB publication, as defined in 5. Package document. The package document carries meta information about the EPUB publication, provides a manifest of resources, and defines a default reading order.
A resource that contains content or instructions that contribute to the logic and rendering of an EPUB publication. In the absence of this resource, reading systems might not render the EPUB publication as intended. Examples of publication resources include the package document, EPUB content documents, CSS Style Sheets, audio, video, images, embedded fonts, and scripts.
The package document manifest has to include a list of all publication resources that typically have to be bundled in the EPUB container (the exception being that resources listed in 3.6 Resource locations can be located outside the EPUB container).
A publication resource that is located outside of the EPUB container, typically on the web.
Publication resources within the EPUB container are referred to as container resources.
Refer to 3.6 Resource locations for media type specific rules for resource locations.
The root directory represents the base of the OCF abstract container file system. This directory is virtual in nature.
An EPUB content document that includes scripting or an XHTML content document that
contains [html] form
elements.
Refer to 6.3.2 Scripting for more information.
An EPUB content document that conforms to the constraints expressed in 6.2 SVG content documents.
The rendering of two adjacent pages simultaneously on a device screen.
An EPUB content document or foreign content document referenced from the spine, whether directly or via a fallback chain.
The primary identifier for an EPUB publication. The unique identifier is the value of
the
element specified by the dc:identifier
unique-identifier
attribute in the package document.
Significant revision, abridgement, etc. of the content requires a new unique identifier.
The region of an EPUB reading system in which an EPUB publication is rendered visually to a user.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHOULD, and SHOULD NOT in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
All algorithm explanations are non-normative.
This section is non-normative.
In package document metadata examples, reserved prefixes are used without declaration.
References to Dublin Core elements [dcterms] use the dc:
prefix. This prefix has to be
declared in the package document for their use to be valid
(xmlns:dc="http://purl.org/dc/elements/1.1/"
).
The epub
namespace prefix [xml-names] is also used on elements and attributes without
always having an explicit declaration (xmlns:epub="http://www.idpf.org/2007/ops"
).
An EPUB publication:
MUST define at least one rendering of its content as follows:
MUST contain a package document that conforms to 5. Package document and meet all publication resource requirements for the package document.
SHOULD conform to the accessibility requirements defined in [epub-a11y-111].
MUST be packaged in an EPUB container as defined in 4. Open Container Format (OCF).
In addition, all publication resources MUST adhere to the requirements in 3. Publication resources.
The rest of this specification covers specific conformance details.
This section is non-normative.
Due to the complexity of this specification and number of technologies used in EPUB publications, it is advised to use an EPUB conformance checker to verify content conformance.
EPUBCheck is the de facto EPUB conformance checker used by the publishing industry and has been updated with each new version of EPUB. It is integrated into a number of authoring tools and is also available in alternative interfaces and other languages (for more information, refer to its Apps and Tools page).
When verifying EPUB publications, ensure that they do not violate the requirements of this specification (practices identified by the keywords "MUST", "MUST NOT", and "REQUIRED"). These types of issues will often result in EPUB publications not rendering or rendering in inconsistent ways. These issues are typically reported as errors or critical errors.
Also ensure that EPUB publications do not violate the recommendations of this specification (practices identified by the keywords "SHOULD", "SHOULD NOT", and "RECOMMENDED"). Failure to follow these practices does not result in an invalid EPUB publication but can lead to interoperability problems and other issues that impact the user reading experience. These issues are typically reported as warnings.
Vendors, distributors, and other retailers of EPUB publications need to consider the importance of recommended practices before basing their acceptance or rejection on a zero-issue outcome from an EPUB conformance checker. There will be legitimate reasons why EPUB publications cannot adhere to recommended practices in all cases.
This section is non-normative.
An EPUB publication is made up of many different categories of resources, not all of which are mutually exclusive. Some resources are publication resources, some are not. Some publication resources are allowed in the spine by default, while all others require fallbacks. Some resources can be used in rendering EPUB content documents, while others can only be used with fallbacks.
Trying to understand these differences by reading the technical definitions of each category of resource can be complex. To make the categorizations easier to understand, this introduction uses the concept of different planes to explain how resources are grouped and referred to.
The three planes are:
The same resource can exist on more than one plane and will be referred to differently in this specification depending on which plane is being discussed. For example, a core media type resource used in the rendering of an EPUB content document (on the content plane) can also be a foreign content document if it is also listed in the spine (the spine plane).
The following sections describe these planes in more detail.
Refer to H.1 Resources for a detailed example showing how resources fit into the different planes.
To manifest plane defines all the resources of an EPUB publication. It is analogous to the package document manifest, but includes resources not present in that list.
The primary resources in this group are designated publication resources, which are all the
resources used in rendering an EPUB publication to the user. The
element has to
contain a complete list these resources.manifest
Publication resources are further classified by their use(s) in the spine plane and content plane.
The manifest plane also contains a set of linked resources. These resources are tangential to the direct rendering. They include, for example, metadata records and links to external content (e.g., where to purchase an EPUB publication).
Unlike publication resources, they are not listed in the package document manifest (i.e., because
they are not essential to rendering the EPUB publication). They are instead defined in
elements in the package document metadata. These elements define their nature and purpose
similar to how manifest link
elements define publication resource. (In this way, they are
like an extension of the manifest.)item
Refer to 5.5.6 The link
element for more information about linked resources.
Resources in the manifest plane are also sometimes broken down by where they are located. Although most publication resources have to be located in the EPUB container (called container resources), EPUB 3 allows audio, video, font and script data resources to be hosted outside the container. These exceptions were made to speed up the download and loading of EPUB publications, as these resources are typically quite large, and, in the case of fonts, not essential to the presentation. When remotely hosted, these publication resources are referred to as remote resources.
Since linked resources are not essential to the rendering of an EPUB publication, there are no requirements on where they are located and consequently no special naming of them based on their location. They can be located within the EPUB container or outside it.
Hyperlinked content outside the EPUB container (e.g., web pages) are not publication resources, and consequently are not listed in the manifest. Reading systems will normally open these links in a separate browser instance, not as part of the EPUB publication.
The spine plane defines resources used in the default reading order established by the spine, which includes both linear and non-linear content. The spine instructs reading systems on how to load these resources as the user progresses through the EPUB publication. Although many resources can be bundled in an EPUB container, they are not all allowed by default in the spine.
EPUB 3 defines a special class of resources called EPUB content documents that can be used in the spine without any restrictions. EPUB content documents encompass both XHTML content documents and SVG content documents.
To use any other type of resource in the spine, called a foreign content document, requires
including a manifest fallback to an EPUB content document.
In this model, the manifest entry for the foreign content document has to
include a fallback
attribute that points to
the next possible resource for reading systems to try when they do not support its format.
Although not common, a fallback resource can specify another fallback, thereby making chains
many resources deep. The one requirement is that there has to be at least one EPUB content
document in a manifest fallback chain.
Although they are not directly listed in the spine, all of the resources in the fallback chain are considered part of the spine, and by extension part of the spine plane, since any of the resources can be used by a reading system.
This extensibility model allows experimentation with formats while ensuring that reading systems are always able to render something for the user to read, as there is no guarantee of support for foreign content documents.
Refer to 3.5.1 Manifest fallbacks for more information.
Although manifest fallbacks fulfill the technical requirements of EPUB, there is little practical support for them in reading systems. Their use is strongly discouraged as it can lead to unreadable publications.
It is possible to provide manifest fallbacks for EPUB content documents, but this is not common or a requirement. For example, a scripted content document could have a fallback to an unscripted alternative for reading systems that do not support scripting.
The content plane classifies resources that are used when rendering EPUB content documents and foreign content documents. These types of resources include embedded media, CSS style sheets, scripts, and fonts. These resources fall into three categories based on their reading system support: core media type resources, foreign resources, and exempt resources.
A core media type resource is one that reading systems have to support, so it can be used without restriction in EPUB or foreign content documents. For more information about core media type resources, refer to 3.2 Core media types.
Being a core media type resource does not mean that reading systems will always render the resource, as not all reading systems support all features of EPUB 3. A reading system without a viewport, for example, will not render visual content such as images.
The opposite of core media type resources are foreign resources. These are resources that reading systems are not guaranteed to support the rendering of. As a result, similar to how using foreign content documents in the spine requires fallbacks to ensure their rendering, using foreign resources in content documents also requires fallbacks. These fallbacks are provided in one of two ways: using the capabilities of the host format or via manifest fallbacks.
The preferred method is to use the fallback capabilities of the host format. Many HTML elements,
for example, have intrinsic fallback capabilities. One example is the picture
element [html], which allows multiple alternative image formats to be specified.
If an intrinsic fallback method is not available, it is also possible to use manifest fallbacks, but this method, as cautioned against in the previous section, is discouraged. For more information about foreign resources, refer to 3.3 Foreign resources.
Falling between core media type resources and foreign resources are exempt resources. These are most closely associated with foreign resources, as there is no guarantee that reading systems will render them. But like core media types, they do not require fallbacks.
Exempt resources tend to address specific cases for which there are no core media types defined,
but for which providing a fallback would prove cumbersome or unnecessary. These include
embedding video, adding accessibility tracks, and linking to resources from the [html] link
element.
Refer to 3.4 Exempt resources for more information about these exceptions.
A common point of confusion arising from core media type resources is the listing of XHTML and SVG as core media type resources with the requirement that the markup conform to their respective EPUB content document definitions. This common definition ensures that regardless of whether XHTML and SVG documents are listed in the spine, or embedded in other EPUB content documents, they have the same requirements for authoring and reading system support.
In practice, it means that XHTML and SVG core media type resources are allowed in the spine without any modification or fallback as they are also conforming XHTML and SVG content documents. But, this is a unique case — all other core media type resources become foreign content documents when used in the spine (i.e., foreign content documents include all foreign resources and all core media type resources except for XHTML and SVG).
Publication resources that conform to the MIME media type [rfc2046] specifications defined in the following table MAY be included in EPUB publications without fallbacks when they are used in EPUB content documents and foreign content documents. These resources are classified as core media type resources.
Only XHTML content documents and SVG content documents can be referenced from the spine without a manifest fallback. All other core media type resources MUST include a manifest fallback if referenced directly from the spine. In this case, they are foreign content documents.
The columns in the table represent the following information:
Media Type—The MIME media type [rfc2046] used to represent the given publication resource in the manifest.
If a resource has more than one media type, the first one listed is the preferred media type. It is advised to use this media type to declare resources.
Media Type | Content Type Definition | Applies to |
---|---|---|
HTML | ||
text/html
|
HTML content documents | HTML documents that use the HTML syntax [html] |
application/xhtml+xml
|
HTML content documents | HTML documents that use the XML syntax [html] |
Images | ||
image/gif
|
[gif] | GIF Images |
image/jpeg
|
[jpeg] | JPEG Images |
image/png
|
[png] | PNG Images |
image/svg+xml
|
SVG content documents | SVG documents |
image/webp
|
[rfc9649] | WebP Images |
Audio | ||
audio/mpeg
|
[mp3] | MP3 audio |
audio/mp4
|
[mpeg4-audio], [mp4] | AAC LC audio using MP4 container |
audio/ogg; codecs=opus
|
[rfc7845] | OPUS audio using OGG container |
Style | ||
text/css
|
CSS Style Sheets | CSS Style Sheets |
Fonts | ||
|
[truetype] | TrueType fonts |
|
[opentype] | OpenType fonts |
|
[woff] | WOFF fonts |
font/woff2
|
[woff2] | WOFF2 fonts |
Other | ||
|
[rfc4329] | Scripts. |
application/x-dtbncx+xml
|
[opf-201] | The legacy NCX |
application/smil+xml
|
Media overlays | EPUB media overlay documents |
Inclusion as a core media type resource does not mean that all reading systems will support the rendering of a resource. Reading system support also depends on the capabilities of the application (e.g., a reading system with a viewport has to support image core media type resources, but a reading system without a viewport does not). Refer to Core media types [epub-rs-34] for more information about which reading systems rendering capabilities require support for which core media type resources.
The Working Group typically only includes formats as core media type resources when they have broad support in web browser cores — the rendering engines that EPUB 3 reading systems build upon — as at that stage they can be relied on for rendering in reading systems.
A foreign resource, unlike a core media type resource is one which is not guaranteed reading system support when used in an EPUB content document or foreign content document.
Fallbacks MUST be provided for foreign resources, where fallbacks take one of the following forms:
intrinsic fallback mechanisms provided by the host format (e.g., [html] elements often provide the ability to reference more than one media type or to display an alternate embedded message when a media type cannot be rendered); or
manifest fallback chains defined on
elements
in the package document.item
Refer to the [html] and [svg] specifications for the intrinsic fallback capabilities their elements provide.
3.5.2 Intrinsic fallbacks also provides additional information about how fallbacks are interpreted for specific elements.
An exempt resource shares properties with both foreign resources and core media type resources. It is most similar to a foreign resource in that it is not guaranteed reading system support, but, like a core media type resource, does not require a fallback.
In some cases, the exemptions defined in this section overlap with how existing core media type
resources are included in EPUB content documents (e.g., using the [html] link
element to include CSS style sheets,
importing fonts into CSS, or using the [html] script
element for JavaScripts). Although this
superficially makes the resources similar in terms of not requiring fallbacks, core media types are
differentiated by having stronger support expectations in reading systems. A core media type
resource does not become an exempt resource just because they share the same inclusion mechanism.
And without an exemption, an exempt resource would be a foreign resource.
There are only a small set of special cases for exempt resources. Video, for example, are exempt from fallbacks because there is no consensus on a core media type video format at this time (i.e., there is no format to fallback to). Similarly, audio and video tracks are exempt for accessibility purposes so whatever format reading systems support best can be used.
The following list details cases of content-specific exempt resources, including any restrictions on where they can be used.
Font resources are exempt resources.
This exemption allows the use of any font format without a fallback, regardless of reading system support expectations, as CSS rules will ensure a fallback font in case of no support.
Refer to the reading system support requirements for fonts [epub-rs-34] for more information.
Any resource referenced from the [html] link
element is an exempt resource.
Any resource [html] allows the script
element to reference is an exempt resource.
Audio and video tracks (e.g., [webvtt] captions, subtitles and descriptions) referenced
from the [html] track
element are exempt resources.
Video codecs referenced from the [html] video
— including any child source
elements — are exempt resources.
Although reading systems are encouraged to support at least one of the H.264 [h264] and VP8 [rfc6386] video codecs, support for video codecs is not a conformance requirement. When deciding which video formats to include, consider factors such as the breadth of support in reading systems, playback quality, and technology royalties.
The exemptions made above do not apply to the spine. If an exempt resource is used in the spine, and it is not also an EPUB content document, it will require a fallback in that context.
In addition to the content-specific exemptions, a resource is classified as an exempt resource if:
it is not referenced from a spine
element (i.e., used as a foreign content document); anditemref
it is not directly rendered in its native format in an EPUB content document.
This exemption allows the inclusion of resources in the EPUB container that are not for use by EPUB reading systems, such as:
A foreign image resource referenced from a url
function [css-values] in a CSS style sheet is an example of a resource not exempted by
this rule as it would result in the non-core media type format being displayed.
The exemption also allows the use of foreign resources in foreign content documents without reading systems or EPUB conformance checkers having to understand the fallback capabilities of those resources (i.e., the requirement for a fallback for the foreign content document covers any rendering issues within it). As the resource is not referenced from an EPUB content document, it automatically becomes exempt from fallbacks.
Manifest fallbacks are a feature of the package document that create a manifest fallback chain for a publication resource, allowing reading systems to select an alternative format they can render.
Fallback chains are created using the fallback
attribute on manifest
elements. This attribute references
the ID [xml] of another manifest item
item
that is a
fallback for the current item
. The ordered list
of all the references that a reading system can reach, starting from a given
item
's fallback
attribute, represents both the full and
preferred fallback chain for that item
.
There are two cases for manifest fallbacks:
A foreign content document MUST specify a fallback chain that MUST include at least one EPUB content document to ensure that reading systems can always render the spine item.
EPUB content documents MAY specify a fallback. For example, to provide a fallback for scripted content.
When a fallback chain includes more than one EPUB content document, the properties
attribute can be used to
differentiate the purpose of each.
When elements that reference foreign resources do not have intrinsic fallback capabilities, a content fallback MUST be provided. In this case, the fallback chain MUST contain at least one core media type resource.
Manifest fallbacks MAY also be provided for core media type resources. For example, to allow reading systems to select from more than one image format.
Regardless of the type of manifest fallback specified, fallback chains MUST NOT contain
self-references or circular references to item
elements in the chain.
As it is not possible to use manifest fallbacks for resources represented in data URLs, foreign resources can only be represented as data URLs where an intrinsic fallback mechanism is available.
The following sections provide additional clarifications about the intrinsic fallback requirements of specific elements.
[html] flow content embedded within audio
or video
elements does not count as an
intrinsic fallback for foreign resources. Only child source
elements [html]
provide intrinsic fallback capabilities.
Only older reading systems that do not recognize the audio
or the
video
elements (e.g., EPUB 2 reading systems) will render the embedded
content. When reading systems support these elements but not the available media formats,
they do not render the embedded content for the user.
The requirement for fallbacks only applies to audio foreign resources referenced from
audio
and video
elements. Fallbacks are not necessary for
video resources; they are exempt resources.
Due to the variety of sources that can be referenced
from the [html] img
element, the following fallback conditions apply to its use:
If it is the child of a picture
element:
src
and
srcset
attributes when those attributes are set; andsource
element MUST reference a core media type resource
from its src
and srcset
attributes unless it specifies the MIME media type [rfc2046] of a foreign resource in its type
attribute.src
and
srcset
attributes provided there is also a manifest fallback to a core media type.Although data blocks have a separate MIME media type [rfc2046] from their containing
XHTML content document, it is not possible to provide intrinsic fallbacks as no such
mechanisms are specified for the [html] script
element. It is also not possible to
provide manifest fallbacks because data blocks cannot be defined as standalone files in the
EPUB container but are always embedded as inline script
elements.
But, as the script
element does not represent user content — data blocks are not rendered unless manipulated by
script, and content rendered by scripts already has core
media type requirements — requiring fallbacks for the raw data does not serve a
useful purpose.
Consequently, data blocks are exempt from fallback requirements to allow their use by scripts.
This exemption aligns data blocks with the exemption for data files.
[svg] does not define data blocks as of publication, but the same exclusion would apply if a future update adds the concept.
The following types of publication resources MAY be hosted outside the EPUB container:
All other resources MUST be stored within the EPUB container.
Storing all resources inside the EPUB container is strongly encouraged whenever possible as it allows users access to the entire presentation regardless of connectivity status.
When resources have to be located outside the EPUB container, it is RECOMMENDED to reference them via
the secure https
URI scheme [rfc9110] to limit the threat of exposing their
publications, and users, to network attacks. Reading systems might not load remote resources
referenced using insecure schemes such as http
.
These rules for locating publication resource apply regardless of whether the given resource is a core media type resource or a foreign resource.
Refer to the remote-resources
property for more
information on how to indicate that a manifest
references a
remote resource.item
The data:
URL scheme [rfc2397] is used to encode resources
directly into a URL string. The advantage of this scheme is that it allows a resource to be embedded
within another, avoiding the need for an external file.
Data URLs MUST NOT be used in the following scenarios as they will result in a top-level content document or top-level browsing context [html]:
in href
attributes in the package document — this applies both to manifest
elements and metadata item
elements;link
in the href
attribute on [html] or [svg] a
elements, except
when inside an iframe
element [html];
in the href
attribute on [html] area
elements, except when inside
an iframe
element;
in calls to [ecmascript] window.open
or document.open
.
These restrictions on the use of data URLs are to prevent security issues and also to ensure that reading systems can determine where to take a user next (i.e., because data URLs cannot be referenced from the spine).
The list of prohibited uses for data URLs is subject to change as the respective standards that allow their use evolve.
A consequence of embedding is that the data in a data URL is not considered its own unique publication resource for manifest reporting purposes (i.e., only its containing publication resource gets listed). As this data has its own media type, however, it is still subject to foreign resource restrictions. Therefore, data URLs MUST be encoded as core media type resources or have a fallback using the intrinsic fallback mechanisms of the host format.
The file:
URL scheme is defined in [rfc8089] as
"identifying an object (a 'file') stored in a structured object naming and accessing environment on
a host (a 'file system')." It is typically used to retrieve files from the local operating
system.
Using a file URL in an EPUB publication, which can be transferred among different hosts, represents a security risk and is also non-interoperable. Consequently, file URLs MUST NOT be used in EPUB publications.
Any publication resource that is an XML-based media type [rfc2046]:
MUST be a conformant XML 1.0 Document as defined in Conformance of Documents [xml-names].
MAY only specify a document type declaration that references an external identifier appropriate for its media type — as defined in B. Allowed external identifiers — or that omits external identifiers [xml].
MUST NOT contain external entity declarations in the internal DTD subset [xml].
MUST NOT make use of XInclude [xinclude].
MUST be encoded in UTF-8 or UTF-16 [unicode], with UTF-8 as the RECOMMENDED encoding.
The above constraints apply regardless of whether the given publication resource is a core media type resource or a foreign resource.
This section is non-normative.
OCF is the container technology for EPUB publications. It can play a role in the following workflows:
This section defines the rules for structuring the file collection in the abstract: the "abstract container". It also defines the rules for the representation of this abstract container within a ZIP archive: the "physical container". The rules for ZIP physical containers build upon the ZIP technologies used by [odf].
OCF also defines a standard method for obfuscating embedded fonts for those EPUB publications that require this functionality.
This section is non-normative.
The OCF abstract container file system model uses a single common root directory. All container resources are located within the directory tree headed by the root directory, but no specific file system structure for them is mandated by this specification.
The file system model also includes a mandatory directory named META-INF
that is a
direct child of the root directory and stores the following special files:
container.xml
[required]
Identifies one or more package documents that define the EPUB publication.
signatures.xml
[optional]
Contains digital signatures for various assets.
encryption.xml
[optional]
Contains information about the encryption of publication resources. This file is mandatory when using font obfuscation.
metadata.xml
[optional]
Used to store metadata about the OCF ZIP container.
rights.xml
[optional]
Used to store information about digital rights.
manifest.xml
[optional]
A manifest of container contents as allowed by Open Document Format [odf].
Refer to 4.2.6 META-INF
directory for conformance requirements for the various files
in the META-INF
directory.
The virtual file system for the OCF abstract container MUST have a single common root directory for all the contents of the container.
The OCF abstract container MUST include a directory for configuration files named
META-INF
that is a direct child of the container's root directory. Refer to 4.2.6 META-INF
directory for the requirements for the contents of this
directory.
The file name mimetype
in the root directory is reserved for use by OCF ZIP containers, as explained in 4.3 OCF ZIP container.
Files in the META-INF
directory and the mimetype
file are not
publication resources so MUST NOT be listed in the manifest.
All other files within the OCF abstract container MAY be stored in any location descendant from
the root directory provided they are not within the META-INF
directory. EPUB publications MUST NOT contain references to files in the META-INF
directory.
Some reading systems do not provide access to resources outside the directory where the package document is stored even though this is not a restriction defined in [epub-rs-34]. To avoid interoperability issues with these reading systems, it is advised to place all resources at or below the directory containing the package document.
This problem is more commonly encountered when creating multiple renditions [epub-multi-rend-11] of the publication.
In the context of the OCF abstract container, file paths and file names are scalar value strings [infra] (i.e., their values are case sensitive).
In addition, the following restrictions are designed to allow file paths and file names to be used without modification on most operating systems:
File names MUST NOT exceed 255 bytes.
The file paths for any directory or file within the OCF abstract container MUST NOT exceed 65535 bytes.
File names MUST NOT use the following [unicode] characters as commonly used operating systems might not support these characters consistently:
SOLIDUS: /
(U+002F
)
QUOTATION MARK: "
(U+0022
)
ASTERISK: *
(U+002A
)
FULL STOP as the last character: .
(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 range (U+0000 … U+001F
)
C1 range (U+0080 … U+009F
)
Private Use Area (U+E000 … U+F8FF
)
All Unicode Non Characters, specifically:
The 32 contiguous characters in the Basic Multilingual Plane
(U+FDD0 … U+FDEF
)
The last two code points of the Basic Multilingual Plane
(U+FFFE
and U+FFFF
)
The last two code points at the end of the Supplementary Planes
(U+1FFFE, U+1FFFF … U+EFFFE, U+EFFFF
)
Specials (U+FFF0 … U+FFFF
)
Supplementary Private Use Area-A (U+F0000 … U+FFFFF
)
Supplementary Private Use Area-B (U+100000 … U+10FFFF
)
The Unicode Character Database [uax44] includes a list of deprecated characters. It is also advised to avoid these characters as it is expected that EPUB conformance checkers will flag their use.
For compatibility with older reading systems, file names SHOULD NOT contain SPACE (U+0020) characters.
All file names within the same directory MUST be unique following Unicode canonical normalization [uax15] and then full case folding [unicode]. (Refer to Unicode Canonical Case Fold Normalization Step [charmod-norm] for more information.)
If EPUB publications are created by dynamically integrating resources (i.e., where the naming is not known in advance), be aware that automatic truncation of file names to keep them within the 255 bytes limit can lead to corruption. This is due to the difference between bytes and characters in multibyte encodings such as UTF-8. Therefore, it is important to avoid mid-character truncation. See the section on "Truncating or limiting the length of strings" in [international-specs] for more information.
Use an abundance of caution naming files when interoperability of content is key. The list of restricted characters is intended to help avoid some known problem areas but it does not ensure that all other Unicode characters are supported. Although Unicode support is much better now than in earlier iterations of EPUB, older tools and toolchains can still be encountered (e.g., ZIP tools that only support [us-ascii]).
To derive the file path, given a file or directory file in the OCF abstract container, apply the following steps (expressed using the terminology of [infra]):
U+002F (/)
character.The container root URL is the URL [url] of the root directory. Although the container root URL is implementation-specific, it MUST have the following properties:
/
" with the container root URL as base is the container root URL...
" with the container root URL as base is the container root URL.The content URL of a file or directory in the OCF abstract container is the result of parsing the file's file path with the container root URL as base.
The container root URL is the URL assigned by the reading system to the root of the EPUB container. It typically depends on how the reading system internally implements the container file system.
However, a reading system cannot arbitrarily use any URL, but one that honors the constraints defined above. These constraints ensure that any relative URL string found in the EPUB will always be parsed to a URL of a resource within the container (which might or might not exist). The primary reason for these constraints is to avoid potential run-time security issues that would be caused by parsed URLs "leaking" outside the container files.
For example, URLs like https://localhost:12345/
or
https://www.example.org:12345/
honor these properties. But URLs like
https://localhost:12345/path/to.epub/
,
file:///path/to.epub#path=/
, or jar:file:/path/to.epub!/EPUB/
do not (parsing the URL string "..
" with these three examples as base would
return https://localhost:12345/path/
, file:///path/
, and a parsing
error, respectively). It is the responsibility of the reading system to assign a URL to the
root directory that complies with the properties defined above.
Parsing might replace some characters in the file path by their percent encoded alternative. For example,
A/B/C/file name.xhtml
becomes A/B/C/file%20name.xhtml
.
A string url is a valid-relative-ocf-URL-with-fragment string if it is a
path-relative-scheme-less-url string, optionally followed by U+0023 (#)
and a url-fragment string, and if the following steps return true:
Set the container root URL to https://a.example.org/A/
.
The goal of the algorithm is to detect whether url could be seen as
"leaking" outside the container. To do that, the standard URL parsing algorithm is used with an artificial root URL; the detection of the "leak" is done
by comparing the result of the parsing with the presence of the first test path
segment (A
). (Note that the artificial container root URL wilfully
violates, for the purpose of this algorithm, the required properties by using that first test path segment.)
Let base be the base URL that is used to parse url as defined by the context (document or environment) where url is used, and according to the content URL of the package document (see 5.2 Parsing URLs in the package document).
In the case of a URL in the package document the base variable is set to
the content URL of the package document. In the case of a document within the
META-INF
directory, the base variable is set to the
container root URL (see 4.2.6.2 Parsing URLs in the META-INF
directory). In the case of a
URL in an XHTML content document, the base URL used for parsing is defined by
the HTML standard. Typically, it will be the
content URL of the content document (unless the discouraged
base
element is used).
Set the container root URL to https://b.example.org/B/
.
The reasons to repeat the same steps twice with different, and artificial, settings
of the container root URL is to avoid collision which can occur if the
url string also includes /A/
. Consider, for example, the
case where url is ../../A/doc.xhtml
.
If testURLStringA does not start with https://a.example.org/
or
testURLStringB does not start with https://b.example.org/
,
return true.
If any of the result does not share the test URL host, it means that url,
or its base URL (for example, in HTML, if it is explicitly set with the
base
element), was absolute and points outside the
container. This is acceptable.
If testURLStringA starts with https://a.example.org/A/
and
testURLStringB starts with https://b.example.org/B/
, return
true.
The presence of the first test path segments (A
, respectively
B
) indicate that the URL doesn't leak outside the container.
In the OCF abstract container, any URL string MUST be an absolute-url-with-fragment string or a valid-relative-ocf-URL-with-fragment string.
In addition, all relative-URL-with-fragment strings [url] MUST, after parsing, be equal to the content URL of an existing file in the OCF abstract container.
These constraints on URL strings mean that:
/
(U+002F
) (for example,
/EPUB/content.xhtml
) are disallowed; EPUB/../../../../config.xml
) are
disallowed; Note that in any case, even the disallowed URL strings described above will not "leak" outside the container after parsing (as explained in the first note of this section). They are nevertheless disallowed for better interoperability with non-conforming or legacy reading systems and toolchains.
All OCF abstract containers MUST include a directory called META-INF
in
their root directory.
This directory is reserved for configuration files, specifically those defined in 4.2.6.3 Reserved files.
To parse a URL string
url used in files located in the META-INF
directory the URL parser MUST be applied to url, with the
container root URL as base.
The REQUIRED container.xml
file in the META-INF
directory
identifies the package documents available in the OCF abstract container.
All [xml] elements defined in this section are in the
urn:oasis:names:tc:opendocument:xmlns:container
namespace [xml-names]
unless specified otherwise.
The contents of this file MUST be valid to the definition in this section after removing all elements and attributes from other namespaces (including all attributes and contents of such elements).
An XML Schema also informally defines the content of this file.
The container
element encapsulates all the information in the
container.xml
file.
container
REQUIRED root element [xml] of the
container.xml
file.
version
[required]
1.0
".In this order:
The rootfiles
element contains a list of package documents available
in the EPUB container.
Each rootfile
element identifies the location of one package document in the EPUB container.
rootfile
As child of the
element. Repeatable.rootfiles
full-path
[required]
Identifies the location of a package document.
The value of the attribute MUST be a path-relative-scheme-less-URL string [url]. The path is relative to the root directory.
media-type
[required]
Identifies the media type of the package document.
The value of the attribute MUST be
"application/oebps-package+xml
".
Empty
If more than one rootfile
element is specified, each MUST reference a
package document that conforms to the same version of EPUB. Each package document
represents one rendering of the EPUB publication.
Although the EPUB container provides the ability to reference more than one package document, this specification does not define how to interpret, or select from, the available options. Refer to [epub-multi-rend-11] for more information on how to bundle more than one rendering of the content.
The links
element identifies resources
necessary for the processing of the OCF ZIP container.
links
OPTIONAL second child of
. Repeatable.container
None
link
[1 or more]This specification currently does not define uses for the links
element. Refer to [epub-multi-rend-11] for an example of its use.
link
As child of the
element. Repeatable.links
href
[required]
Identifies the location of a resource.
The value of the link
element href
attribute MUST be a path-relative-scheme-less-URL string
[url]. The path is relative to the root directory.
media-type
[optional]
Identifies the type and format of the referenced resource.
The value of the attribute MUST be a media type [rfc2046].
rel
[required]
Identifies the relationship of the resource.
The value of the attribute MUST be a space-separated list of tokens.
Empty
This section is non-normative.
The OPTIONAL encryption.xml
file in the META-INF
directory
holds all encryption information on the contents of the container. If an any resources
within the container are encrypted, there MUST be an encryption.xml
file to
provide information about the encryption used.
encryption
urn:oasis:names:tc:opendocument:xmlns:container
REQUIRED root element [xml] of the
encryption.xml
file.
None
In any order:
EncryptedKey
[1 or more]EncryptedData
[1 or more]The encryption
element contains child elements of type
EncryptedKey
and EncryptedData
as defined by
[xmlenc-core1].
An EncryptedKey
element describes each encryption key used
in the container, while an EncryptedData
element describes each
encrypted file. Each EncryptedData
element refers to an
EncryptedKey
element, as described in XML Encryption.
An XML Schema also informally
defines the content of the encryption.xml
file.
OCF encrypts individual files independently, trading off some security for improved performance, allowing the container contents to be incrementally decrypted. Encryption in this way exposes the directory structure and file naming of the whole package.
OCF uses XML Encryption [xmlenc-core1] to provide a framework for encryption, allowing a variety of algorithms to be used. XML Encryption specifies a process for encrypting arbitrary data and representing the result in XML. Even if an OCF abstract container contains non-XML data, XML Encryption can be used to encrypt that data. OCF encryption supports only the encryption of entire files within the container, not parts of files.
When present, the encryption.xml
file MUST NOT be encrypted.
Encrypted data replaces unencrypted data in an OCF abstract container. For example,
if an image named photo.jpeg
is encrypted, the contents of the
photo.jpeg
resource is replaced with its encrypted contents.
Encrypted files within the ZIP directory SHOULD NOT be compressed.
Note that some situations require obfuscating the storage
of embedded fonts referenced by an EPUB publication to make them more difficult
to extract for unrestricted use. Although obfuscation is not encryption, reading
systems use the encryption.xml
file in conjunction with the font obfuscation algorithm to identify fonts to
deobfuscate.
The following files MUST NOT be encrypted:
mimetype
META-INF/container.xml
META-INF/encryption.xml
META-INF/manifest.xml
META-INF/metadata.xml
META-INF/rights.xml
META-INF/signatures.xml
package document
=] The Decryption Transform for XML Signature [xmlenc-decrypt] MAY subsequently be used to encrypt signed resources. This feature enables a reading system to distinguish data encrypted before signing from data encrypted after signing.
When stored in an OCF ZIP container, streams of data with non-codec content types SHOULD be compressed before encrypting them. Deflate compression MUST be used. This practice ensures that file entries stored in the ZIP container have a smaller size.
Streams of data with codec content types SHOULD NOT be compressed before encrypting them. In such cases, additional compression introduces unnecessary processing overhead at production time (especially with large resource files) and impacts audio/video playback performance at consumption time. In some cases, the combination of compression with some encryption schemes might even compromise the ability of reading systems to handle partial content requests (e.g. HTTP byte ranges), due to the technical impossibility to determine the length of the full resource ahead of media playback (e.g. HTTP Content-Length header).
When streams of data are compressed before encrypting, additional
EncryptionProperties
metadata SHOULD be provided to specify the
size of the initial resource (i.e., before compression and encryption), as per the
Compression
XML element defined below. When streams of data are not
compressed before encrypting, additional EncryptionProperties
metadata
MAY be provided to specify the size of the initial resource (i.e., before
encryption).
Compression
http://www.idpf.org/2016/encryption#compression
OPTIONAL child of EncryptionProperty
.
[required]
Identifies the compression method used.
Value is either "0
" (no compression) or "8
"
(Deflate algorithm).
[required]
Represents the size of the initial resource (number of bytes).
Value is a positive integer.
Empty
The OPTIONAL manifest.xml
file in the META-INF
directory
provides a manifest of files in the container.
The OCF specification does not mandate a format for the manifest.
Note that package documents specify the only manifests used for processing EPUB publications. Reading systems do not use this file.
The OPTIONAL metadata.xml
file in the META-INF
directory is
only for container-level metadata.
If a metadata.xml
file is included, it SHOULD include only
namespace-qualified elements [xml-names]. The file SHOULD contain the root element [xml] metadata
in the
namespace http://www.idpf.org/2013/metadata
, but this specification allows
other root elements for backwards compatibility.
This version of the specification does not define metadata for use in the
metadata.xml
file. Future versions of this specification MAY define
container-level metadata.
This specification reserves the OPTIONAL rights.xml
file in the
META-INF
directory for the trusted exchange of EPUB publications
among rights holders, intermediaries, and users.
When a rights.xml
file is not included, no part of the OCF abstract container is rights governed at the container level. Rights expressions might exist
within the EPUB publication.
Adding a digital signature is not a guarantee that a malicious actor cannot tamper with an EPUB publication as reading systems do not have to check signatures.
The OPTIONAL signatures.xml
file in the META-INF
directory
holds digital signatures for the container and its contents.
signatures
urn:oasis:names:tc:opendocument:xmlns:container
REQUIRED root element [xml] of the
signature.xml
file.
None
Signature
[1 or more]The signature
element contains child elements of type
Signature
, as defined by [xmldsig-core1]. Signatures can be
applied to an EPUB publication as a whole or to its parts. They can also be used to
sign any kind of data (i.e., not just XML).
An XML Schema also informally
defines the content of the signatures.xml
file.
When a signatures.xml
file is not included, no part of the OCF abstract container is signed at the container level but digital signing might
exist within the EPUB publication.
When a data signature is created for the OCF abstract container,
the signature SHOULD be stored as the last child Signature
element of
the signatures
element.
Each Signature
in the signatures.xml
file identifies by
URL [url] the data to which the signature applies, using the [xmldsig-core1]
Manifest
element and its Reference
sub-elements.
Individual container files can be signed separately or together. Separately
signing each file creates a digest value for the resource that reading systems
can validate independently. This approach might make a Signature element larger.
If the files are signed together, list the set of signed files in a single XML
Signature Manifest
element and reference them from one or more
Signature
elements.
Any or all files in the OCF abstract container can be signed in
their entirety, except for the signatures.xml
file since that file will
contain the computed signature information.
How to sign the signatures.xml
file depends on the objective:
signatures.xml
file SHOULD NOT be signed.Signature
being created. This transform would sign all previous
signatures, and it would become invalid if a subsequent signature were added to
the package.If it is desired to have only the removal of an existing signature invalidate the signature for the OCF abstract container (i.e., allow the addition of new signatures), an XPath transform could be used to sign just the existing signatures. The details of such a transform are outside the scope of this specification.
The [xmldsig-core1] specification does not associate any semantics with a
signature; an agent might include semantic information, for example, by adding
information to the Signature element that describes the signature. The
[xmldsig-core1] specification describes how additional information can be added to
a signature, such as by use the SignatureProperties
element.
This section is non-normative.
An OCF ZIP container is a physical single-file manifestation of an OCF abstract container. The container allows:
the exchange of in-progress EPUB publication between different individuals and/or different organizations;
the transfer of EPUB publications from a publisher or conversion house to the distribution or sales channel; and
the delivery of EPUB publications to EPUB reading systems or users.
An OCF ZIP container uses the ZIP format as specified by [zip], but with the following constraints and clarifications:
The contents of the OCF ZIP container MUST be a conforming OCF abstract container.
OCF ZIP containers MUST NOT use the features in the ZIP application note [zip] that allow ZIP files to be spanned across multiple storage media or be split into multiple files.
OCF ZIP containers MUST include only stored (uncompressed) and Deflate-compressed ZIP entries within the ZIP archive.
OCF ZIP containers MAY use the ZIP64 extensions defined as "Version 1" in section V, subsection G of the application note [zip] and SHOULD use only those extensions when the content requires them.
OCF ZIP containers MUST NOT use the encryption features defined by
the ZIP format; instead, encryption MUST be done using the features described in 4.2.6.3.2 Encryption file (encryption.xml
).
OCF ZIP containers MUST encode file system names using UTF-8 [unicode].
The following constraints apply to specific fields in the OCF ZIP container archive:
In the local file header table, the version needed to
extract
fields MUST be set to 10
, 20
or
45
to match the maximum version level needed by the given file (e.g.,
20
for Deflate, 45
for ZIP64).
In the local file header table, the compression
method field MUST be set to 0
or 8
.
The mimetype
file MUST be the first file in the OCF ZIP container. In
addition:
mimetype
file MUST be the MIME media type [rfc2046]
string application/epub+zip
encoded in US-ASCII [us-ascii].mimetype
file MUST NOT contain any leading or trailing padding or
whitespace.mimetype
file MUST NOT begin with the Unicode byte order mark U+FEFF.mimetype
file MUST NOT be compressed or encrypted.mimetype
file MUST NOT include an extra field in its ZIP header.Refer to I.2 The application/epub+zip
media type for further information about the
application/epub+zip
media type.
Better methods of protecting fonts exist. Both [woff] and [woff2] fonts, for example, allow the embedding of licensing information and provide some protection through font table compression. The use of remotely hosted fonts also allows for font subsetting. It is advised to use font obfuscation as defined in this section only when no other options are available. See also the limitations of obfuscation.
This section is non-normative.
Since an OCF ZIP container is fundamentally a ZIP file, commonly available ZIP tools can be used to extract any unencrypted content stream from the package. Moreover, the nature of ZIP files means that their contents might appear like any other native container on some systems (e.g., a folder).
While this simplicity of ZIP files is quite useful, it also poses a problem as it makes it easy for others to extract and re-use the fonts in an EPUB publication if they are not encrypted. More critically, many commercial fonts allow embedding, but embedding a font implies making it an integral part of the EPUB publication, not just providing the original font file along with the content.
Since integrated ZIP support is so ubiquitous in modern operating systems, simply placing a font in the OCF ZIP container is insufficient to signify that the font cannot be reused in other contexts. This uncertainty can undermine the otherwise useful font embedding capability of EPUB publications.
To discourage reuse of their fonts, some font vendors might only allow their use in EPUB publications if the fonts are bound in some way to the EPUB publication. That is, if the font file cannot be installed directly for use on an operating system with the built-in tools of that computing device, and it cannot be directly used by other EPUB publications.
It is beyond the scope of this specification to provide a digital rights management or enforcement system for fonts. This section instead defines a method of obfuscation that will require additional work on the part of the final OCF recipient to gain general access to any obfuscated fonts.
This section is non-normative.
This specification does not claim that obfuscation constitutes encryption, nor does it guarantee that the resource will be secure from copyright infringement. The hope is only that this algorithm will meet the requirements of vendors who require some assurance that their fonts cannot be extracted simply by unzipping the OCF ZIP container and copying the resource.
Obfuscation, like any protection scheme, cannot fully protect fonts from being accessed in their deobfuscated state. The mechanism only provides an obstacle for those who are unaware of the license details. It will not prevent a determined user from gaining full access to the font through such alternative means as:
As a result, whether this method of obfuscation satisfies the requirements of individual font licenses remains a question for the licensor and licensee. Licensees are responsible for ensuring the use of obfuscation meets their font licensing requirements.
It is also worth noting that obfuscation can lead to interoperability issues in reading systems as they do not have to deobfuscate fonts. As a result, the visual presentation of a publication could differ from reading system to reading system.
Also note that the algorithm is restricted to obfuscating fonts. It is not intended as a general-purpose mechanism for obfuscating any resource in the EPUB container.
The key used in the obfuscation algorithm MUST be derived the from the unique identifier.
All whitespace characters, as defined in section 2.3 of the XML
1.0 specification [xml], MUST be removed from this identifier — specifically, the
Unicode code points U+0020
, U+0009
, U+000D
and
U+000A
.
A SHA-1 digest of the UTF-8 representation of the resulting string, as specified by the Secure Hash Standard [fips-180-4], MUST then be generated. This digest can then be used as the key for the algorithm.
The algorithm employed to obfuscate fonts consists of modifying the first 1040 bytes (~1KB) of the font file. (In the unlikely event that the font file is less than 1040 bytes, this process will modify the entire file.)
To obfuscate the original data, store, as the first byte of the embedded font, the result of performing a logical exclusive or (XOR) on the first byte of the raw font file and the first byte of the obfuscation key.
Repeat this process with the next byte of source and key and continue for all bytes in the key. At this point, the process continues starting with the first byte of the key and 21st byte of the source. Once 1040 bytes are encoded in this way (or the end of the source is reached), directly copy any remaining data in the source to the destination.
Fonts MUST be obfuscated before compressing and adding them to the OCF ZIP container. Note
that as obfuscation is not encryption, this requirement is not a violation of the one in 4.2.6.3.2 Encryption file (encryption.xml
) to compress fonts before encrypting
them.
The following pseudo-code exemplifies the obfuscation algorithm.
Although not technically encrypted data, all obfuscated fonts MUST have an entry in the encryption.xml
file accompanying the EPUB publication (see 4.2.6.3.2 Encryption file (encryption.xml
)).
An EncryptedData
element MUST be specified for each obfuscated font. Each
EncryptedData
element MUST contain a child EncryptionMethod
element whose Algorithm
attribute has the value
http://www.idpf.org/2008/embedding
. The presence of this attribute signals the
use of the algorithm described in this specification.
The CipherReference
child of the CipherData
element MUST list the path
to the obfuscated font. As the obfuscation algorithm is restricted to fonts, the
URI
attribute of the CipherReference
element MUST reference a Font core media type resource.
To prevent trivial copying of the embedded font to other EPUB publications, the obfuscation key MUST NOT be stored in the
encryption.xml
file.
All [xml] elements defined in this section are in the http://www.idpf.org/2007/opf
namespace [xml-names] unless otherwise specified.
This section is non-normative.
The package document is an XML document that consists of a set of elements that each encapsulate information about a particular aspect of an EPUB publication. These elements serve to centralize metadata, detail the individual resources, and provide the reading order and other information necessary for its rendering.
The following list summarizes the information found in the package document:
Metadata — mechanisms to include and/or reference information about the EPUB publication.
A manifest — identifies via URL [url], and describes via MIME media type [rfc4839], the set of publication resources.
A spine — an ordered sequence of ID references to top-level resources in the manifest from which reading systems can reach or utilize all other resources in the set. The spine defines the default reading order.
Collections — a method of encapsulating and identifying subcomponents within the EPUB publication.
Manifest fallback chains — a mechanism that defines an ordered list of top-level resources as content equivalents. A reading system can then choose between the resources based on which it is capable of rendering.
An EPUB publication can reference more than one package document, allowing for alternative
representations of the content. For more information, refer to 4.2.6.3.1 Container file (container.xml
)
Refer to I.1 The application/oebps-package+xml
media type for information about the file
properties of package documents.
To parse a URL string url used in the package document, the URL parser [url] MUST be applied to url, with the content URL of the package document as base.
The package
element encapsulates all the information expressed in the package document.
package
REQUIRED root element [xml] of the package document.
In this order:
The version
attribute specifies the EPUB specification
version to which the given EPUB publication conforms. The attribute MUST have the value
"3.0
" to indicate conformance with EPUB 3.
Updates to this specification do not represent new versions of EPUB 3 (i.e., each new 3.X
specification is a continuation of the EPUB 3 format). The Working Group is committed to
minimizing any changes that would invalidate existing content, allowing the version
attribute value to remain unchanged.
The unique-identifier
attribute takes an IDREF
[xml] that identifies the
element that provides the preferred, or primary,
identifier.dc:identifier
The prefix
attribute provides a declaration mechanism for
prefixes not reserved by this specification. Refer to
D.1.4 The prefix
attribute for more information.
The metadata
element encapsulates meta information.
metadata
REQUIRED first child of
.package
None
In any order:
dc:identifier
[1 or more]
dc:title
[1 or more]
dc:language
[1 or more]
Dublin Core Optional Elements
[0 or more]
meta
[1 or more]
link
[0 or more]
The package document metadata
element has two primary functions:
to provide a minimal set of meta information for reading systems to use to internally catalogue an EPUB publication and make it available to a user (e.g., to present in a bookshelf).
to provide access to all rendering metadata needed to control the layout and display of the content (e.g., fixed-layout properties).
The package document does not provide complex metadata encoding capabilities. If more detailed
information needs to be provided, metadata records (e.g., that conform to an international
standard such as [onix] or are created for custom purposes) can be associated with the EPUB
publication using the
element. This approach allows reading systems to process the
metadata in its native form, avoiding the potential problems and information loss caused by
translating to use the minimal package document structure.link
In keeping with this philosophy, the package document only has the
following minimal metadata requirements: it MUST contain the [dcterms]
,
dc:title
, and dc:identifier
elements together with the [dcterms]
dc:language
property. All other metadata is OPTIONAL.dcterms:modified
The
element provides a generic mechanism for including metadata properties from any vocabulary. Although this mechanism can be used for any
metadata purposes, it is typically used to include rendering and accessibility metadata defined
in EPUB specifications.meta
See [epub-a11y-111] for accessibility metadata recommendations.
The Dublin Core elements [dcterms] and
element have mandatory child text content
[dom]. In the descriptions for these elements, this specification refers to this content as
the element's value.meta
These elements MUST have non-empty values after leading and trailing ASCII whitespace [infra] is stripped (i.e., they have to consist of at least one non-whitespace character).
Whitespace within these element values is not significant. Sequences of one or more whitespace characters are collapsed to a single space [infra] during processing .
The dc:identifier
element [dcterms] contains an identifier such as a UUID, DOI or ISBN.
dc:identifier
http://purl.org/dc/elements/1.1/
REQUIRED child of
. Repeatable.metadata
id
[conditionally required]
Text
An EPUB publication MUST include a dc:identifier
element that specifies
an identifier that is unique to itself — its unique identifier. This element
MUST be referenced from the
element's package
unique-identifier
attribute.
Although not static, avoid changing the unique identifier too often. Unique Identifiers are intended to have maximal persistence both for referencing and distribution purposes. Do not issue new identifiers when making minor revisions such as updating metadata, fixing errata, or making similar minor changes.
Additional identifiers MAY be specified.
It is advised to use absolute-URL strings [url] for identifiers whenever possible. The inclusion of a domain can improve the uniqueness of the identifier, for example, while the use of a URN with a namespace identifier [rfc8141] improves processing by reading systems.
The identifier-type
property MAY be used to
indicate that the value of a dc:identifier
element conforms to an
established system or an issuing authority granted it.
The dc:title
element [dcterms] represents an instance of a name for the
EPUB publication.
dc:title
http://purl.org/dc/elements/1.1/
REQUIRED child of
. Repeatable.metadata
Text
The first dc:title
element in document order is the main
title of the EPUB publication (i.e., the primary one reading systems present to
users).
It is advised to use only a single dc:title
element to ensure consistent
rendering of the title in reading systems.
Although it is possible to include more than one dc:title
element for
multipart titles, reading system support for additional dc:title
elements is inconsistent. Reading systems might ignore the additional segments or
combine them in unexpected ways.
For example, the following example shows a basic multipart title:
<metadata …>
<dc:title>
THE LORD OF THE RINGS
</dc:title>
<dc:title>
Part One: The Fellowship of the Ring
</dc:title>
…
</metadata>
The same title could instead be expressed using a single dc:title
element as follows:
<metadata …>
<dc:title>
THE LORD OF THE RINGS, Part One:
The Fellowship of the Ring
</dc:title>
…
</metadata>
Previous versions of this specification advised using the title-type
and display-seq
properties to identify and format the segments
of multipart titles (see the Great Cookbooks example). It
is still possible to add these semantics, but they are also not well supported.
The dc:language
element [dcterms] specifies the language of the content of
the EPUB publication.
dc:language
http://purl.org/dc/elements/1.1/
REQUIRED child of
. Repeatable.metadata
id
[optional]
Text
The value of each dc:language
element MUST be a well-formed language tag [bcp47].
Although additional dc:language
elements MAY be specified for multilingual
EPUB publications, reading systems will treat the first dc:language
element in document order as the primary language.
Publication resources do not inherit their language from dc:language
element(s). The language of each resource has to be set using the intrinsic methods
of the format.
All [dcterms] elements except for
, dc:identifier
, and dc:language
are designated as OPTIONAL. These elements conform to the following generalized
definition:dc:title
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/
OPTIONAL child of
. Repeatable.metadata
Text
This specification does not modify the [dcterms] element definitions except as noted in the following sections.
The dc:contributor
element [dcterms] is used to represent the
name of a person, organization, etc. that played a secondary role in the creation of the
content.
The requirements for the dc:contributor
element are identical to those for
the
element in all other respects.dc:creator
The dc:creator
element [dcterms] represents the name of a
person, organization, etc. responsible for the creation of the content. A role
property MAY be associated with the element to indicate the function the creator played.
It is advised that the dc:creator
element contain the name of the creator as
reading systems are expected to display it to users.
The file-as
property MAY be used to associate a normalized form of the creator's name, and
the alternate-script
property to represent
the creator's name in another language or script.
If an EPUB publication has more than one creator, specify each in a separate
dc:creator
element.
The document order of dc:creator
elements in the metadata
section determines the display priority, where the first dc:creator
element
encountered is the primary creator.
Secondary contributors are represented using the
element.dc:contributor
The dc:date
element [dcterms] defines the publication date of the
EPUB publication. The publication date is not the same as the last modified date (the last time the EPUB
publication was changed).
It is RECOMMENDED that the date string conform to [iso8601-1], particularly the subset expressed in W3C Date and Time Formats [datetime], as such strings are both human and machine readable.
Additional dates can be expressed using the specialized date properties available in the [dcterms] vocabulary, or similar.
EPUB publications MUST NOT contain more than one dc:date
element.
The dc:subject
element [dcterms] identifies the subject of the
EPUB publication. It is advised to set the value of the element to the
human-readable heading or label, but a code value can be used if the subject taxonomy
does not provide a separate descriptive label.
The system or scheme the element's value is drawn from can be identified using the authority
property.
When a scheme is identified, a subject code MUST be associated with the element using the term
property.
The term
property MUST NOT be associated with a
dc:subject
element that does not specify a scheme.
The values of the dc:subject
element and term
property are
case sensitive only when the designated scheme requires.
The dc:type
element [dcterms] is used to indicate that the EPUB publication is of a specialized type (e.g., annotations or a dictionary packaged in
EPUB format).
The element's value MAY be any text string.
The former IDPF EPUB 3 Working Group maintained a non-normative registry of specialized EPUB publication types for use with this element. This Working Group no longer maintains the registry and does not anticipate developing new specialized publication types.
The meta
element provides a generic means of including package metadata.
meta
As child of the
element. Repeatable.metadata
Text
Each meta
element defines a metadata expression. The
property
attribute takes a property
data type value that defines the statement made in the expression, and the text content
of the element represents the assertion. (Refer to D.1 Vocabulary association mechanisms for more
information.)
This specification defines two types of metadata expressions that can be
defined using the meta
element:
meta
element establishes some aspect of the EPUB publication. A
meta
element that omits a refines attribute defines a primary
expression.meta
element is associated with another expression or resource using the
refines
attribute to enhance its meaning. A subexpression might refine a
media clip, for example, by expressing its duration, or refine a creator or contributor
expression by defining the role of the person.Subexpressions MAY be used to refine the meaning of other subexpressions, thereby creating chains of information.
All the [dcterms] elements represent primary expressions, and permit refinement by meta element subexpressions.
The Meta Properties Vocabulary is the default vocabulary for use with the property
attribute.
Terms from other vocabularies MAY be added as defined in D.1 Vocabulary association mechanisms.
The scheme
attribute identifies the system or scheme the
element's value was obtained from. The value of the attribute MUST be a property data type value that resolves to the
resource that defines the scheme. The scheme
attribute does not have a default vocabulary (i.e., all values require a prefix).
The metadata
section MUST contain exactly one dcterms:modified
property [dcterms]
containing the last modification date. The value of this property MUST be an [iso8601-1]
complete representation of a date and time of day matching the extended format:
YYYY-MM-DDThh:mm:ssZ
The "Z" (Zulu) time indicator at the end of the pattern means the last modification date is always expressed in Coordinated Universal Time (UTC).
It is advised to update the last modified date whenever changes are made to the EPUB publication.
Additional dcterms:modified
properties MAY be specified in the package document
metadata, but they MUST have a different subject (i.e., they require a refines
attribute that references an element or resource).
The requirements for the last modification date are to ensure compatibility with earlier versions of EPUB 3 that defined a release identifier [epubpackages-32] for EPUB publications.
The link
element associates resources with an EPUB publication, such as metadata
records.
link
As a child of
. Repeatable.metadata
href
[required]
hreflang
[optional]
id
[optional]
media-type
[conditionally required]
properties
[optional]
refines
[optional]
rel
[required]
Empty
The
element MAY contain zero or more metadata
link
elements, each of which
identifies the location of a publication resource or a linked resource in its REQUIRED
href
attribute.
Resources referenced from the link
element are
publication resources only when they are:
referenced from the spine; or
included or embedded in an EPUB content document (e.g., a metadata record serialized
as RDFa [rdfa-core] or as JSON-LD [json-ld11] embedded in an
[html] script
element).
In all other cases (e.g., when linking to standalone [onix] records), the resources referenced are not publication resources (i.e., are not subject to core media type requirements) and MUST NOT be listed in the manifest.
Although linked resources MAY be located outside the EPUB container, reading systems do not have to retrieve remote resources. It is advised to consider what impact this might have on the user's reading experience before hosting them remotely.
The media-type
attribute MUST be specified for all linked resources within the EPUB container. It is
OPTIONAL for linked resources located outside the EPUB container as more than one media type
could be served from the same URL [url].
The OPTIONAL hreflang
attribute identifies the language of the
linked resource. The value MUST be a well-formed language
tag [bcp47].
The REQUIRED rel
attribute takes a space-separated list of property values that establish the relationship the linked
resource has with the EPUB publication.
The value of the media-type
attribute is not always sufficient to identify the type
of linked resource (e.g., many XML-based record formats use the media type
"application/xml
"). To aid reading systems in the identification of such
generic resources, a semantic identifier MAY be specified in the properties
attribute.
The Metadata Link Vocabulary is the default vocabulary for the rel
and properties
attributes.
Relationships and properties from other vocabularies MAY be added as defined in D.1 Vocabulary association mechanisms.
One or more linked metadata records MAY be provided.
Due to the variety of metadata record formats and serializations that can be linked to an EPUB publication, and the complexity of comparing metadata properties between them, this specification does not require reading systems to process linked records.
In addition to full records, the link
element MAY be used to identify individual
metadata properties available in an alternative format.
The manifest
element provides an exhaustive list of publication resources used
in the rendering of the content.
With the exception of the package document, the
manifest
MUST list all publication resources regardless of whether they are
container resources or remote resources.
As the package document is already identified by the container.xml
file, the
manifest
MUST NOT specify an item
element for it (i.e., a
self-reference serves no purpose).
The manifest is only for listing publication resources. Linked resources and the special files for processing the OCF
Container (i.e., files in the META-INF
directory, and the
mimetype
file) are restricted from inclusion.
Failure to provide a complete manifest of publication resources can lead to rendering issues. Reading systems might not unzip such resources or could prevent access to them for security reasons.
The item
element represents a publication resource.
item
As a child of
. Repeatable.manifest
fallback
[conditionally required]
href
[required]
id
[required]
media-overlay
[optional]
media-type
[required]
properties
[optional]
Empty
Each item
element identifies a publication resource by the
URL [url] in its href
attribute. The value MUST be an
absolute- or path-relative-scheme-less-URL
string [url]. Each URL MUST be unique within the manifest
scope after parsing.
The publication resource identified by an item
element
MUST conform to the applicable specification(s) as inferred from the MIME media type [rfc2046]
provided in the media-type
attribute. For core media type resources, the media type designated in 3.2 Core media types MUST
be used.
The fallback
attribute specifies the fallback for the
referenced publication resource. The fallback
attribute's IDREF [xml] value MUST resolve to another item
in the
manifest
.
The fallback for one item
MAY specify a fallback to another item
, and
so on, creating a chain of fallback options. Refer to 3.5.1 Manifest fallbacks for
additional requirements related to the use of fallback chains.
The media-overlay
attribute takes an IDREF [xml]
that identifies the media overlay document for the resource described by this
item
. Refer to 9.3.5 Media overlays packaging for more information.
The order of item
elements in the manifest
is not significant. The
element provides the presentation sequence of content documents.spine
The properties
attribute provides information
to reading systems about the content of a resource. This information enables discovery
of key resources, such as the cover image and EPUB navigation document. It also allows
reading systems to optimize rendering by indicating, for example, whether the resource
contains embedded scripting, MathML, or SVG.
The Manifest Properties
Vocabulary is the default vocabulary for the
properties
attribute.
The following properties MUST be set whenever a resource referenced by an item
element matches their respective definitions:
These properties do not apply recursively to content included into a resource (e.g., via the
[html] iframe
element). For example, if a non-scripted XHTML content document
embeds a scripted content document, only the embedded document's manifest
item
properties
attribute will have the scripted
value.
Exactly one item
MUST be declared as the EPUB navigation document using the nav
property.
If an EPUB publication contains a cover image, it is advised to set the OPTIONAL cover-image
property.
Terms from other vocabularies MAY be added as defined in D.1 Vocabulary association mechanisms.
The spine
element defines an ordered list of manifest
item
references that represent the default reading order.
spine
id
[optional]
page-progression-direction
[optional]
itemref
[1 or more]
The spine
MUST specify at least one EPUB content document or foreign content document.
All EPUB and foreign content documents that are hyperlinked to from
publication resources in the spine
MUST be listed in the spine
, where
hyperlinking encompasses any linking mechanism that requires the user to navigate away from the
current resource. Common hyperlinking mechanisms include the href
attribute of the
[html] a
and area
elements and scripted links (e.g., using DOM Events and/or form
elements). The requirement to list hyperlinked resources applies recursively (i.e., all EPUB and
foreign content documents hyperlinked to from hyperlinked documents have to be listed, and so
on.).
All EPUB and foreign content documents hyperlinked to from the EPUB navigation document MUST
also be listed in the spine
, regardless of whether the EPUB navigation document is
included in the spine
.
As hyperlinks to resources outside the EPUB container are not publication resources, they are not subject to the requirement to include in the spine (e.g., web pages and web-hosted resources).
Publication resources used in the rendering of spine items (e.g., referenced from [html] embedded content) similarly do not have to be included in the spine.
The page-progression-direction
attribute sets the global direction in which the content flows. Allowed values are
ltr
(left-to-right), rtl
(right-to-left) and default
.
When the default
value is specified, no preference is being expressed and the
reading system can choose the rendering direction.
Although the page-progression-direction
attribute sets the global flow direction,
individual EPUB content documents and parts of EPUB content documents MAY override this setting
(e.g., via the writing-mode
CSS property). Reading systems might also provide
mechanisms to override the default direction (e.g., buttons or settings that allow the
application of alternate style sheets).
The legacy
toc
attribute takes an IDREF [xml] that identifies
the manifest item that represents the NCX.
The itemref
element identifies an EPUB content document or foreign content document in the default reading order.
itemref
As a child of
. Repeatable.spine
id
[optional]
idref
[required]
linear
[optional]
properties
[optional]
Empty
Each itemref
element MUST reference the ID [xml] of an
in the manifest via the
IDREF [xml] in its item
idref
attribute.
item
element IDs MUST NOT be referenced more than once.
Each referenced manifest item
MUST be either a) an
EPUB content document or b) a foreign content document that includes an EPUB content
document in its manifest fallback chain.
Although EPUB publications require an EPUB navigation document, it is not mandatory to include it in the spine.
The linear
attribute indicates whether the referenced
item
contains content that contributes to the primary reading order and that
reading systems are expected to read sequentially ("yes
"), or auxiliary content
that enhances or augments the primary content that reading systems can access out of sequence
("no
"). Examples of auxiliary content include notes, descriptions, and answer
keys.
The linear
attribute allows reading systems to distinguish content that a user needs
to access as part of the default reading order from supplementary content which a reading system
might, for example, present in a popup window or omit from an aural rendering.
Specifying that content is non-linear does not require reading systems to present it in a specific way; it is only a hint to the purpose. Reading systems might present non-linear content where it occurs in the spine, for example, or might skip it until users reach the end of the spine.
It is advised to list non-linear content at the end of the spine except when it makes sense for users to encounter it between linear spine items.
A linear itemref
element is one whose linear
attribute value is explicitly set to "yes
" or that omits the
attribute — reading systems will assume the value "yes
" for
itemref
elements without the attribute. The spine MUST contain at least one
linear itemref
element.
As reading systems might not provide access to non-linear content while progressing through the spine, a secondary means of accessing all non-linear content MUST be provided (e.g., via hyperlinks in the content or the EPUB navigation document).
The Spine Properties
Vocabulary is the default vocabulary for the
properties
attribute.
Terms from other vocabularies MAY be added as defined in D.1 Vocabulary association mechanisms.
The collection
element defines a related group of resources.
collection
OPTIONAL sixth element of package
. Repeatable.
In this order: metadata
[0 or 1]
, ( collection
[1 or more]
or ( collection
[0 or more]
, link
[1 or more]
))
The collection
element allows resources to be assembled into logical groups for a
variety of potential uses: enabling reassembly into a meaningful unit of content split across
multiple EPUB content documents (e.g., an index split across multiple documents),
identifying resources for specialized purposes (e.g., preview content), or collecting together
resources that present additional information about the EPUB publication.
The role of each collection
element MUST be identified
in its role
attribute, whose value MUST be one or more NMTOKENs [xmlschema-2]
and/or absolute-URL-with-fragment strings [url].
The requirements for authoring specialized collections are defined by their respective specifications.
The former IDPF EPUB 3 Working Group maintained both a registry of role extensions and a list of custom extension roles. This Working Group no longer maintains these registries.
The package document legacy features are retained from EPUB 2 only to allow the authoring of content that can function, to some degree, in reading systems that only support EPUB 2 publications.
These features were added primarily to address the overlap period as EPUB 3 reading systems were developed, as there was still a high probability at that time that users would be opening EPUB 3 publications on EPUB 2 reading systems.
As reading systems that only handle EPUB 2 publications are now rare, consider how likely it is that EPUB publications will still be opened on these types of older devices before making the effort to add these legacy features.
EPUB publications MAY include the legacy features defined in this section for compatibility purposes with EPUB 2 reading systems.
EPUB 3 reading systems will not use these features when presenting publications to users.
The Working Group advises that EPUB conformance checkers not issue alerts about the presence of legacy features in EPUB publications, as their inclusion is valid for backwards compatibility. Only issue alerts if a legacy feature does not conform to its definition or otherwise breaks a usage requirement.
The meta
element [opf-201] provides a means of including generic metadata for EPUB 2 reading systems.
Refer to the meta
element definition in [opf-201] for more information.
The EPUB 3
element, which uses different attributes and requires text content,
provides metadata capabilities for EPUB 3 reading systems.meta
The [opf-201] meta
element also allows a cover image to be specified for EPUB
2 reading systems. In EPUB 3, the cover image has to be identified using the cover-image
property on the manifest
for the image.item
The guide
element [opf-201] provides machine-processable navigation to key structures in
EPUB 2 reading systems.
Refer to the guide
element definition in [opf-201] for more information.
The landmarks nav in the EPUB navigation document provides this functionality in EPUB 3 reading systems.
The NCX [opf-201] provides a table of contents for EPUB 2 reading systems.
Refer to the NCX definition in [opf-201] for more information.
The EPUB navigation document replaces the NCX for EPUB 3 reading systems.
Support for the HTML syntax is still an open issue in the EPUB 3.4 revision. It is at risk, depending on authors' and implementers' feedback. This specification introduces it as a core media type and also minimally adds requirements for its authoring in this section to begin making readers aware of the proposed change.
Much of this specification, and the Reading Systems specification [epub-rs-34], continues to
refer only to XHTML content documents and their authoring requirements, a number of which need
resolving (e.g., providing an alternative to the
epub:type
attribute). These references and requirements will be updated
once it is clearer that support will definitely be added in this revision. Until then, the
specification should be read as also supporting HTML wherever it currently refers to XHTML,
despite the support inconsistencies.
To provide feedback on this change, please add comments to issue 2715 in the GitHub tracker.
This section is non-normative.
This section defines a profile of [html] for creating HTML content documents. An instance of an HTML document that conforms to this profile is a core media type resource.
An HTML content document:
MUST conform to the conformance criteria for all document constructs defined by [html] unless explicitly overridden in 6.1.4 HTML deviations and constraints.
MAY include extensions to the [html] grammar as defined in 6.1.3 HTML extensions, and MUST conform to all content conformance constraints defined therein.
MUST either:
text/html
; orapplication/xhtml+xml
.Unless specified otherwise, HTML content documents inherit all definitions of semantics, structure, and processing behaviors from the [html] specification.
The recommendation that EPUB publications follow the accessibility requirements in [epub-a11y-111] applies to HTML content documents. See Accessibility.
This section defines EPUB 3 XHTML content document extensions to the underlying [html] document model.
Although [html] allows user agents to support vendor-neutral extensions, unless such extensions are listed in this section, they are not supported features of EPUB 3.
The
attribute MAY be used in XHTML content documents to express structural semantics.epub:type
The attribute MUST NOT be used on the head
element or metadata content [html].
The [html-rdfa] specification defines a set of attributes that MAY be used in XHTML content documents to semantically enrich the content. The use of these attributes MUST conform to the requirements defined in [html-rdfa].
The [html-rdfa] specification defines changes to the [html] content model when authors use RDFa attributes. This modified content model is valid in XHTML content documents.
The listing of RDFa does not express a preference on the part of the Working Group, only that these attributes represent an extension of the HTML grammar. Microdata attributes [html] and linked data [json-ld11] are natively supported in XHTML content documents and can be used as well.
The [its20] specification defines a set of attributes that MAY be used in XHTML content documents to add support for internationalization, translation, and localization.
ITS attributes MUST only be used as defined in Using ITS markup in HTML [its20] (i.e., EPUB 3 does not support the namespaced attributes).
The use of these attributes MUST conform to the requirements defined in [its20].
XHTML content documents MAY contain custom attributes, which are prefixed [xml-names] attributes whose namespace URL does not include either of the following strings in its domain [url]:
w3.org
idpf.org
When using custom attributes, the content MUST remain consumable by a user without any information loss or other significant deterioration, regardless of the reading system it is rendered on.
Custom attributes are usually defined in a reading system-specific manner and are not intended for use by other reading systems. The preferred method to add extensions for multiple independent reading systems to use is to extend this specification.
This section defines deviations from, and constraints on, the underlying [html] document model applicable to EPUB 3 XHTML content documents.
XHTML content documents support embedded [mathml3]. Occurrences of MathML markup MUST conform to the constraints expressed in the MathML specification [mathml3], with the following additional restrictions:
The math
element MUST contain only Presentation MathML, except within the
annotation-xml
element.
Content
MathML MAY be included within MathML markup in XHTML content documents, and,
when present, MUST be included within an annotation-xml
child element
of a semantics
element.
When Content MathML is included per the previous
condition, the given annotation-xml
element's encoding
attribute MUST be set to either of the functionally-equivalent values
MathML-Content
or application/mathml-content+xml
, and
the name
attribute to contentequiv
.
This subset eases the implementation burden on reading systems and promotes accessibility, while retaining compatibility with [html] user agents.
The mathml
property of the manifest item
element indicates that an XHTML content document contains
embedded MathML.
XHTML content documents support the embedding of SVG:
img
or object
element. SVGs embedded by reference are SVG
core media types so their requirements are already defined in 6.2 SVG content documents.The svg
property of the manifest
element indicates that an XHTML content document contains embedded SVG (either
by reference or by inclusion).item
This section is non-normative.
The [html] base
element can be used to specify the document base URL for the purposes of
parsing URLs. When using it in an EPUB publication, the interpretation of the
base
element could inadvertently result in references to remote resources. It could also cause reading systems to misinterpret the location of
hyperlinks (e.g., relative links to other documents in the publication might appear as
links to a web site if the base
element specifies an absolute URL). To
avoid significant interoperability issues, use of the base
element is
discouraged.
The [html] rp
element is intended to provide a fallback
for older reading systems that do not recognize ruby markup (i.e., a parenthesis
display around ruby
markup). As EPUB 3 reading systems are ruby-aware, and
can provide fallbacks, use of rp
elements is discouraged.
Since the [html] embed
element element does not include intrinsic fallback facilities for reading systems that do not support scripting, using the element with scripted resources is
discouraged. The [html] object
element is a better alternative as it includes
intrinsic fallback capabilities.
Reading systems might not support all the features of [svg] or support them across all platforms that reading systems run on. When utilizing such features, consider the risks to interoperability and document longevity.
This section is non-normative.
The Scalable Vector Graphics (SVG) specification [svg] defines a format for representing final-form vector graphics and text.
Although XHTML content documents are more commonly used as [=top-level content documents], the use of SVG content documents is also permitted. SVGs are typically only needed for certain special cases, such as when final-form page images are the only suitable representation of the content (e.g., for cover art or in the context of manga or comic books).
This section defines a profile for [svg] documents. An instance of an XML document that conforms to this profile is a core media type resource and is referred to in this specification as an SVG content document.
This section defines conformance requirements for SVG content documents. Refer to 6.1.4.2 Embedded SVG for the conformance requirements for SVG embedded in XHTML content documents.
An SVG content document MUST be a conforming SVG stand-alone file [svg] and conform to all content conformance constraints expressed in 6.2.3 Restrictions on SVG.
The recommendation that EPUB publications follow the accessibility requirements in [epub-a11y-111] applies to SVG content documents. See Accessibility.
This specification restricts the content model of SVG content documents and SVG embedded by inclusion in XHTML content documents as follows:
The [svg] foreignObject
element:
MUST contain either [html] flow content or exactly one [html] body
element.
In the case of SVGs embedded by
inclusion, a body
element is not permitted per the restrictions on SVG defined in [html].
MUST contain a valid document fragment that conforms to the XHTML content document model defined in 6.1.2 HTML requirements.
If the [svg] title
element contains
marked-up text, the markup MUST contain only elements declared in the HTML namespace [infra].
Although the [svg] title
element allows markup elements, support for
this feature is limited. The use of text-only titles is advised for maximum
interoperability.
When specified, the
attribute MUST
only be included on renderable elements [svg].epub:type
The SVG content model allows authors to include
namespaced attributes, so this specification does not need to allow the
attribute or vocabulary association
mechanisms.epub:type
One key difference between SVGs embedded by reference and by inclusion, however, is
that SVGs embedded by inclusion cannot have an epub:prefix
attribute on their root svg
element
[svg]. For more information, refer to D.1.4 The prefix
attribute.
This section defines requirements for technologies usable in both XHTML and SVG content documents.
This section is non-normative.
CSS is an integral part of the Open Web Platform. Readers, publishers, and document authors expect CSS to "just work," as they expect HTML to just work.
In the past, EPUB defined a profile of CSS that mandated support for certain properties and provided prefixed versions of numerous other properties. Although the CSS Working Group no longer recommends the use of prefixed properties, this specification maintains some prefixed properties to avoid breaking existing content. But with the minor exceptions defined in this section, EPUB defers to the W3C to define CSS and expects reading systems to support it at the level of major browsers.
Although reading systems are expected to support CSS as defined in the CSS snapshot [epub-rs-34], the reality is that most reading systems currently do not support all desired features of CSS, and often will modify, and allow users to change, the default presentation defined in an EPUB publication. As a result, styling has to be adapted to these realities. For more information, refer to 6.3.1.3 Reading system support considerations.
A CSS style sheet:
MAY include any CSS properties, with the following exceptions:
It MUST NOT include the direction
property [css-writing-modes-3].
It MUST NOT include the unicode-bidi
property [css-writing-modes-3].
MAY include the prefixed properties defined in 6.3.1.4 Prefixed properties.
MUST be encoded in UTF-8 or UTF-16 [unicode], with UTF-8 as the RECOMMENDED encoding.
This specification restricts the use of the direction
and
unicode-bidi
properties because reading systems might not
implement, or might switch off, CSS processing. The following format-specific methods
have to be used when control over these aspects of the rendering is needed:
This section is non-normative.
Support for the following CSS features are known to be particularly problematic in EPUB reading systems:
Reading system-induced pagination can interact poorly with style sheets as reading systems sometimes paginate using columns. This could result in incorrect values for viewport sizes. Fixed and absolute positioning are particularly problematic.
Some types of screens will render animations and transitions poorly (e.g., those with high latency).
Reading systems will typically set some aspects of an EPUB publication's style (e.g., setting margins appropriate to the application), potentially overriding the default instructions. To mitigate conflicts, and any potential rendering problems, it is advised to consult reading systems' user agent style sheets, when they are made publicly available, and adapt styling choices for optimal display.
Furthermore, reading systems that allow users to change the appearance (e.g., choice of
fonts, text justification, or foreground and background colors) will also modify some CSS
rendering directions in an EPUB publication. Due to CSS precedence rules, it is advisable to
limit the use of [html] style
attributes in EPUB content documents so that
the user experience is not negatively impacted (i.e., the users' style choices not being
universally applied). Although some reading systems will override inline styles, such
behavior is not guaranteed.
Earlier version of EPUB included prefixed CSS properties, as many CSS features related to world languages were not yet mature. To ensure backwards compatibility for content authored using these prefixes, they have been retained in this specification. Unless otherwise noted, prefixed properties and values behave exactly as their unprefixed equivalents as described in the appropriate CSS specification. The prefixed properties are documented in E. Prefixed CSS properties.
The Working Group recommends switching to the unprefixed versions as soon as CSS support allows as these prefixed properties are not expected to be maintained in the next major version of EPUB.
This specification retains the widely used prefixed properties from [epubcontentdocs-301] but removes support for the less-used ones. It is strongly advised to use CSS-native solutions for the removed properties whenever available.
EPUB content documents MAY contain scripting using the facilities defined for this in the
respective underlying specifications ([html] and [svg]). When an EPUB content document
contains scripting, this specification refers to it as a scripted content document. This
label also applies to XHTML content documents that contain [html] form
elements.
The scripted
property of the manifest item
element is used to indicate that an EPUB content document is a
scripted content document.
When an [html] script
element contains a data
block [html], it does not represent scripted content.
[svg] does not define data blocks as of publication, but the same exclusion would apply if a future update adds the concept.
Note that reading systems have to behave as though a unique origin [html] has been assigned to each EPUB publication. In practice, this means that it is not possible for scripts to share data between EPUB publications.
Which context a script is used in also determines the rights and restrictions that a reading system places on it (refer to Scripting [epub-rs-34] for more information).
Reading systems might render scripted content documents in a manner that disables other EPUB capabilities and/or provides a different rendering and user experience (e.g., by disabling pagination).
EPUB 3 defines two contexts for script execution:
iframe
element; andScripts can execute in other contexts, but reading system support for these contexts
is optional. For example, a scripted SVG document might be referenced from an [html]
object
element.
Refer to the processing of scripts [epub-rs-34] for more information.
Whether code is embedded directly in a script
element or referenced via the
element's src
attribute makes no difference to its executing context.
Which context is used for scripts affects both what actions the scripts can perform and the likelihood of support in reading systems, as described in the following subsections.
Refer to H.2 Scripting contexts for an example of the difference between the two contexts.
A container-constrained script is either of the following:
An instance of the [html] script
element contained in an XHTML content document that is embedded in an XHTML content document using the [html]
iframe
element.
An instance of the [svg] script
element contained in an SVG content document that is embedded in a XHTML content document using the [html]
iframe
element.
A container-constrained script MUST NOT contain
instructions for modifying the DOM of the EPUB content document that embeds it
(i.e., the one that contains the iframe
element). It also MUST NOT contain
instructions for manipulating the size of its containing rectangle.
Note that support for container-constrained scripting in reading systems is only recommended in reflowable documents [epub-rs-34] and optional in fixed-layout documents.
Ensure that container-constrained scripts degrade gracefully in reading systems without scripting support (see 6.3.2.5 Scripting fallbacks).
Opting to restrict the usage of scripting to the container-constrained model will ensure a more consistent user experience between scripted and non-scripted content (e.g., consistent pagination behavior).
A spine-level script is an instance of the [html] script
or [svg] script
element contained in a top-level content document.
Note that support for spine-level scripting in reading systems is only advised in fixed-layout documents and reflowable documents set to scroll [epub-rs-34]. Furthermore, reading system support in all other contexts is optional.
Top-level content documents that include spine-level scripting SHOULD remain consumable by the user without any information loss or other significant deterioration when scripting is disabled or not available (e.g., by employing progressive enhancement techniques or fallbacks). Failing to account for non-scripted environments in top-level content documents can result in EPUB publications being unreadable.
This section is non-normative.
The wide variety of possible reading system implementations need to be considered when adding scripting functionality to EPUB publications (e.g., not all devices have physical keyboards, and in many cases a soft keyboard is activated only for text input elements). Consequently, do not rely on keyboard events alone; always provide alternative ways to trigger a desired action.
EPUB content documents that contain scripting SHOULD employ relevant [wai-aria] accessibility techniques to ensure that the content remains consumable by all users.
EPUB content documents that contain scripting MAY
provide fallbacks for such content, either by using intrinsic fallback mechanisms (such as
those available for the [html] object
and canvas
elements) or, when an intrinsic
fallback is not applicable, by using a manifest-level
fallback.
Scripts MUST only generate core media type resources or fragments thereof.
This section is non-normative.
Not all rendering information can be expressed through the underlying technologies that EPUB is built upon. For example, although HTML with CSS provides powerful layout capabilities, those capabilities are limited to the scope of the document being rendered.
This section defines properties that allow the expression of package-level rendering intentions (i.e., functionality that can only be implemented by the EPUB reading system). If a reading system supports the desired rendering, these properties enable the user to be presented the content as it was optimally designed.
This section is non-normative.
EPUB publications, unlike print books or PDF files, are designed to change. The content flows, or reflows, to fit the screen and to fit the needs of the user. As noted in Rendering and CSS "content presentation adapts to the user, rather than the user having to adapt to a particular presentation of content." [epub-overview-34]
But this principle does not work for all types of documents. Sometimes content and design are so intertwined it is not possible to separate them. Any change in appearance risks changing the meaning or losing all meaning. Fixed-layout documents give greater control over presentation when a reflowable EPUB is not suitable for the content.
Fixed layouts are defined using a set of package document properties to control the presentation in reading systems while the layout dimensions are obtained from each respective EPUB content document.
EPUB 3 affords multiple mechanisms for representing fixed-layout content. When fixed-layout content is necessary, the choice of mechanism will depend on many factors including desired degree of precision, file size, accessibility, etc. This section does not attempt to dictate the choice of mechanism.
The rendition:layout
property specifies whether the content is reflowable or
pre-paginated.
When the rendition:layout
property is specified on a meta
element, it indicates that the
paginated or reflowable layout style applies globally (i.e., for all spine items).
The rendition:layout
property MUST specify one of the following properties:
The content is not pre-paginated (i.e., reading systems apply dynamic pagination when rendering). Default value.
The content is pre-paginated (i.e., reading systems produce exactly one page per
spine
when rendering).itemref
Reading systems typically restrict or deny the application of user or user agent style sheets to pre-paginated documents because dynamic style changes are likely to have unintended consequence on the intrinsic properties of such documents. When choosing to use pre-paginated instead of reflowable content, it is advised to consider the negative impact on usability and accessibility that these restrictions have. Refer to Guideline 1.4 - Provide text configuration [uaag20] for related information.
When the property is set
to pre-paginated
for a spine item, its content dimensions MUST be set as
defined in 8.2.2.5 Content document dimensions.
The rendition:layout
property MUST NOT be declared more than once. In addition,
the property MUST NOT be declared using the refines
attribute. Refer to 8.2.2.1.1 Layout overrides for setting the property for
individual EPUB content documents.
The following properties MAY be declared on spine
elements to override the global
value:itemref
A spine item MUST NOT declare more than one of these overrides.
The rendition:orientation
property specifies which orientation the EPUB publication is intended to be rendered in.
When the rendition:orientation
property is specified on a
element,
it indicates that the intended orientation applies globally (i.e., for all spine items).meta
One of the following values MUST be used with the rendition:orientation
property:
Render the content in landscape orientation.
Render the content in portrait orientation.
The content is not orientation constrained. Default value.
The rendition:orientation
property MUST NOT be
declared more than once. In addition, it MUST NOT be declared using the refines
attribute. Refer to 8.2.2.2.1 Orientation overrides for setting the property for individual EPUB content documents.
The following properties MAY be specified on spine
elements to override the global value:itemref
A spine item MUST NOT declare more than one of these overrides.
The rendition:spread
property specifies the intended reading system
synthetic spread behavior.
When the rendition:spread
property is specified on a
meta
element, it indicates that the intended synthetic spread behavior
applies globally (i.e., for all spine items).
One of the following values MUST be used with the rendition:spread
property:
Do not incorporate spine items in a synthetic spread. Render the items in a single viewport positioned at the center of the screen.
Render a synthetic spread for spine items only when the device is in landscape orientation.
Render a synthetic spread regardless of device orientation.
No synthetic spread behavior preference is defined. Default value.
The rendition:spread
property MUST NOT be declared more than once. In addition,
it MUST NOT be declared using the refines
attribute. Refer to 8.2.2.3.1 Synthetic spread overrides for setting the property for
individual EPUB content documents.
When synthetic spreads are used in the context of XHTML and
SVG content documents, the dimensions given via the viewport meta
element and viewBox
attribute represents the size of one page in the
spread, respectively.
Refer to the
element for information about declaration of global flow
directionality using the spine
page-progression-direction
attribute and that of
local page-progression-direction within content documents.
The following properties MAY be specified on spine
elements to override the global
value:itemref
A spine item MUST NOT declare more than one of these overrides.
When a reading system renders a synthetic spread, the default behavior is to populate
the spread by rendering the next EPUB content document in the next available unpopulated
viewport, where the next available viewport is determined by the given page progression direction or by
local declarations within EPUB content documents. To force reading systems to place a
document in a particular viewport, this automatic population behavior MAY be overridden by
specifying one of the following properties on its spine itemref
element:
rendition:page-spread-center
rendition:page-spread-center
property is an alias of the spread-none
property for centering a spine
item.rendition:page-spread-left
rendition:page-spread-left
property is an alias of the page-spread-left
property for placing a
spine item in the left-hand slot of a two-page spread.rendition:page-spread-right
rendition:page-spread-right
property is an alias of the page-spread-right
property for placing a
spine item in the right-hand slot of a two-page spread.The rendition:page-spread-center
, rendition:page-spread-left
, and
rendition:page-spread-right
properties apply to both pre-paginated and
reflowable content. They only apply when the reading system is creating synthetic
spreads.
Although it is common practice to specify the use of a spread in certain device orientations,
the content itself does not represent a true spread — two consecutive pages that have
to be rendered side-by-side for readability, such as a two-page map. To indicate that two
consecutive pages represent a true spread, the rendition:page-spread-left
and
rendition:page-spread-right
properties SHOULD be set on the spine items for the two adjacent EPUB content documents, and the properties omitted on
spine items where one-up or two-up presentation is equally acceptable.
A spine item MUST NOT declare more than one rendition:page-spread-*
property,
and/or their unprefixed equivalents (e.g., it is valid to specify both
"rendition:page-spread-left page-spread-left
" in case reading systems only
support one of properties).
The rendition:page-spread-left
and rendition:page-spread-right
properties were created to allow the use of a single vocabulary for all fixed-layout
properties. Either property set can be used, but older reading systems might only
recognize the unprefixed versions.
The rendition:page-spread-center
was created to make it easier to understand
the process of switching between two-page spreads and single centered pages. Either
rendition:page-spread-center
or spread-none
can be used to
disable spread behavior in reading systems.
This section defines rules for the expression and interpretation of dimensional properties of fixed-layout documents.
Fixed-layout documents specify their initial containing block [css2] in the manner applicable to their format:
For XHTML fixed-layout documents, the initial
containing block [css2] is obtained from the REQUIRED height
and width
definitions in a viewport
meta
tag, where:
height
property MUST have as its value a positive number [css2] or the keyword
device-height
; andwidth
property MUST have as its value a positive number [css2] or the keyword
device-width
.The device-width
and device-height
values refer to the 100%
of the width and height, respectively, of the reading system's viewport.
The height
and width
definitions MUST be specified in the
first viewport meta
tag in document order in the [html] head
element. Reading systems
will ignore subsequent viewport meta
tags.
A viewport meta
tag MUST NOT specify more than one height
or width
definition.
For SVG fixed-layout documents, the initial containing block [css2]
dimensions MUST be expressed using the viewBox
attribute [svg].
The initial containing block definition affects only the document where it is defined. The dimensions of the containing blocks in the other content documents within the same publication can be different.
Although control over the rendering of EPUB content documents to create fixed layouts is an obvious need not handled by other technologies, there are also considerations for reflowable content that are unique to EPUB publications (e.g., how to handle the flow of content in the viewport). This section defines properties that provide control over presentation aspects of reflowable content.
The rendition:flow
property specifies the preference for how reading systems
handle content overflow.
When the rendition:flow
property is
specified on a meta
element, it indicates the preference for overflow content
handling (i.e., for all spine items). Either dynamic pagination or scrolling
MAY be specified. For scrolled content, it is also possible to specify whether consecutive
EPUB content documents are to be rendered as a continuous scrolling view or whether each is
to be rendered separately (i.e., with a dynamic page break between each).
One of the following values MUST be used with the rendition:flow
property:
Dynamically paginate all overflow content.
Render all EPUB content documents such that overflow content is scrollable, and the EPUB publication is presented as one continuous scroll from spine item to spine item (except where locally overridden).
Resources SHOULD NOT have different block flow directions as it makes continuous scrolled rendition in EPUB reading systems problematic.
Render all EPUB content documents such that overflow content is scrollable, and each spine item is presented as a separate scrollable document.
Render overflow content using the reading system default method or a user preference, whichever is applicable. Default value.
Note that when two reflowable EPUB content documents occur
sequentially in the spine, the default rendering for their [html] body
elements is consistent with the page-break-before
property [csssnapshot] having been set to
always
. In addition to using the rendition:flow
property, this
behavior MAY be overridden through an appropriate style sheet declaration if the reading system
supports such overrides.
The rendition:flow
property MUST NOT be declared more than once. In addition, it
MUST NOT be declared using the refines
attribute.
Refer to 8.3.1.1 Spine overrides for setting the property for individual EPUB content
documents.
rendition:flow
set to paginated
.Three column-like rectangles linked left-to-middle and middle-to-right with respective arrows, with a text flowing from one rectangle to the next one. The text is sectioned with headers figuring 'Chapter 1', '2', and '3'. The leftmost rectangle is enclosed in a schematic view of a tablet.
rendition:flow
set to paginated
.Three column-like rectangles linked left-to-middle and middle-to-right with respective arrows, with a text flowing from one rectangle to the next one. The text is sectioned with headers figuring 'Chapter 1', '2'. The section with 'Chapter 2' starts at the top of the rightmost rectangle, leaving an empty space at the bottom of the middle rectangle. The leftmost rectangle is enclosed in a schematic view of a tablet.
rendition:flow
set to scrolled-continuous
.A single, column-like strip (i.e., a rectangle without a bottom edge) with a text flowing down the strip. The text is sectioned with headers figuring 'Chapter 1', '2'. The top part of the strip is enclosed in a schematic view of a tablet.
rendition:flow
set to scrolled-doc
.Three column-like strips (i.e., a rectangles without bottom edges) linked left-to-middle and middle-to-right with respective arrows, each containing a text flowing down the strip. The text is sectioned with headers figuring 'Chapter 1', '2' and '3'. Each strip starts with a chapter header and flows down the strip. The top part of the leftmost strip is enclosed in a schematic view of a tablet.
The following properties MAY be specified on spine
elements to override the global
value:itemref
A spine item MUST NOT declare more than one of these overrides.
The rendition:align-x-center
property specifies to center the given spine horizontally in the viewport or spread.
The property MUST NOT be set globally for all EPUB content documents (i.e., in a
element without a meta
refines
attribute). It is only
available as a spine override for individual EPUB content documents via the
element's itemref
properties
attribute.
This property was developed primarily to handle "Naka-Tobira (中扉)" (sectional title pages), in the absence of reliable centering control within the content rendering. As support for paged media evolves in CSS, this property is expected to be deprecated. The use of CSS solutions is encouraged when effective.
This section is non-normative.
Mainstream ebooks, educational tools and ebooks formatted for persons with print disabilities are some examples of works that contain synchronized audio narration. In EPUB 3, these types of books can be created using media overlay documents to describe the timing for the pre-recorded audio narration and how it relates to the EPUB content document markup. The specification defines the file format for media overlays as a subset of [smil3], a W3C Recommendation for representing synchronized multimedia information in XML.
The text and audio synchronization enabled by media overlays provides enhanced accessibility for any user who has difficulty following the text of a traditional book. Media overlays also provide a continuous listening experience for readers who are unable to read the text for any reason, something that traditional audio embedding techniques cannot offer. They are even useful for purposes not traditionally considered accessibility concerns (e.g., for language learning).
The media overlays feature is transparent to EPUB reading systems that do not support the feature. The inclusion of media overlays in an EPUB publication has no impact on the ability of media overlay-unaware reading systems to render the EPUB publication as though the media overlays are not present.
Media overlays in EPUB are not an equivalent to audiobooks, as audiobooks are primarily audio-based with text occasionally provided as an alternate format. The W3C [audiobooks] recommendation is for building audio publications.
Although future versions of this specification might incorporate support for video media (e.g., synchronized text/sign-language books), this version supports only synchronizing audio media with the EPUB content document.
MUST be valid to the media overlays schema as defined in G.3 Media overlays schema and conform to all content conformance constraints expressed in 9.2.2 Media overlay document definition.
MAY refer to more than one EPUB content document, but more than one media overlay document MUST NOT reference the same EPUB content document.
All elements [xml] defined in this section are in the https://www.w3.org/ns/SMIL
namespace [xml-names] unless otherwise specified.
The smil
element encapsulates all the information in an media overlay document.
smil
REQUIRED root element [xml] of the media overlay document.
version
[required]
Specifies the version number of the [smil3] specification to which the media overlay document adheres.
This attribute MUST have the value "3.0
".
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
epub:prefix
[optional]
Declares additional metadata vocabulary prefixes.
Refer to 9.3.3 Structural semantics in overlays for more information.
In this order:
The head
element is the container for metadata in the media overlay document.
head
The head
element is the OPTIONAL first child of the
element.smil
None
metadata
[0 or 1]
As this specification does not define any metadata properties that has to occur in the media
overlay document, the head
element is OPTIONAL.
The metadata
element represents metadata for the media overlay document. The
metadata
element is an extension point that allows the inclusion of
metadata from any metainformation structuring language.
metadata
As a child of the
element.head
None
[0 or more]
elements from any namespace
This specification does not require any metadata properties in the media overlay document;
the metadata
element is provided for custom metadata requirements.
The body
element is the starting point for the presentation contained in the
media overlay document. It contains the main sequence of
and par
elements.seq
body
The body
element is a REQUIRED child of the
element. It follows
the smil
element, when that element is present.head
epub:type
[optional]
An expression of the structural semantics of the corresponding element in the EPUB content document.
The value is a whitespace-separated list of property types. Refer to 9.3.3 Structural semantics in overlays for more information.
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
epub:textref
[optional]
Refers to the associated EPUB content document and, optionally, identifies a specific part of it.
The value MUST be a path-relative-scheme-less-URL string, optionally
followed by U+0023 (#)
and a URL-fragment string.
In any order:
MUST include at least one par
or seq
.
The seq
element is a sequential time container for media objects and/or child
time containers.
seq
One or more seq
elements MAY occur as children of the
element
and of the body
element.seq
epub:type
[optional]
An expression of the structural semantics of the corresponding element in the EPUB content document.
The value is a whitespace-separated list of property types. Refer to 9.3.3 Structural semantics in overlays for more information.
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
epub:textref
[required]
Refers to the associated EPUB content document and, optionally, identifies a specific part of it.
The value MUST be a path-relative-scheme-less-URL string, optionally
followed by U+0023 (#)
and a URL-fragment string.
Refer to 9.3.2.1 Overlay structure for more information.
In any order:
MUST include at least one par
or seq
.
The par
element is a parallel time container for media objects.
par
One or more par
elements MAY occur as children of the
and
body
elements.seq
epub:type
[optional]
An expression of the structural semantics of the corresponding element in the EPUB content document.
The value is a whitespace-separated list of property types. Refer to 9.3.3 Structural semantics in overlays for more information.
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
In any order:
The text
element references an element in an EPUB content document. A
text
element typically refers to a textual element but can also refer to
other EPUB content document media elements. In the absence of a sibling
element, textual content referred to by this element can be rendered via text-to-speech.audio
text
As a REQUIRED child of the
element.par
src
[required]
Refers to the associated EPUB content document and, optionally, identifies a specific part of it.
The value MUST be a path-relative-scheme-less-URL string, optionally
followed by U+0023 (#)
and a URL-fragment string.
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
Empty
This specification places no restriction on the src
attribute of a
text
element, but it is advised that the attribute reference content that
can be styled with CSS to make the association with style
information effective. For XHTML, this means referencing palpable content. For
SVG, it means referencing paths, basic shapes, or text elements.
[epub-rs-34] no longer provides guidance for reading systems on the playback
of timed media (i.e., the automatic starting of the referenced media). Although the
src
attribute of a text
element can refer to embedded timed
media (e.g., via an [html] video
element), referencing such media can have
unpredictable results.
The audio
element represents a clip of audio media.
audio
An OPTIONAL child of the
element.par
id
[optional]
The ID [xml] of the element, which MUST be unique within the document scope.
src
[required]
The relative- or absolute-URL string [url] reference to an audio file. The audio file MUST be one of the audio formats listed in the core media type resources table.
clipBegin
[optional]
A clock value that specifies the offset into the physical media corresponding to the start point of an audio clip.
MUST be a [smil3] clock value.
See H.4 Clock values.
clipEnd
[optional]
A clock value that specifies the offset into the physical media corresponding to the end point of an audio clip.
MUST be a [smil3] clock value.
See H.4 Clock values.
The chronological offset of the terminating position MUST be after the
starting offset specified in the clipBegin
attribute.
Empty
This section is non-normative.
A pre-recorded narration of a publication can be represented as a series of audio clips, each corresponding to part of an EPUB content document. A single audio clip, for example, typically represents a single phrase or paragraph, but infers no order relative to the other clips or to the text of a document. Media overlays solve this problem of synchronization by tying the structured audio narration to its corresponding text (or other media) in the EPUB content document using [smil3] markup. Media overlays are, in fact, a simplified subset of SMIL 3.0 that define the playback sequence of these clips.
The SMIL elements primarily used for structuring media overlays are
(used for the main
sequence), body
(sequence) and seq
(parallel). (Refer to 9.2.2 Media overlay document definition
for more information on these and other SMIL elements.)par
The par
element is the basic building block of a media overlay and corresponds to a
phrase in the EPUB content document. The element provides two key pieces of information for
synchronizing content: 1) the audio clip containing the narration for the phrase; and 2) a
pointer to the associated EPUB content document fragment. The par
element uses two
media element children to represent this information: an
element and a audio
element. Because text
par
elements' media object children are timed in parallel, reading
systems render the audio clip and EPUB content document fragment at the same time, resulting in
a synchronized presentation.
The text
element src
attribute references the associated phrase,
sentence, or other segment of the EPUB content document by its URL [url] reference. The
audio
element src
attribute similarly references the location of
the corresponding audio clip and adds the clipBegin
and clipEnd
attributes to indicate a specific offset within the clip.
par
elements are placed together sequentially to form series of phrases or
sentences. Not every element of the EPUB content document will have a corresponding
par
element in a media overlay document, only those relevant to the audio
narration.
par
elements can also be added to seq
elements to define more complex
structures such as parts and chapters (see 9.3.2.1 Overlay structure).
In this section, the EPUB content document is assumed to be an XHTML content document. While media overlays can be used with SVG content documents, playback behavior might not be consistent and therefore interoperability is not guaranteed.
reading system support for playback of both reflowable and fixed-layout EPUB content documents is not guaranteed. Differences in reading system pagination strategies mean that some reading systems will only support media overlays in one or the other layout format.
The
of a media overlay document consists of two elements: the body
element
and the par
element. The ordering of these elements represents how reading systems
render the content in the corresponding EPUB content documents during playback.seq
The par
element represents a segment of content, such as a word, phrase,
sentence, table cell, list item, image, or other identifiable piece of content in the
markup. Each element identifies both the content to display (in the
element) and
audio to synchronize (in the text
element) during playback.audio
The seq
element represents sequences — sets of seq
and/or
par
elements that together represent a logical component of the content.
The element is used to represent nested containers such as sections, asides, headers,
tables, lists, and footnotes. It allows the structure inherent in these containers to be
retained in the media overlay document.
The seq
element MUST contain an epub:textref
attribute. As seq
elements do not
provide synchronization instructions, this attribute allows a reading system to match
the fragment to a location in the text.
The reason for grouping structures like sections, figures, tables, and footnotes in a
seq
element is so that reading systems can identify their start and end
positions during playback. Reading systems can then offer playback options tailored to
the layout of the content, such as jumping past a long figure, turning off rendering of
page break announcements (see 9.4 Skippability and escapability), or customizing
the reading mode to suit structures such as tables.
Both the epub:textref
attribute and the
element's text
src
attribute can contain a URL-fragment string that references a specific part (e.g., an
element via its ID) of the associated EPUB content document.
For XHTML and SVG content documents, the URL-fragment string SHOULD be a reference to a specific element via its ID, or an SVG Fragment Identifier [svg], respectively.
Other fragment identifier schemes MAY be used but reading systems might not support such identifiers.
This section is non-normative.
The granularity level of the media overlay depends on how the EPUB content document is
marked up and the type of fragment identifier used in the
elements'
text
src
attributes and the
elements' seq
epub:textref
attributes. For example, when referencing [html] elements, if the finest level of markup
is at the paragraph level, then that is the finest possible level for media overlay
synchronization. Likewise, if sub-paragraph markup is available, such as [html] span
element representing phrases or sentences, then finer granularity is possible in the media
overlay. Finer granularity gives users more precise results for synchronized playback when
navigating by word or phrase and when searching the text but increases the file size of the
media overlay documents. Fragment identifier schemes that do not rely on the presence of
elements could provide even finer granularity, where supported.
This specification allows the use of text-to-speech (TTS) — the rendering of the textual content of an EPUB publication as artificial human speech using a synthesized voice — in addition to pre-recorded audio clips.
When a media overlay
element omits its par
element, its audio
element can be
rendered in reading systems via TTS. If the text fragment is not appropriate for TTS
rendering (e.g., is not a text element and/or has no text fallback), this can produce
unexpected results.text
See EPUB 3 Text-to-Speech Support [epub-tts-10] for more information about using TTS technologies in EPUB publications.
To express structural semantics in media overlay documents, the
attribute MAY be specified on epub:type
, par
, and seq
elements.body
The epub:type
attribute facilitates reading system behavior appropriate for the
semantic type(s) indicated. Examples of these behaviors are skippability and escapability and table reading mode [epub-rs-34].
Media overlay documents MAY use the applicable vocabulary
association mechanisms for the epub:type
attribute to define additional
semantics.
Visual rendering information for the currently playing EPUB content document element MAY be expressed in a CSS Style Sheet using author-defined classes.
When used, the class names MUST be declared in the package document using the active-class
and playback-active-class
properties.
Exactly one CSS class name MUST be defined in each property they define. Each property MUST define a valid CSS class name not including any selectors [css2]. This specification does not reserve names for use with these properties.
Any CSS properties MAY be defined for the specified CSS classes. Each EPUB content document with an associated media overlay document has to include a CSS stylesheet (either embedded or linked) containing the class definitions. In the absence of such definitions reading systems might provide their own styling, or no styling at all.
The active-class
and playback-active-class
properties MUST NOT be used
in conjunction with a refines
attribute as they
always apply to the entire EPUB publication.
If an EPUB content document is wholly or partially referenced by a media overlay document, then its manifest
element MUST specify a
item
media-overlay
attribute. The attribute MUST reference the ID [xml] of the manifest item
for the
corresponding media overlay document.
The media-overlay
attribute MUST only be specified on manifest item
elements for EPUB content documents.
Manifest items for media overlay documents MUST have the media type
application/smil+xml
.
The duration of the entire EPUB publication MUST be specified in the
package document using a
element with the meta
duration
property.
In addition, the duration of each media overlay document MUST be provided using the refines
attribute to associate each duration
declaration to its corresponding manifest
.item
The sum of the durations for each media overlay document SHOULD equal the total duration plus or minus one second.
Although the sum of individual durations might not exactly match the total due to rounding the times to nearest fraction of a second, a difference of greater than one second indicates a mismatch arising from other issues.
Narrator information MAY also be specified in the package document using the narrator
property. Author-defined CSS class names to apply to the currently playing EPUB content document element can also be specified.
The media:
prefix is reserved
for inclusion of these properties in package metadata.
While reading, users might want to turn on or off certain features of the content, such as
footnotes, page numbers, or other types of secondary content. This feature is called
skippability. Reading systems use the semantic information provided by media overlay
elements' epub:type
attribute to
determine when to offer users the option of skippable features.
The following semantics MAY be used to enable skippability:
This list is non-exhaustive, however. It represents terms from the Structural Semantics Vocabulary [epub-ssv-11] for which reading systems are most likely to offer the option of skippability.
Escapable items are nested structures, such as tables and lists, that users might wish to skip over, continuing to read from the point immediately after the nested structure. The escapability feature differs from the skippability feature in that it does not enable or disable entire types of items, but provides an exit from them (e.g., a user can listen to some of the content before choosing to escape).
The following semantics MAY be used to enable escapability:
This list is non-exhaustive list, however. It represents terms from the Structural Semantics Vocabulary [epub-ssv-11] for which reading systems are most likely to offer the option of escapability.
Sometimes escapable structures can contain escapable structures. For example, tables are composed of many rows and cells that users might want to separately escape from. Reading system support for escaping from such structures is complex and not well supported at this time. It is advised to avoid identifying nested escapable structures until better support is available.
This section is non-normative.
EPUB 3 builds upon the Open Web Platform expressly so that it can leverage the structure, semantics and, by extension, accessibility built into its underlying technologies.
Some of the key standards for authoring accessible web content include:
The requirements and practices for creating accessible web content are documented in the [wcag2].
The [wai-aria] specification defines roles, states, and properties for making dynamic content that does not use native HTML elements and attributes accessible. It also provides a set of landmarks for navigating web pages.
The [dpub-aria] specification is an extension of [wai-aria] that provides additional roles specific to identifying common publishing structures.
[html-aria] specifies how the roles, states, and properties defined ARIA and DPUB-ARIA can be used in HTML documents.
These standards also form the basis for making EPUB publications accessible. As the current WCAG guidelines (version 2) are heavily focused on web pages, however, the EPUB Accessibility standard [epub-a11y-111] defines how to apply these standards to EPUB publications and adds EPUB-specific requirements and recommendations for metadata, pagination, and media overlays.
This specification recommends that EPUB publications conform to the accessibility requirements defined in [epub-a11y-111]. A benefit of following this recommendation is that it helps to ensure that EPUB publications meet the accessibility requirements legislated in jurisdictions around the world.
It is strongly advised to look beyond legal imperatives and treat accessibility as a requirement for all EPUB publications. The more accessible that EPUB publications are, the greater the potential audience for them.
This specification does not integrate the accessibility requirements to allow them to adapt and evolve independent of the EPUB specification — accessibility practices often need more frequent updating. The accessibility specification is also intended for use with past, present, and future versions of EPUB. The approach of a separate specification ensures that the evolution of EPUB does not lock accessibility in time (i.e., it allows producers of older versions of EPUB to reference the latest accessibility requirements).
This section is non-normative.
The particularity of an EPUB publication is its structure. The EPUB format provides a means of representing, packaging, and encoding structured and semantically enhanced web content — including HTML, CSS, SVG, JavaScript, and other resources — for distribution in a single-file container.
This means that EPUB 3's security and privacy issues are primarily linked to the features of those formats, and closely mirror the threats presented by web content.
Although content risks are often equated with deliberately malicious authoring intent, be aware that many practices followed with the best of intentions can expose users to privacy and security issues. The rest of this section explores the risk model of EPUB 3 to help recognize and mitigate these risks.
For the risks associated with reading systems, refer to the security and privacy section of [epub-rs-34].
This section is non-normative.
EPUB publications pose a variety of privacy and security threats to unsuspecting users. Many of these threats intersect with web content, but EPUB also introduces its own unique methods of attack that can be used to trick users into accessing malicious content or into providing sensitive information. Some of the more important attack vectors to be aware of include:
EPUB 3 allows some publication resources to be remotely hosted, specifically resources whose sizes can negatively affect the downloading and opening of the EPUB publication (e.g., audio, video, and fonts). Although helpful for users when used as intended, these exemptions can also be used to inject malicious content into a publication.
This threat is not limited to accessing content created by a malicious actor. If content from untrustworthy sources (e.g., third party audio and video) is embedded in an EPUB publication, there is always the possibility that users could receive compromised resources.
Checking for malware and exploits at distribution time is not always reliable, either, as the malicious content can be swapped in any time after publication, unlike resources that come embedded in the EPUB container.
The origin of an EPUB is specific to each reading system
implementation and not knowable outside of the reading system. Consequently, even if
remote resources are hosted on a secure web server, it is not possible to use security
features that require specifying allowable origins, such as headers for CORS, Content-Security-Policy
, or X-Frame-Options
.
Whether intentional or not, links to external web sites and resources expose users to potential exploits that can compromise their reading system or operating system. Although external links will typically open in a web browser, and be subject to the browser security model, this does not protect users from all exploits.
Even if the intent is not malicious, adding tracking information to external links is problematic for user privacy as it can allow a user's activity to be tracked without their consent.
Broken-link hijacking — when a domain expires and is bought by another party to exploit the links to it — can also lead to users being taken to unintended resources.
Resources embedded in the EPUB container are not immune to malicious actors, especially when EPUB publications are obtained from untrusted sources. Resources could contain exploits or forms that submit sensitive information to unintended parties. Such actors might also try to gain access to remote resources using file indirection techniques, such as symbolic links or file aliases.
The use of third-party content, such as games and quizzes, can also lead to security and privacy issues if the content cannot be fully vetted.
When scripts can access a device's network, it provides a variety channels to exploit the user:
Network access can also allow third-party content to exploit the user.
The encryption and decryption of EPUB publications using digital rights management schemes could allow personally identifiable information about the user, what vendors they use, and their reading choices to be relayed to third parties.
The effectiveness of these attacks also often depends on tricking users into believing that the publication they are interacting with is from a trustworthy source. These deceptions can take the following forms:
An EPUB publication can include false information about itself to trick users into believing that it comes from a legitimate source. A malicious actor might, for example, fake the title, authors, identifiers, and publisher for the work.
Although this misinformation itself does not present an immediate harm, it could lead users to trust malicious forms, links, and other content within the EPUB publication believing it comes from a reliable source.
Malicious actors can also design their content to imitate or replicate a platform's experience to trick users into trusting their content.
EPUB 3 tries to avoid extending the underlying technologies it builds on, but it has introduced some new features. The restricted scope of these features limits the threats they might pose, however:
Content switching and multimedia control elements only allow hiding of content and script-less control of playback in HTML. Moreover, these features, introduced in the first release of EPUB 3.0, are deprecated and no longer advised for use.
The expression of structural semantics in HTML and SVG only allows the annotation of elements.
The one potential exception is the epubReadingSystem
object [epub-rs-34] that allows information about
the current reading system to be queried. It is advised to only use the information exposed
by this object to improve the rendering of an EPUB publication (i.e., avoid using the
information to profile the user and their environment).
Although it is not possible to prevent every method of exploiting users, responsibility for the secure construction of the content lies with its creator. That requires taking precautions to limit the exposure of EPUB publications to the types of malicious exploits described in the previous section.
Some practical steps include:
Also consider the privacy rights of users and avoid intentionally collecting data. Ideally, users SHOULD NOT be tracked, but this is not realistic for all types of publishing.
When users have to be tracked (e.g., in educational course work), the approval of the user to collect information SHOULD be obtained prior to opening the EPUB publication. If this is not possible, permission SHOULD be obtained when users access the EPUB publication for the first time. Users SHOULD be allowed to opt out of tracking and provided the ability to manage and delete any data that is collected about them.
The inadvertent collection of information about users also needs to be considered. Linking to content on a publisher's web site, or remotely hosting resources on their servers, can lead to profiling users, especially if unique tracking identifiers are added to the URLs.
When collecting and storing user information within an EPUB publication (e.g., through the use of cookies and web storage [html]), the potential for data theft by other EPUB publications on a reading system needs to be considered. Although [epub-rs-34] introduces a unique origin requirement for EPUB publications, which limits the potential for attacks, there is still a risk that reading systems will allow EPUB publications access to shared persistent storage (e.g., older reading systems that have not been updated and non-conforming newer reading systems). Consequently, sensitive user data SHOULD NOT be stored in persistent storage. If sensitive data has to be stored, it SHOULD be encrypted to prevent trivial access to it in the case of an exploit.
When digital rights management schemes have to be used, prefer schemes that do not utilize or transmit information about the user or their content to external parties to perform encryption or decryption.
To maximally reduce security and privacy risks, EPUB publications SHOULD be produced with the goal of long-term preservation. EPUB publications created this way are normally self-contained, not dependent on network access, and not encrypted with digital rights management, removing many of the possible attack vectors. [iso22424] is an example of such a preservation format for EPUB publications. While it is understood that not all EPUB publications can meet these levels of self-containment, following as many of these practices as possible will still benefit overall user privacy and security.
This specification contains certain features that are not yet fully supported in reading systems, that the Working Group no longer recommends for use, or that are only retained for interoperability with EPUB 2 reading systems. This section defines the meanings of the designations attached to these features and their support expectations.
A under-implemented feature is a feature introduced prior to EPUB 3.3 [epub-33] for which the Working Group has not been able to establish enough implementation experience.
Only the dir
attribute is designated as under-implemented.
Although it lacks the necessary reading system support, it is integral to the content model on which
EPUB is built (i.e., for internationalization support in the package document).
This feature MAY be used as described.
The Working Group advises that EPUB conformance checkers alert about the presence of under-implemented features when encountered in EPUB publications but as their inclusion is not a violation of the standard to not emit as errors or warnings).
The marking of features as under-implemented was a one-time event to account for the different process under which EPUB was developed prior to being brought into W3C. This label will not be used for new features developed under W3C processes.
The following deprecated features SHOULD NOT be used. These features have limited or no support in reading systems and/or usage in EPUB publications.
When used, their usage MUST conform to their referenced definitions.
rendition:spread
property with the value
portrait
[epubpublications-301] — use the value
"both
" instead.
spread-portrait
property [epubpublications-301] —
use the property "rendition:spread-both
" instead.
xsd
reserved prefix
[epub-33] for package metadata.
msv
and prism
reserved prefixes [epub-33] for structural semantics.
marc21xml-record
property [epubpublications-30] —
It is replaced by the record
keyword with the media-type
attribute value
"application/marcxml+xml
".
mods-record
property [epubpublications-30] — It
is replaced by the record
keyword with the media-type
attribute value
"application/mods+xml
".
onix-record
property [epubpublications-30] — It
is replaced by the record
keyword with the properties attribute value onix
.
The Working Group recommends that EPUB conformance checkers alert about the presence of deprecated features when encountered in EPUB publications.
The following table lists the public and system identifiers [xml] allowed in document type declarations. [xml]
These external identifiers MAY be used only in publication resources with the listed media types [rfc2046] specified in their manifest declarations. (Refer to 3.9 XML conformance for more information.)
Media Type(s) | Public Identifier | System Identifier |
---|---|---|
|
-//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
|
This section is non-normative.
Structural semantics add additional meaning about the specific structural purpose an element plays.
The
attribute is used to express domain-specific semantics in EPUB content documents and media overlay documents, with the structural information it carries
complementing the underlying vocabulary.epub:type
The applied semantics refine the meaning of their containing elements without changing their nature
for assistive technologies, as happens when using the similar role
attribute [html]. The
attribute does not enhance the accessibility of the content, in other words; it only provides hints
about the purpose.
Semantic metadata enriches content for use in publishing workflows and for author-defined purposes. It also allows reading systems to learn more about the structure and content of a document (e.g., to enable skippability and escapability in media overlays).
This specification defines a method for adding structural semantics using the attribute
axis: instead of adding new elements, the epub:type
attribute can be appended to
existing elements to add the desired semantics.
epub:type
http://www.idpf.org/2007/ops
Refer to the requirements for XHTML, SVG, and media overlays.
A whitespace-separated [xml] list of property values, with restrictions as defined in D.1 Vocabulary association mechanisms.
epub-type
Refer to the requirements for HTML.
A whitespace-separated [infra] list of values that SHOULD be taken from the EPUB 3 Structural Semantics Vocabulary [epub-ssv-11].
Support for an HTML serialization of the epub:type
attribute depends on the addition
of support for the HTML syntax in the EPUB 3.4 revision. It is at
risk, depending on authors' and implementers' feedback.
The proposed epub-type
will provide similar functionality for HTML content documents
but with some restrictions (namely, no extensibility through the epub:prefix
attribute). The attribute should be read as a replacement for epub:type
where this
specification and the Reading Systems specification [epub-rs-34] refer to that attribute for
XHTML content documents. These references will be updated once it is clearer that support will
definitely be added in this revision.
The epub:type
attribute will remain the sole means of including semantics in XML
grammars in EPUB (i.e., XHTML content documents, SVG content documents, and media overlay
documents).
To provide feedback on this change, please open issues in the GitHub tracker for the EPUB specifications.
Although the epub:type
attribute is similar in nature to the role
attribute [html], the attributes serve different purposes. The values of the
epub:type
attribute do not enhance access through assistive technologies like
screen readers as they do not map to the accessibility APIs used by these technologies. This
means that adding epub:type
values to semantically neutral elements like [html]
div
and span
does not make them any more accessible to assistive technologies. Only ARIA
roles influence how assistive technologies understand such elements.
The epub:type
attribute is consequently only intended for publishing semantics and
reading system enhancements. Reading systems can use epub:type
values to
provide accessibility enhancements like built-in read aloud or media overlays functionality
where interaction with assistive technologies is not essential.
Refer to Digital Publishing WAI-ARIA Module [dpub-aria] for more information about accessible publishing roles.
The epub:type
attribute inflects semantics on the element on which it appears. Its value
is one or more whitespace-separated terms stemming from external vocabularies associated with the
document instance.
The default vocabulary for the epub:type
attribute is
the EPUB 3 Structural Semantics Vocabulary [epub-ssv-11]. The prefix URL for
referencing its properties is http://idpf.org/epub/vocab/structure/#
.
Unprefixed terms that are not part of this vocabulary MAY be used but the preferred method for adding custom semantics is to use prefixes for them. Refer to D.1 Vocabulary association mechanisms for more information.
This appendix defines a general set of mechanisms by which attributes in this specification can reference terms from vocabularies. It also defines EPUB-specific vocabularies for use with the attributes.
This section is non-normative.
EPUB defines a formal method of referencing terms and properties defined in metadata and semantic
vocabularies using the property data type. The
epub:type
attribute uses this data type in EPUB content documents and
media overlay documents to add structural semantics,
for example, while the property
and rel
attributes use the data type
to define properties and relationships in the package document.
A property value is like a CURIE [rdfa-core] — it represents a URL [url] in compact form. The expression consists of a prefix and a reference, where the prefix — whether literal or implied — is a shorthand mapping of a URL that typically resolves to a term vocabulary. When a reading system converts the prefix to its URL representation and combines with the reference, the resulting URL normally resolves to a fragment within that vocabulary that contains human- and/or machine-readable information about the term.
To reduce the complexity for authoring, each attribute that takes a property data type also defines a default vocabulary. Terms and properties referenced from the default vocabularies do not include a prefix as the mapping reading systems use to map to a URL is predefined.
The power of the property data type lies in its easy extensibility. To incorporate new terms and properties, it is only necessary to declare a prefix. In another authoring convenience, this specification also reserves prefixes for many commonly used publishing vocabularies (i.e., their declaration is not required).
The following sections provide additional details on the property data type and vocabulary association mechanism.
The property data type is a compact means of expressing a URL [url] and consists of an OPTIONAL prefix separated from a reference by a colon.
property |
=
|
[ prefix , ":" ] , reference; | |
prefix |
=
|
? xsd:NCName ? ; | |
reference |
=
|
? path-relative-scheme-less-URL string [url] ? ; | /* as defined in [url] */ |
This specification derives the property data type from the CURIE data type defined in [rdfa-core]. A property represents a subset of CURIEs.
There are two key differences from CURIEs, however:
an empty reference does not represent a valid property value even though it is valid to the definition above (i.e., a property value that only consists of a prefix and colon is invalid).
an empty string does not represent a valid property even though it is valid to the definition above.
When a prefix is omitted from a property value, the specified term is taken from the default vocabulary for that attribute.
A default vocabulary is one whose terms and properties MUST NOT have a prefix when a property value is expected.
A prefix MUST NOT be assigned to the URLs associated with these vocabularies using the prefix
attribute.
Refer to the definition of each attribute that takes a property data type for more information about its default vocabulary.
The prefix
attribute defines prefix mappings for use in property values.
The value of the prefix
attribute is a whitespace-separated list of one or more
prefix-to-URL mappings of the form:
prefixes |
=
|
mapping , { whitespace, { whitespace } , mapping } ; | |
mapping |
=
|
prefix , ":" , space , { space } , ? xsd:anyURI ? ; | |
prefix |
=
|
? xsd:NCName ? ; | |
space |
=
|
#x20 ; | |
whitespace |
=
|
(#x20 | #x9 | #xD | #xA) ; |
With the exception of reserved prefixes, all prefixes used
in a document MUST be declared. The prefix
attribute MUST be specified only on the
root element [xml] of the respective format.
The attribute is not namespaced when used in the package document.
The attribute MUST be declared in the namespace http://www.idpf.org/2007/ops
when
used in EPUB content documents and media overlay documents.
Although the prefix
attribute is modeled on the identically named
prefix
attribute in [rdfa-core], the attributes cannot be used
interchangeably. The prefix
attribute without a namespace in EPUB content
documents is the RDFa attribute.
It is common for both attributes to appear in EPUB content documents that also specify RDFa expressions.
<html … prefix="…"
xmlns:epub="http://www.idpf.org/2007/ops"
epub:prefix="…"> …
</html>
Note that for SVG embedded by inclusion, prefixes MUST be
declared on the [html] root html
element.
To avoid conflicts, the prefix
attribute MUST NOT be used to declare a prefix that
maps to a default vocabulary.
The prefix '_' MUST NOT be declared as this specification reserves this prefix for future compatibility with RDFa [rdfa-core] processing.
For future compatibility with alternative serializations of the package document, a prefix MUST NOT be declared for the Dublin Core /elements/1.1/ namespace [dcterms]. Only the [dcterms] elements are allowed in the package document metadata.
Although reserved prefixes are an authoring convenience, they can cause issues. Vendors, for example, will often reject new prefixes until they update their EPUB conformance checkers. It is advised to declare all prefixes to avoid any issues.
Reserved prefixes MAY be used in attributes that expect a property value without declaring them in a prefix
attribute.
Reserved prefixes SHOULD NOT be overridden in the prefix
attribute.
The reserved prefixes that can be used depends on the context:
The following prefixes MAY be used in package document attributes without having to declare them.
Prefix | URL | Usage |
---|---|---|
a11y | http://www.idpf.org/epub/vocab/package/a11y/# | To declare properties from them EPUB Accessibility namespace. These are typically defined in EPUB Accessibility 1.1.1 [epub-a11y-111]. |
dcterms | http://purl.org/dc/terms/ | To declare properties from the Dublin Core /terms/ namespace [dcterms]. |
marc | http://id.loc.gov/vocabulary/ | Primarily used in the scheme
attribute to indicate that creator and contributor roles are defined
in the the MARC
relators code list. Can be used to reference other vocabularies
published by the Library of Congress. |
media | http://www.idpf.org/epub/vocab/overlays/# | To declare properties from the Media Overlays vocabulary. |
onix | http://www.editeur.org/ONIX/book/codelists/ |
Used in the scheme attribute to identify the ONIX code list a value
corresponds to. |
rendition | http://www.idpf.org/vocab/rendition/# | To declare properties from the Package rendering vocabulary. |
schema | http://schema.org/ | To declare properties from the Schema.org vocabulary. |
The fields in the vocabulary definition tables have the following implicit requirements:
Specifies the REQUIRED type of value using [xmlschema-2] datatypes. Datatypes are declared
using the xsd:
prefix.
Specifies which publication resource type(s) that the property MAY be specified on.
This field appears for properties used in the properties
attribute.
Specifies the number of times the property MAY be specified, whether globally or attached to another element or property.
Properties with a minimum cardinality of one MUST be specified.
Describes the purpose of the property and specifies any additional usage requirements that have to be followed.
Provides non-normative usage examples.
Identifies what metadata the property MAY be associated with.
This field appears for properties that define primary expressions and subexpressions and relationships.
Specifies the name of the property as it MUST appear in the metadata.
The properties in this vocabulary are usable in the
element's meta
property
attribute.
Unless indicated otherwise in its "Extends" field, the properties defined in this section are used to
define subexpressions: in other words, a
element
carrying a property defined in this section MUST have a meta
refines
attribute referencing a resource or expression being
augmented.
The prefix URL for referencing these properties is
http://idpf.org/epub/vocab/package/meta/#
.
Name: |
alternate-script
|
---|---|
Description: |
The This property is typically attached to |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or more
|
Extends: | All properties. |
Name: |
belongs-to-collection
|
---|---|
Description: |
The It is also possible to chain these properties using the A unique identifier SHOULD be provided for each instance of a collection using a
The collection MAY more precisely define its nature by attaching a The position of the EPUB publication within the collection MAY be provided by
attaching a |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or more
|
Extends: | Applies to the EPUB publication and can refine other instances of itself. |
Name: |
collection-type
|
---|---|
Description: |
The When the This specification also defines the following collection types when no scheme is specified:
Note Although reading systems do not have to support these values, specifying them provides the option to group related EPUB publications in more meaningful ways. |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or one
|
Extends: |
belongs-to-collection
|
Name: |
display-seq
|
---|---|
Description: |
The This property only applies where precedence rules have not already been defined (e.g., precedence is given to creators based on their appearance in document order). |
Allowed value(s): |
xsd:unsignedInt
|
Cardinality: |
zero or one
|
Extends: | All properties. |
Name: |
file-as
|
---|---|
Description: | The file-as property provides the normalized form of the associated
property for sorting. |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or one
|
Extends: | All properties. |
Name: |
group-position
|
---|---|
Description: |
The The An EPUB publication can belong to more than one group. |
Allowed value(s): | A single xsd:unsignedInt or series of decimal-separated numbers (e.g.,
1 or 2.2.1 ). |
Cardinality: |
zero or one
|
Extends: | All properties. |
Name: |
identifier-type
|
---|---|
Description: |
The When the |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or one
|
Extends: |
, dc:source
|
Name: |
pageBreakSource
|
---|---|
Description: |
Provides a unique identifier for the source of the page break markers in an EPUB publication. It is advised to use a URN as the value when the identifier conforms to a recognized scheme such as an ISBN. If a unique identifier does not exist for the source, it is advised to use a text description that identifies the source as clearly as possible (e.g., the title of a word processing document). If the page break markers are unique to the EPUB publication (e.g., for a digital-only
edition), the value " |
Allowed value(s): |
xsd:string
|
Cardinality: | Exactly one when the publication includes a page list and/or page break markers, otherwise 0. |
Extends: | Applies to the EPUB publication. Does not extend other properties. |
The pageBreakSource
property replaces the source-of
property for identifying the source of static pagination for an EPUB publication.
Refer to [epub-a11y-tech-11] for information on how to provide accessible page navigation.
Name: |
role
|
---|---|
Description: |
The When the When assigning multiple roles to an individual or organization, associate each role in a
separate |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or more
|
Extends: |
, , dc:publisher
|
It is no longer advised to use the source-of
property in EPUB publications. To indicate
the source of pagination for an EPUB publication, refer to the pageBreakSource
property definition.
The source-of
property will not be officially deprecated due to the existing base of EPUB
publications in which it is used, but it is advised to treat it as though it is deprecated.
For information on its use, refer to source-of
property
definition in [epub-33].
Name: |
term
|
---|---|
Description: |
The |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or one
|
Extends: |
|
Name: |
title-type
|
---|---|
Description: |
The When the |
Allowed value(s): |
xsd:string
|
Cardinality: |
zero or one
|
Extends: |
|
The properties in this vocabulary are usable in the metadata
element's link
rel
and properties
attributes.
The prefix URL for referencing these properties is
http://idpf.org/epub/vocab/package/link/#
.
The following values can be used in the link
element rel
attribute to establish the relationship of the resource referenced in
the href
attribute.
Name: |
alternate
|
---|---|
Description: |
The
|
Cardinality: |
Zero or more
|
Extends: | Only applies to the EPUB publication or collection. MUST NOT be used when the refines attribute is present. |
Example: |
<link rel="alternate" href="package.json"
media-type="application/json-ld"/>
|
Name: |
record
|
---|---|
Description: |
Indicates that the referenced resource is a metadata record. The media type of the record MUST be identified in the For a list of commonly linked metadata record types, refer to the EPUB Linked Metadata Guide If the type of record cannot be identified from the media type, an identifier property can be assigned in the
|
Cardinality: |
Zero or more
|
Extends: | Only applies to the EPUB publication or collection. MUST NOT be used when the refines attribute is present. |
Example: |
<link rel="record" href="book/52.atom"
media-type="application/atom+xml;type=entry;profile=opds-catalog"/>
|
Name: |
voicing
|
---|---|
Description: |
Indicates that the referenced audio file provides an aural representation of the expression or resource (typically, the title or creator) specified by the refines attribute. The media type of the audio file MUST be identified in the |
Cardinality: |
Zero or more
|
Extends: | All properties. The refines attribute
MUST be present when this value is used. |
Example: |
<link refines="#title" rel="voicing" media-type="audio/mpeg"
href="title.mp3" />
|
The following values can be used in the
element's
link
properties
attribute to establish the type of record a referenced resource represents.
These values are provided for record formats that cannot be uniquely identified by their media
type.
Name: |
onix
|
---|---|
Description: | The onix property indicates the referenced resource is an ONIX record
[onix]. |
Example: |
<link rel="record" href="pub/meta/nor-wood-onix.xml"
media-type="application/xml" properties="onix"/>
|
The prefix URL for referencing these properties is
http://www.idpf.org/vocab/rendition/#
.
The "rendition:
" prefix is reserved for
use with the package rendering properties and does not have to be declared in the
package document.
Unlike the other vocabularies in this appendix, the properties in the Package Rendering Vocabulary
consist of a mix of properties (expressed in
elements)
and spine overrides (expressed on meta
elements).itemref
The usage requirements are also defined in 8. Layout rendering control not in this appendix. The following table provides a map to the properties, overrides, and where they are defined.
Property | Overrides | Defined in |
---|---|---|
rendition:layout |
|
8.2.2.1 Layout |
rendition:orientation |
|
8.2.2.2 Orientation |
rendition:spread |
|
8.2.2.3 Synthetic spreads |
— |
|
8.2.2.4 Spread placement |
rendition:flow |
|
8.3.1 The rendition:flow property |
— |
|
8.3.2 The rendition:align-x-center property |
Custom properties and spine overrides can be included in the package document to address rendering issues specific to particular reading systems, as defined by the developers of those reading systems.
The only restrictions are that such properties MUST NOT be defined with a
rendition:
prefix and MUST NOT conflict behaviorally with properties
in the package rendering vocabulary.
If extensions are needed for use by multiple independent reading systems, the preferred method is to extend the package rendering vocabulary through a revision to this standard.
The properties in this vocabulary are usable in the manifest
element's item
properties
attribute.
The prefix URL for referencing these properties is
http://idpf.org/epub/vocab/package/item/#
.
Name: |
cover-image
|
---|---|
Description: | The cover-image property identifies the described publication resource as
the cover image for the EPUB publication. |
Applies to: | All raster and vector image types |
Cardinality: |
Zero or one
|
Name: |
mathml
|
---|---|
Description: | The mathml property indicates that the described publication resource
contains one or more instances of MathML markup. |
Applies to: | EPUB content documents |
Cardinality: |
Zero or more
|
Name: |
remote-resources
|
---|---|
Description: |
The Refer to 3.6 Resource locations for more information. |
Applies to: | All publication resources with the capability of internal referencing (e.g., XHTML content documents, SVG content documents, CSS style sheets and media overlay documents). |
Cardinality: |
Zero or more
|
Name: |
scripted
|
---|---|
Description: | The scripted property indicates that the described publication resource is
a scripted content document (i.e., contains scripting and/or [html] form
elements). |
Applies to: | EPUB content documents |
Cardinality: |
Zero or more
|
Name: |
svg
|
---|---|
Description: |
The This property MUST be set when SVG markup is included directly in the resource and
MAY be set when the SVG is referenced from the resource (e.g., from an [html]
|
Applies to: | XHTML content documents; the value is implied for SVG content documents. |
Cardinality: |
Zero or more
|
Name: |
switch
|
---|---|
Description: |
The |
Applies to: | XHTML content documents. |
Cardinality: |
Zero or more
|
The properties in this vocabulary are usable in the spine
element's
itemref
properties
attribute.
The prefix URL for referencing these properties is
http://idpf.org/epub/vocab/package/itemref/#
.
Name: |
page-spread-left
|
---|---|
Description: |
The The |
Name: |
page-spread-right
|
---|---|
Description: |
The The |
The properties in this vocabulary are usable in the
element's
meta
property
attribute.
The prefix URL for referencing these properties is
http://idpf.org/epub/vocab/overlays/#
.
The prefix "media:
" is reserved for use with
properties in this vocabulary and does not have to be declared in the package document.
Name: |
active-class
|
---|---|
Description: | The CSS class name to apply to the currently playing EPUB content document element. |
Allowed value(s): |
xsd:string
|
Cardinality: |
Zero or one
|
Example: |
<meta
property="media:active-class">-epub-media-overlay-active</meta>
|
Name: |
duration
|
---|---|
Description: | The duration of the entire presentation or of a specific media overlay document. The specified durations account for the audio clips known at authoring time, and so exclude live streaming from external resources and speech synthesis. |
Allowed value(s): |
MUST be a [smil3] clock value. |
Cardinality: | Exactly one for the EPUB publication and for each media overlay document. |
Example: |
<meta property="media:duration">1:36:20</meta>
|
Name: |
narrator
|
---|---|
Description: | Name of the narrator. |
Allowed value(s): |
xsd:string
|
Cardinality: |
Zero or more
|
Example: |
<meta property="media:narrator">Joe Speaker</meta>
|
Name: |
playback-active-class
|
---|---|
Description: | Author-defined CSS class name to apply to the EPUB content document's document element when playback is active. |
Allowed value(s): |
xsd:string
|
Cardinality: |
Zero or one
|
Example: |
<meta
property="media:playback-active-class">-epub-media-overlay-playing</meta>
|
This appendix describes the prefixed CSS properties supported by EPUB.
The prefix definitions are no longer being synchronized with their CSS counterparts. In some cases, the unprefixed versions of these properties now support additional values. Reading systems might not support the new syntax with the prefixed properties, so it is advised to use the unprefixed versions for newer features.
This section describes the -epub-
prefixed properties for [css-writing-modes-3].
This property is a prefixed version of the text-orientation
property [css-writing-modes-3].
Name: | -epub-text-orientation |
---|---|
Value: | mixed | upright | sideways | sideways-right |
For compatibility with existing content, the -epub-text-orientation
property also
supports the deprecated vertical-right
, rotate-right
, and
rotate-normal
keywords. The following table specifies the effect these have
when specified.
Deprecated value | Value to be used |
---|---|
vertical-right |
mixed |
rotate-right |
sideways |
rotate-normal |
sideways |
This property is a prefixed version of the writing-mode
property
[css-writing-modes-3], with the same syntax and behavior.
Name: | -epub-writing-mode |
---|---|
Value: | horizontal-tb | vertical-rl | vertical-lr |
This property is a prefixed version of the text-combine-upright
property [css-writing-modes-3].
Name: | -epub-text-combine-horizontal |
---|---|
Value: | none | all |
For compatibility with existing content, the -epub-text-combine-horizontal
property
also supports a number of deprecated keywords. The following table specifies the effect these
have when specified.
Prefixed version | CSS equivalent |
---|---|
-epub-text-combine-horizontal: none |
text-combine-upright: none |
-epub-text-combine-horizontal: all |
text-combine-upright: all |
This section describes the -epub-
prefixed properties (and one prefixed value) for
[css-text-3].
This property is a prefixed version of the hyphens
property [css-text-3].
Name: | -epub-hyphens |
---|---|
Value: | none | manual | auto | all |
For compatibility with existing content, the -epub-hyphens
property also supports
the deprecated all
keyword. The value is no longer supported in CSS and there is no
equivalent to use in its place.
This property is a prefixed version of the line-break
property [css-text-3].
Name: | -epub-line-break |
---|---|
Value: | auto | loose | normal | strict |
This property is a prefixed version of the text-align-last
property [css-text-3].
Name: | -epub-text-align-last |
---|---|
Value: | auto | start | end | left | right | center | justify |
This property is a prefixed version of the word-break
property [css-text-3].
Name: | -epub-word-break |
---|---|
Value: | normal | keep-all | break-all |
This property is a prefixed value for the text-transform
property [css-text-3].
Name: | text-transform |
---|---|
Value: | -epub-fullwidth |
For compatibility with existing content, the text-transform
property also supports
the deprecated -epub-fullwidth
keyword. When specified, this has the same effect as
text-transform: full-width
.
This section describes the -epub-
prefixed properties for [css-text-decor-3].
This property is a prefixed version of the text-emphasis-color
property [css-text-decor-3].
Name: | -epub-text-emphasis-color |
---|---|
Value: | <color> |
This property is a prefixed version of the text-emphasis-position
property [css-text-decor-3].
Name: | -epub-text-emphasis-position |
---|---|
Value: | [ over | under ] && [ right | left ] |
This property is a prefixed version of the text-emphasis-style
property [css-text-decor-3].
Name: | -epub-text-emphasis-style |
---|---|
Value: | none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string> |
This property is a prefixed version of the text-underline-position
property [css-text-decor-3].
Name: | -epub-text-underline-position |
---|---|
Value: | auto | [ under || [ left | right ] ] | alphabetic |
For compatibility with existing content, the value -epub-text-underline-position
property also supports the deprecated alphabetic
keyword. When specified, this has
the same effect as text-underline-position: auto
.
This section is non-normative.
As the Safari HTML definition of the viewport meta
tag, that was used in earlier
versions of EPUB 3, is not an officially recognized standard, this specification defines a
basic syntax to allow width and height dimensions to be expressed
for fixed-layout documents.
The syntax of this grammar is also influenced by the parsing algorithm for the viewport
meta
tag, as defined in [css-viewport-1].
The syntax is intentionally left as generic as possible as it is not in this specification's scope to define all the possible properties and values. It only defines the basic requirements for defining a property and value pair as well as the possible separators between expressions.
For fixed-layout documents, a viewport
meta
tag [html] MUST have name
and content
attributes that conform to the following definition:
name
attribute [html] after whitespace normalization [xml] MUST be viewport
.The value of the content
attribute [html] after whitespace normalization [xml] MUST be of the following form:
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 ; |
The only restriction on property names and values is that they MUST NOT contain separator characters or the assignment character.
The authoring requirements in this section apply after whitespace normalization [xml] (i.e., after a reading system strips leading and trailing whitespace and compacts all instances of multiple whitespace within the attribute to single spaces). Any whitespace characters [xml] MAY be included in the authored tag so long as the result is valid to this definition.
Although [html] depends on the [infra] definition of whitespace, the Form Feed (U+000C) character is not valid whitespace per the [xml] definition. It cannot be used in the XML syntax (i.e., in XHTML content documents).
There are no restrictions on any other attributes allowed on the meta
element by the [html] grammar.
For more information about specifying the height
and width
properties
and their expected values, refer to 8.2.2.5 Content document dimensions.
Although the viewport meta
tag allows the use of properties other than
height
and width
, as well as to omit values for the
height
and width
, such use is strongly discouraged. Setting other
properties could have unintended consequences on the rendering of fixed-layout documents.
This section is non-normative.
A schema for package documents is available at https://github.com/w3c/epubcheck/tree/master/src/main/resources/com/adobe/epubcheck/schema/30/package-30.nvdl.
Validation using this schema requires a processor that supports [nvdl], [relaxng-schema], [isoschematron] and [xmlschema-2].
The NVDL schema layer can be substituted by a multi-pass validation using the embedded RELAX NG and ISO Schematron schemas alone.
Updates and corrections to these schemas can occur outside of formal revisions of this specification. As a result, they are subject to change at any time.
A schema for container.xml
files
is available at
https://github.com/w3c/epubcheck/tree/master/src/main/resources/com/adobe/epubcheck/schema/30/ocf-container-30.nvdl
.
Validation using this schema requires a processor that supports [relaxng-schema] and [xmlschema-2].
The schema for encryption.xml
files is included in [xmlsec-rngschema-20130411].
The schema for signatures.xml
files is included in [xmlsec-rngschema-20130411].
A schema for media overlay documents is available at https://github.com/w3c/epubcheck/tree/main/src/master/resources/com/adobe/epubcheck/schema/30/media-overlay-30.nvdl.
Validation using this schema requires a processor that supports [nvdl], [relaxng-schema], [isoschematron] and [xmlschema-2].
The NVDL schema layer can be substituted by a multi-pass validation using the embedded RELAX NG and ISO Schematron schemas alone.
This section is non-normative.
Consider the following extracts of a package document and an XHTML content document:
<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>
The various resources in the EPUB publication can be categorized as follows. (Refer to 3. Publication resources for more information about these categories.)
meta/data.xml
The resource is a metadata record, stored in the EPUB container. It is linked via a
element in the package document metadata. It is therefore a linked resource on
the manifest plane (i.e., is not listed in the manifest). It is not
part on any other planes. link
https://www.example.org/meta/data2.xml
The resource is a metadata record, stored remotely. It is linked via a
element in
the package document metadata. It is therefore a linked resource on the manifest plane,
(i.e., it is not listed in the manifest). It is not part on any other planes.link
page.xhtml
The resource is an XHTML document. It is listed in the spine. It is a publication resource on the manifest plane, a container resource, an EPUB content document on the spine plane, and is not present on the content plane. No fallback is necessary.
nav.xhtml
The resource is the EPUB navigation document. It is not listed in the spine. It is a publication resource on the manifest plane, a container resource, and is not present on either the spine plane or the content plane. No fallback is necessary.
style.css
The resource is a CSS file. It is not listed in the spine but is referenced from an [html]
link
element. It is a publication
resource on the manifest plane, a container resource, is not present on the spine plane, and
is a core media type resource on the content plane. No fallback is necessary.
font/font-file.otf
The resource is a TrueType font file. It is not listed in the spine but is referenced from a CSS file. It is a publication resource on the manifest plane, is a container resource, is not present on the spine plane, and is a core media type resource on the content plane. No fallback is necessary.
https://www.example.org/fonts/font-file2.otf
The resource is a TrueType font file. It is not listed in the spine but is referenced from a CSS file. It is a publication resource on the manifest plane, is a remote resource, is not present on the spine plane, and is a core media type resource on the content plane. No fallback is necessary.
font/font-file.cff
The resource is a font file in Compact Font Format. It is not listed in the spine but is referenced from a CSS file. Its media type is not listed as a core media type. It is a publication resource on the manifest plane, a container resource, is not present on the spine plane, and is an exempt resource on the content plane. No fallback is necessary.
speech/cmn.pls
The resource is a Pronunciation Lexicon file. It is not listed in the spine but is referenced
from an [html] link
element. It is a
publication resource on the manifest plane, a container resource, not present on the spine
plane, and is an exempt resource on the content plane. No fallback is necessary.
image/image_1.png
The resource is a PNG image file. It is not listed in the spine but is referenced from an
[html] img
element. It is a publication resource on the manifest plane, a container
resource, is not present on the spine plane, and is a core media type resource on the
content plane. No fallback is necessary.
image/image_2.png
The resource is a PNG image file. It is referenced via an [html] a
element. Because it
is referenced from a hyperlink, it has to be listed in the spine. It is a
publication resource on the manifest plane, a container resource, a foreign content document on the spine plane, and a core media type resource on the content plane. As a
foreign content document, a fallback is mandatory and is provided via a manifest fallback.
image_desc.xhtml
The resource is an XHTML document. It is the "target" of a manifest fallback so is not explicitly listed in the spine (but it "replaces" the existing spine item when needed). It is a publication resource on the manifest plane, a container resource, an EPUB content document on spine plane, and, because it is not "used" when rendering another EPUB content document, it is not present on the content plane. No fallback is necessary.
image/image_3.heic
The resource is a High Efficiency (HEIC) image file. It is not listed in the spine but is
referenced from an [html] source
element. Its media type is not listed as a core media type. It is a publication resource on the
manifest plane, a container resource, is not present on the spine plane, and is a foreign
resource on the content plane. As a foreign resource, a fallback is mandatory and is
provided via the sibling [html] img
element in an [html] picture
element.
image/image_3.png
The resource is a PNG image file. It is not listed in the spine but is referenced from an
[html] img
element that is used as an intrinsic fallback of the [html] picture
element. It is a publication resource on the manifest plane, a container resource, is not
present on the spine plane, and is a core media type resource on the content plane. No
fallback is necessary.
widget.xhtml
The resource is an XHTML document. It is not listed in the spine but is referenced from an
[html] iframe
element. It is a publication resource on the manifest plane, a container
resource, is not present on spine plane, and, because it is "used" when rendering another
EPUB content document, a core media type resource on the content plane. No fallback is
necessary.
https://www.example.org/some_content
The resource is referenced via an [html] a
element and is not stored in the EPUB
container. Reading systems will normally open this link via a separate browser instance. It
is not on any planes defined by this specification.
Additional examples on the usage of different types of resources can be found in 5.6.2.2 Examples.
Consider the following example package document:
<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>
and the following file 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>
and the following file scripted02.xhtml
:
<html …>
<head>
…
<script type="text/javascript" href="slideshow.js"></script>
</head>
<body>
…
</body>
</html>
From these examples, it is true that:
the code in the script
element in the head
in
scripted01.xhtml
is a spine-level script
because the document is referenced from the spine; and
the code in the script
element in scripted02.xhtml
is a container-constrained script because the
XHTML document it occurs in is included in scripted01.xhtml
via the
iframe
element.
This example demonstrates the use of the OCF format to contain a signed and encrypted EPUB publication within an OCF ZIP container.
Ordered list of files in the OCF ZIP container:
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
The contents of the mimetype
file
application/epub+zip
The contents of the META-INF/container.xml
file
<?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>
The contents of the META-INF/signatures.xml
file
<signatures
xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<Signature
Id="AsYouLikeItSignature"
xmlns="http://www.w3.org/2000/09/xmldsig#">
<!--
SignedInfo is the information that is actually signed.
In this case, the SHA-1 algorithm is used to sign the
canonical form of the XML documents enumerated in the
Object element below.
-->
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
<Reference
URI="#AsYouLikeIt">
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>
…
</DigestValue>
</Reference>
</SignedInfo>
<!--
The signed value of the digest above, using the DSA
algorithm
-->
<SignatureValue>
…
</SignatureValue>
<!--
The key used to validate the signature
-->
<KeyInfo>
<KeyValue>
<DSAKeyValue>
<P>…</P>
<Q>…</Q>
<G>…</G>
<Y>…</Y>
</DSAKeyValue>
</KeyValue>
</KeyInfo>
<!--
The list of resources to sign (note that the canonical
form of XML documents is signed, while the binary form
of all other resources is used)
-->
<Object>
<Manifest
Id="AsYouLikeIt">
<Reference
URI="EPUB/As_You_Like_It.opf">
<Transforms>
<Transform
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>
</DigestValue>
</Reference>
<Reference URI="EPUB/book.html">
<Transforms>
<Transform
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>
</DigestValue>
</Reference>
<Reference
URI="EPUB/images/cover.png">
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>
</DigestValue>
</Reference>
</Manifest>
</Object>
</Signature>
</signatures>
The contents of the META-INF/encryption.xml
file
<?xml version="1.0"?>
<encryption
xmlns="urn:oasis:names:tc:opendocument:xmlns:container"
xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<!--
The RSA-encrypted AES-128 symmetric key used to encrypt
data enumerated in EncryptedData blocks below
-->
<enc:EncryptedKey
Id="EK">
<enc:EncryptionMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<ds:KeyInfo>
<ds:KeyName>
John Smith
</ds:KeyName>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherValue>
xyzabc…
</enc:CipherValue>
</enc:CipherData>
</enc:EncryptedKey>
<!--
Each EncryptedData block identifies a single resource
that has been encrypted using the AES-128 algorithm.
The data remains stored, in its encrypted form, in the
original file within the container.
-->
<enc:EncryptedData Id="ED1">
<enc:EncryptionMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/>
<ds:KeyInfo>
<ds:RetrievalMethod
URI="#EK"
Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherReference
URI="EPUB/book.html"/>
</enc:CipherData>
</enc:EncryptedData>
<enc:EncryptedData Id="ED2">
<enc:EncryptionMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/>
<ds:KeyInfo>
<ds:RetrievalMethod
URI="#EK" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherReference
URI="EPUB/images/cover.png"/>
</enc:CipherData>
</enc:EncryptedData>
</encryption>
The contents of the EPUB/As_You_Like_It.opf
file
<?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>
The following are examples of allowed clock values:
5:34:31.396
= 5 hours, 34 minutes, 31 seconds, and 396 milliseconds
124:59:36
= 124 hours, 59 minutes, and 36 seconds
0:05:01.2
= 5 minutes, 1 second, and 200 milliseconds
0:00:04
= 4 seconds
09:58
= 9 minutes and 58 seconds
00:56.78
= 56 seconds and 780 milliseconds
76.2s
= 76.2 seconds = 76 seconds and 200 milliseconds
7.75h
= 7.75 hours = 7 hours and 45 minutes
13min
= 13 minutes
2345ms
= 2345 milliseconds
12.345
= 12 seconds and 345 milliseconds
This appendix registers the media type application/oebps-package+xml
for the EPUB
package document. This registration supersedes RFC4839 (see https://www.rfc-editor.org/rfc/rfc4839).
The package document is an XML file that describes an EPUB publication. It identifies the resources in the EPUB publication and provides metadata information. The package document and its related specifications are maintained and defined by the World Wide Web Consortium (W3C).
application
oebps-package+xml
None.
None.
8bit if UTF-8; binary if UTF-16.
Package documents are in XML, represented either in UTF-8 or UTF-16. When the package document is written in UTF-8, the file is 8bit compatible. When it is written in UTF-16, the binary content-transfer-encoding must be used. For further details, see [rfc7303].
Package documents contain well-formed XML conforming to the XML 1.0 specification.
Clearly, it is possible to author malicious files which, for example, contain malformed data. Most XML parsers protect themselves from such attacks by rigorously enforcing conformance.
All processors that read package documents need to rigorously check the size and validity of data retrieved.
There is no current provision in the EPUB 3 specification for encryption, signing, or authentication within the package document format.
None.
This media type registration is for the EPUB package document, as described by the EPUB 3 specification located at https://www.w3.org/TR/epub/.
The EPUB 3 specification supersedes the Open Packaging Format 2.0.1 specification, which is
located at https://idpf.org/epub/20/spec/OPF_2.0.1_draft.htm and which also uses the application/oepbs-package+xml
media type.
This media type is in wide use for the distribution of ebooks in the EPUB format.
none
.opf
TEXT
EPUB Canonical Fragment Identifiers are custom fragment identifiers defined for EPUB Publications. They may be used to refer to an arbitrary content within any publication resource defined for the publication. These identifiers are defined at https://idpf.org/epub/linking/cfi/.
Publishing Maintenance Working Group (epub-maintenance@w3.org)
COMMON
World Wide Web Consortium (W3C)
This appendix registers the media type application/epub+zip
for the EPUB Open Container
Format (OCF).
An OCF ZIP container, or EPUB container, file is a container technology based on the zip archive format (see https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT). It is used to encapsulate the EPUB publication. OCF and its related standards are maintained and defined by the World Wide Web Consortium (W3C).
application
epub+zip
None.
None.
OCF ZIP container files are binary files encoded in the
application/zip
media type.
All processors that read OCF ZIP container files should rigorously check the size and validity of data retrieved.
In addition, because of the various content types that can be embedded in OCF ZIP container
files, application/epub+zip
may describe content that poses security
implications beyond those noted here. However, only in cases where the processor recognizes
and processes the additional content, or where further processing of that content is
dispatched to other processors, would security issues potentially arise. In such cases,
matters of security would fall outside the domain of this registration document.
Security considerations that apply to application/zip
also apply to OCF ZIP
container files.
None.
This media type registration is for the EPUB Open Container Format (OCF), as described by the
EPUB 3 specification located at https://www.w3.org/TR/epub/
.
The EPUB 3 specification supersedes both RFC 4839 and the Open Container
Format 2.0.1 specification, which is located at https://idpf.org/epub/20/spec/OCF_2.0.1_draft.doc
, and which also
uses the application/epub+zip
media type.
This media type is in wide use for the distribution of ebooks in the EPUB format.
0: PK 0x03 0x04
, 30: mimetype
, 38:
application/epub+zip
OCF ZIP container files are most often identified with the extension
.epub
.
ZIP
EPUB Canonical Fragment Identifiers are custom fragment identifiers defined for EPUB Publications. They may be used to refer to an arbitrary content within any publication resource defined for the publication. These identifiers are defined at https://idpf.org/epub/linking/cfi/.
Publishing Maintenance Working Group (epub-maintenance@w3.org)
COMMON
World Wide Web Consortium (W3C)
audio
§9.2.2.8body
§9.2.2.4collection
§5.8.1Compression
§4.2.6.3.2.2container
§4.2.6.3.1.1dc:contributor
§5.5.3.2.2dc:creator
§5.5.3.2.3dc:date
§5.5.3.2.4dc:identifier
§5.5.3.1.1dc:language
§5.5.3.1.3dc:subject
§5.5.3.2.5dc:title
§5.5.3.1.2dc:type
§5.5.3.2.6EncryptedData
§4.2.6.3.2.1EncryptedKey
§4.2.6.3.2.1encryption
§4.2.6.3.2.1epub-type
§C.2epub:type
§C.2head
§9.2.2.2item
§5.6.2itemref
§5.7.2link
§5.5.6links
§4.2.6.3.1.4manifest
§5.6.1meta
§5.5.4metadata
§5.5.1package
§5.4par
§9.2.2.6rootfile
§4.2.6.3.1.3rootfiles
§4.2.6.3.1.2seq
§9.2.2.5signatures
§4.2.6.3.6.1smil
§9.2.2.1spine
§5.7.1text
§9.2.2.7a
element
area
element
base
element
bdo
element
canvas
element
content
attribute (for meta
element)
dir
attribute (for html-global
element)
div
element
embed
element
form
element
href
attribute (for a
element)
html
element
iframe
element
img
element
li
element
name
attribute (for meta
element)
object
type
ol
element
picture
element
role
attribute
rp
element
script
element
source
element
span
element
src
attribute (for source
element)
src
attribute (for img
element)
srcset
attribute (for img
element)
srcset
attribute (for source
element)
style
attribute (for html-global
element)
track
element
type
attribute (for source
element)
video
element
list
)
svg
element
title
element
This section is non-normative.
Note that this change log only identifies substantive changes since EPUB 3.3 — those that could affect the conformance of EPUB publications.
For a list of all issues addressed, refer to the Working Group's issue tracker.
xsd
, msv
, and prism
reserved
prefixes to the deprecated features section. See issue 2739.pageBreakSource
property to the meta properties vocabulary
to replace source-of
. See issue 2714.application/x-font-ttf
to the list of core media types for
identifying TTF fonts. See issue 667. script
elements are exempt.
See issue 2649.This section is non-normative.
The Publishing Maintenance Working Group would like to make a special acknowledgment to notable contributors, and friends, we have lost along the way. In particular, EPUB, not just EPUB 3, would not be what is today without the vision, knowledge, and preternatural good nature of Garth Conboy. Similarly, Ben Schroeter will always be remembered for his tireless work to help EPUB reach its potential as a universally accessible format. We are forever in their debt.
The following members of the Publishing Maintenance Working Group contributed to the development of this specification:
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: