jats-xml
Version:
Types and utilities for working with JATS in Typescript
61 lines (41 loc) • 2.63 kB
Markdown
[](https://www.npmjs.com/package/jats-xml)
[](https://github.com/continuous-foundation/jats-xml/blob/main/LICENSE)
[](https://github.com/continuous-foundation/jats-xml/actions)
Types and utilities for working with JATS XML documents in Node and Typescript.
JATS is a NISO standard for Journal Article Tags Schema, which is a way to define the XML structure of a scientific article semantically. This includes the `front`-matter (authors, funding, title, abstract, etc.), the `body` of the article (sections, figures, equations, tables, etc.), and `back`-matter (references, footnotes, etc.). The JATS can also contain `sub-articles`.
The standard documents are hosted by the NIH <https://jats.nlm.nih.gov/>. There are three flavours, this library currently uses in most cases the most prescriptive tag set (for article authoring). Another helpful resource is <https://jats4r.org/>, which provides other examples and recommendations for JATS.
Note that most publishers do **not** provide the XML as a first class output - they should, it is an important part of open-science to have the content programmatically accessible and interoperable. It is only [FAIR](https://www.go-fair.org/fair-principles/) 😉.
## Working in Typescript
All tags are accessible as types/enums. There is also documentation from each node-type
```typescript
import { Tags } from 'jats-xml';
Tags.journalId;
```
```typescript
import 'fs' from 'fs';
import { Inventory, toDate } from 'jats-xml';
import { toText } from 'myst-common';
import { select, selectAll } from 'unist-util-select';
const data = fs.readFileSync('article.jats').toString();
const jats = new JATS(data);
// Easy access to properties
jats.doi
jats.body // A tree of the body (or front/back)
toDate(jats.publicationDate) // as a Javascript Date object
select('[id=fig1]', jats.body) // select a figure by an ID
selectAll('fig', jats.body) // Or selectAll figures
```
TODO!
---
As of v1.0.0 this package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).
---
<p style="text-align: center; color: #aaa; padding-top: 50px">
Made with love by
<a href="https://continuous.foundation" target="_blank" style="color: #aaa">
Continuous Science Foundation <img src="https://continuous.foundation/images/logo-small.svg" style="height: 1em" />
</a>
</p>