A JATS namespace interoperability check.

Practical guide / XML namespaces

JATS XML namespace errors: why /article returns nothing

A wrong default namespace silently changes the identity of every unprefixed element. The XML remains well formed, but common JATS consumers no longer see article, front, body, or back where they expect them.

By JATS Verify Editorial. Published: 16 August 2026. Updated: 20 August 2026. Sources reviewed: 20 August 2026. Standard reviewed: NISO JATS Version 1.4 (ANSI/NISO Z39.96-2024).

The path is not the namespace.

Version documentation URLs such as https://jats.nlm.nih.gov/archiving/1.3/ are not JATS namespace identifiers.

The failure pattern

This root puts all unprefixed descendants in the wrong namespace:

<article xmlns="https://jats.nlm.nih.gov/archiving/1.3/">
  <front>...</front>
</article>

A namespace-aware parser reads the root as {https://jats.nlm.nih.gov/archiving/1.3/}article. An XPath such as /article/front returns no match.

What official JATS guidance says

JATS 1.4 does not require a default namespace. If a project intentionally applies a JATS namespace, the official URI is http://jats.nlm.nih.gov.

The safest interchange fix

For an ordinary JATS delivery, remove the default xmlns from article. Keep the namespaces for vocabularies that JATS embeds, including XLink and MathML:

<article
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:mml="http://www.w3.org/1998/Math/MathML">

If your receiving system explicitly requires namespaced JATS, use http://jats.nlm.nih.gov and test every XPath, stylesheet, schema, and API consumer against that choice.

What to test before release

  1. 01
    Root identity

    Confirm the expanded root name and intended JATS namespace policy.

  2. 02
    Ordinary XPath

    Verify that the receiving workflow can match /article and core metadata paths.

  3. 03
    Selected schema

    Validate the serialized output, not only the in-memory element tree.

  4. 04
    Package layer

    Check linked assets, cross-references, identifiers, journal rules, and release changes.

JATS Verify finding

JATS Verify checks for incompatible namespace forms as part of its package preflight. The same public check is available through the hosted diagnostic and paid API.

Use the free diagnostic on an existing package, then add the paid API after your generator when you need repeatable release checks.

Check the serialized package

Catch the namespace error before a receiver does.

Check one existing JATS package free. No account, card, or sales call.

Start free diagnostic