JATS package asset checks.

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.

Check the files, not only the XML.

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 contains figures/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

  1. 01
    Freeze the release package

    Use the exact XML and asset files intended for delivery.

  2. 02
    Resolve local asset references

    Identify references intended to name delivered files, such as local graphic and media targets, then check those files against the package root. Review external links separately.

  3. 03
    Compare exact case

    Report a case mismatch separately from a completely missing file.

  4. 04
    Retain 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.

Check a package free