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 every local link
Check each
hrefandxlink:hrefagainst the package root. - 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.
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.