MathML, JATS, and MathType

Mathematical representation of the equation for calculating a correlation coefficient in statisticsIf your organization publishes content that includes any kind of mathematical or related formulae, this blog post is for you!

A (very) brief history of MathML

The history of MathML goes back almost as far as XML itself! MathML 1 was released as a W3C recommendation in 1998, MathML 2 (Second Edition) in 2003, and the most recent version—MathML 3 (Second Edition)—in 2014. Both MathML 2 and MathML 3 are currently in use.

The most recent official versions of the Journal Article Tag Suite (JATS 1.1 and the forthcoming JATS 1.2) are available in both MathML 2 and MathML 3 variants. Why? Read on!

A tale of three versions

MathML 2 was fully backwards-compatible with MathML 1, such that an equation validated to the MathML 1 DTD would also be valid when parsed with the MathML 2 DTD.

The MathML Working Group generally followed the same philosophy when moving from MathML 2 to MathML 3; however, certain attributes deprecated in the MathML 2 documentation were dropped entirely from the MathML 3 DTD. For example, the attributes @name and @type have been removed from the element <math>.

In addition, the handling of some attributes has been tightened up in MathML 3; for example, the content of @mathvariant is now constrained to a fixed set of values. In MathML 2, these attributes were defined as CDATA, so an equation with a typo in an attribute value could be valid in MathML2 but invalid in MathML3.

Note that these are illustrative examples, not a comprehensive list of backwards incompatibilities between the MathML 3 and MathML 2 DTDs. Based on anecdotal but unconfirmed reports, we believe there are other incompatibilities.

As a result, it is possible to have MathML 2 equations that are not valid according to the MathML 3 DTD. It’s unknown how widespread this issue is, but as an example, PubMed Central found that thousands of equations in XML submitted to PMC are valid in MathML 2 but do not parse against the MathML 3 DTD.

Because the MathML 3 DTD is not fully backwards compatible with the MathML 2 DTD, and many organizations have large archives of equations validated to the MathML 2 DTD, the JATS Standing Committee created two variants of JATS 1.1. This approach allows organizations to move from JATS 1.0 to 1.1 (or soon, 1.2), without moving from MathML 2 to MathML 3.

What about MathType?

A number of eXtyles customers use MathType to edit and convert equations and formulae in their content, and therefore have questions about MathType versions and the version compatibility of the MathML they export.

According to Wiris, which purchased MathType in 2017, MathType’s current MathML 2 TDL (translator) does not use any of the deprecated attributes, and the MathML exported from recent versions of MathType should therefore be fully compatible with both MathML 2 and MathML 3 versions of JATS.

The most recent version of MathType, 7.4, includes an available MathML 3 translator that takes advantage of some of the new features of MathML 3.0.

For eXtyles and eXtyles NLM customers, it’s also important to note that MathType 7.4 is fully compatible with eXtyles. Customers who have upgraded to MathType 7.x should move to 7.4 as soon as possible; Inera and Wiris will also continue to support MathType 6.x for the foreseeable future.