Practical guide / figures and assets
Your XML can validate while the JATS package is still missing a figure
A schema can confirm that an xlink:href is allowed. It usually cannot confirm that the named image, media file, or supplement is present in the package with the exact expected filename.
Package validation needs the JATS XML and the actual asset directory or ZIP that will be delivered.
The common failure patterns
- The XML references
figures/Fig01.tif, but the package containsfigures/fig01.tif. - A figure was renamed after the XML was generated.
- A supplement or media file was omitted from the delivery ZIP.
- An absolute path from a workstation was written into
xlink:href. - A relative path escapes the intended package directory.
Why filename case matters
Windows and macOS workflows can appear to tolerate case differences. A Linux production or archive system may treat Fig01.tif and fig01.tif as different files. The package can therefore work locally and fail after handoff.
A reliable preflight
- 01Freeze the release package
Use the exact XML and asset files intended for delivery.
- 02Resolve local asset references
Identify references intended to name delivered files, such as local
graphicandmediatargets, then check those files against the package root. Review external links separately. - 03Compare exact case
Report a case mismatch separately from a completely missing file.
- 04Retain evidence
Record the canonical XML hash plus each referenced asset path, size, media type, and SHA-256.
Apply the destination's package rules
JATS describes how elements such as graphic point to external files, while ext-link can point to a URL. Do not treat every xlink:href as a local package file.
The receiving destination can add narrower packaging rules. For example, PMC's current minimum criteria require referenced image names and case to match the supplied files, while its delivery specifications do not allow subdirectories or nested compressed files. A path that is valid in a generic JATS workflow can still be wrong for a particular destination.
What JATS Verify reports
JATS Verify distinguishes unresolved assets, filename case mismatches, unsafe paths, and files outside the package root. Paid results include every finding, an asset inventory, deterministic JSON evidence, and a reproducible release ZIP.
The public reproducible example demonstrates a real XML-to-PDF filename mismatch using an openly available PMC package.
Run the package check
Upload the XML and assets together.
Check one package free. No account, email, card, or sales call.