JATS cross-reference checks.

Practical guide / internal links

How to fix broken JATS cross-references

A citation, figure callout, affiliation marker, or table reference can look correct in the article text while its xref/@rid points nowhere. The reliable fix is to match every reference token to one unique id in the same document.

Match the identifier, not the visible label.

The text inside <xref> is what a reader sees. The rid value is what connects that reference to its target.

Start with one failing reference

NISO JATS defines <xref> as a reference to an object within the document. Its rid attribute contains one or more target identifiers, and the target element carries the matching id.

<p>Results are shown in
  <xref ref-type="fig" rid="fig-2">Figure 2</xref>.
</p>

<fig id="fig-02">
  <label>Figure 2</label>
  ...
</fig>

This reference is broken because fig-2 and fig-02 are different identifiers. Correct either value so the pair matches exactly.

Check four failure patterns

  1. 01
    No matching target

    Search the whole document for an id equal to each rid token. Case, punctuation, and leading zeros matter.

  2. 02
    Duplicate target IDs

    An id must be unique across the document, not merely within figures, references, tables, or affiliations.

  3. 03
    Several targets in one rid

    JATS permits an xref/@rid value to contain more than one identifier. Split the value on whitespace and resolve every token.

  4. 04
    The wrong reference type

    Compare ref-type with the target. A figure reference should not silently point to a bibliography entry just because the identifier exists.

Repair the source, not only the display text

Changing “Figure 2” to “Figure 3” inside <xref> does not change the target. Update the rid, the target id, or both, then check every other reference to the renamed target.

Keep internal IDs separate from external identifiers. NISO distinguishes the document-wide id attribute from elements such as <article-id> and <contrib-id>, which can hold values such as a DOI or ORCID iD.

Run the release check on the final XML

Regenerate or export the article first, then validate the exact XML intended for delivery. JATS Verify checks duplicate IDs and resolves every whitespace-separated xref/@rid token. It does not guarantee acceptance by a journal, PubMed Central, or another archive.

If the delivery also includes figures or supplements, follow the missing figure and asset guide to check the package files separately.

Official sources

Check the final XML

Find unresolved cross-references before delivery.

Upload one JATS XML package free. No account, email, card, or sales call.

Check a package free