On this page
Locate the container and package document first
Record a neutral EPUB ID, digest, ZIP entry inventory, mimetype entry state, container path, package document path, package unique identifier, and parser version. The World Wide Web Consortium, (opens in a new tab) specification requires an EPUB container and package document. Do not find one OPF file by filename and assume it is the declared package.
The two cited EPUB source records carry their verified publication dates, 13 January 2026 for the specification record and 13 March 2025 for the overview record. The 22 October 2026 checked day is retrieval evidence, not a publication claim.
| Container evidence | Record | Stop if |
|---|---|---|
| mimetype entry | Path, content, and storage constraints | Entry is compressed or rewritten |
| container.xml | Rootfile path and media type | Package path is guessed |
| Package document | Path, version, and namespace | Parser uses a different OPF |
| Metadata | Identifiers and bounded values | Private metadata is copied |
| Manifest | Item IDs, hrefs, media types, properties | An item ID is duplicated |
| Spine | Itemrefs, order, linear state | Spine is absent or empty |
Keep package-relative paths separate from ZIP entry names and normalized URLs. A path can resolve inside the package while still pointing to the wrong case, fragment, or media type.
Resolve manifest hrefs and media types exactly
For every manifest item, resolve href against the package document base, normalize the path under the container root, and compare the result to the ZIP entry set. Record fragment identifiers, percent decoding, case handling, media type, properties, and whether the resource is publication or linked. The cited specification describes the manifest as the list of publication resources, while some linked resources are defined in metadata rather than the manifest World Wide Web Consortium, (opens in a new tab).
| Manifest field | Record | Hold when |
|---|---|---|
| Item ID | Unique ID and references | Two items share an ID |
| href | Raw, resolved, and normalized path | Path escapes the container |
| media-type | Declared MIME type | Type comes only from extension |
| properties | Vocabulary values such as nav | Navigation item is not unique |
| Foreign content document | Manifest fallback chain and terminal EPUB content document | Spine resource has no required fallback chain |
| Foreign resource | Intrinsic host-format fallback or manifest fallback | Required fallback path is missing |
| Exempt resource | Exempt category and rendering context | An unnecessary fallback rule is imposed |
| Linked resource | Package link and non-publication status | A package-only link is treated as needing a fallback |
| ZIP entry | Exact entry name and digest | Resolved path has no entry |
Synthetic package ledger
{"package":"fixture/OEBPS/package.opf","manifest":[{"id":"nav","href":"nav.xhtml","media_type":"application/xhtml+xml","properties":["nav"]},{"id":"chapter-1","href":"text/chapter-1.xhtml","media_type":"application/xhtml+xml"}],"spine":["nav","chapter-1"],"resolved":["fixture/OEBPS/nav.xhtml","fixture/OEBPS/text/chapter-1.xhtml"],"state":"metadata-only"}Compare package graph to a reading-system result
Use a synthetic package to compare declared manifest items, ZIP entries, resolved content links, spine order, navigation links, and reader warnings. Capture reader and checker versions and keep warnings separate from errors. A publication that opens in one reading system can still have unresolved links, wrong media types, or a fallback that another reader cannot render.
| Comparison | Record | Hold when |
|---|---|---|
| Manifest to ZIP | Missing, extra, and duplicate entries | Resource is present only through a guessed path |
| Spine to manifest | idref resolution and order | Itemref points to no item |
| Links to graph | Internal, fragment, external, and missing targets | A linked content document is outside required graph |
| Media type to bytes | Declared type and bounded signature check | Reader fallback is implicit |
| Navigation to spine | Target and access path | Nonlinear content has no access route |
| Reader result | Warnings, errors, and ignored features | Open status is treated as conformance |
Stop before calling an EPUB package complete
Stop conditions
- Stop if the rootfile, package document, manifest, navigation document, or spine is not identified.
- Stop if an href resolves outside the container, differs by case, or cannot be matched to an entry.
- Stop if itemref idrefs, media types, properties, or a required foreign-content fallback chain is unresolved. Do not require fallbacks for exempt or linked resources without checking their category.
- Stop if content links reach an EPUB resource that is absent from the required reading graph.
- Stop if an external URL, reader warning, or ignored feature is treated as a package success.
- Stop before opening real content documents when they contain private text, links, or attachments.
Pair this worksheet with the data provenance log for package and conversion history and the data card template for collection context. A resolved EPUB graph does not prove editorial quality, ownership, privacy clearance, or permission.
For a supported non-health collection, after the owner has authority to describe the scope and a controlled metadata packet, the qualified document-data appraisal request path may be a preparation step. It does not validate EPUB files, render content, certify accessibility, create a quote, match a buyer, or grant a license.