第2章 JATS XMLの文法
時実 象一
2.1 マークアップ言語の歴史
(1) マークアップとは
テキストをコンピュータで扱うようになると、これをきれいに清書するツールが求められるようになりました。マークアップとはテキストの組版指定という意味です。コンピュータが利用される以前には、下記のように手書きで指定がされていました(図2.1)。

コンピュータでテキストを取り扱うようになると、組版指定をコマンドで行う必要が生じました。組版言語としては、大型計算機時代に用いられたRunoffがあります。Runoffでは、ピリオドで始まるコマンドを用いて英文のテキストを清書しました(図2.2)。

このような考えは、ページ記述言語、例えばプリンタ制御言語(Printer Command Language:PCL)に引き継がれています。Adobe社が開発したPostScriptはよく知られたページ記述言語です(図2.3)。

LaTeXは数式などを正確に記述するために開発されました(図2.4)。

(2) 文書の構造
普段メールなどを書いている際は“文書の構造”を意識することはあまりありません。メールでは、メールの宛先、発信者、件名、添付ファイルなどがあらかじめ項目として設定されているので本文だけ書いていれば問題は生じません。この、宛先、発信者、件名、添付ファイルなどがメールの構造です。メール本文をさらに見ていくと、宛名、署名などの構造があることがわかります。さらに本文中でも、(1)、(2)などの章・節立てがあったり、HTMLメールであれば図や写真を埋め込むこともできます。こうした、性質の異なる文書の成分が構造です。従来のページ記述言語では、印刷の際に必要となる構造は記述しましたが、印刷に直接関係のない、例えば、章・節などの構造はレイアウトや文字種の指定で表しているだけで、これが章である、節である、という意味的な構造記述は行いません。
(3) SGML
こうしたページ記述言語とは異なり、文書の意味的な構造を記述しようとしたのがSGML(Standard Generalized Markup Language)です。SGMLは1960年代にCharles Goldfarbらによって開発されたIBMのGeneralized Markup Languageが起源です。SGMLではタイトル、本文、といった文書の構造のみを取り扱い、ページの組版は、それぞれの利用環境に任せるという考えをとりました。したがって、利用者はこの構造記述からレイアウトや文字種を設定するプログラムを作成する必要があります。図2.5はSGMLの記載例です。

SGMLでは、“<”、“>”で指定されるタグの意味や使用規則を定めるためのDTD(Document Type Definition)が必要です。SGMLは今でも政府文書や学術雑誌の編集で使用されています。
(4) HTML
HTML(HyperText Markup Language)は、Tim Berners-Leeにより1990年に提案されたSGMLの簡略版です。最初のウェブ・ブラウザNCSA Mosaic(Marc Andreessenによる)で用いられ、画像表示が可能なHTMLはウェブの基盤となりました。HTMLはあらかじめ決められた少数のタグのみを用いるのでDTDが不要です。
(5) XML
XML(eXtensible Markup Language)は、SGMLの進化形としてW3Cにより導入されました。XMLはSGMLと同様にDTDが必要です(必須ではありません)。
(6) XHTML
XHTMLはSGMLのWeb版とされ、整形式(well-formed)であることが必要です。整形式については後に説明します。XMLはタグには対応する閉じタグが必要で、大文字と小文字の区別があり、HTMLの略記法は使用できません。
2.2 XMLの文法
(1) XMLの特徴
SGMLは米国政府文書作成に採用されるなど、一定の普及をとげましたが、DTDの作成が面倒である、異なるDTD間での文書交換が困難であるなどの理由で、より簡潔な言語が必要であるとの要求が高まりました。XMLはSGMLの一種で、データの構造を表現する言語です。データを表示するにはCSS(Cascading StyleSheet)などが使われます。CSSは文書のレイアウト(文字種、行間、インデント、ページ内での位置など)を指定する言語で、XMLだけでなく、最近のHTMLはほとんどCSSを用いてレイアウトしています。
XMLは定義が明確で、機種間や環境間の互換性が高いので、現在は電子文書の中心として、データ交換やメタデータ(たとえば、文書ファイルの執筆者名、発行者、タイトル、日付などの書誌的情報)記述、電子ジャーナル、電子書籍(XHTML、EPUB)、そしてMicrosoft Officeなどのアプリで利用されている他、リンクト・オープン・データで用いられるRDF(Resource Description Framework)でも使われています。
XMLの特徴として次の点が挙げられます。
- ● 必ずしもDTDを必要としない(SGMLとの違い)。
- ● 大文字と小文字は区別される。
- ● 改行記号や余分な半角スペースは無視される。
- ● 整形式(well-formed)である。
整形式であるための条件としては、
- ● 開始タグと終了タグがある。
-
属性の値は”、”でくくる。
- ● ルート要素はひとつだけで、必ず存在する。
などがあげられます。
XMLの構造は図2.6、図2.7にあるように木構造です。必ずルート要素があり、枝は分岐するのみで、交差・合流することはありません。図2.6の例では、「社員情報」がルート、「社員番号」、その他の要素は枝となります(自然にある木と違って逆立ちしていますが、これを木構造とよびます)。


(2) XMLの文法
(a) 要素と属性
XMLは要素(Element)と属性(Attribute)の概念を持ち、要素は「物」を表し、タグ形式(“<”と“>”で囲まれた形式)で記述され、ネスト(入れ子構造)することができます。
<name> <surname>時実</surname> <given-names>象一</given-names> </name>
属性は物の「性質」を表し、要素に付加的な情報を提供します。
<article-id pub-id-type="pmid">10092260</article-id>
(b) 整形式
XML文書は整形式にしなくてはならず、開始タグと終了タグが対になり、入れ子が正しく行われていることが求められます。正しくないXMLの例は次のようなものです。
<name> <surname>時実<given-names></surname>象一</given-names> </name>
正しい書き方は
<name> <surname>時実<given-names>象一</given-names></surname> </name>
のように、開始タグの順序と終了タグの順序が逆になる必要があります。
整形式なXML文書では、文法に従い、空要素の場合は<br />のように書くことができます(<br>は改行を示すだけで、要素の中身はありません。このような特殊な要素を空要素とよびます)。整形式であるかの確認はValidator、Style Checkerなどのツールを使っておこないます。
(c) 予約文字
予約文字とは、それぞれの言語であらかじめ役割が決まっている文字で、ユーザーが文書中で使うことができません。これらを使いたい場合は、特別の方法が必要です。XMLの予約文字には<、>、&、”、’があります。
(3) スキーマ言語
スキーマ言語とは、XMLの要素・属性・構造を定義する言語です。これらには、
- ● DTD(Document Type Definition)
- ● XSD(W3C XML Schema)
- ● RELAX NG Schema
などがありますが、一般的には必須ではありません。ただしJATSでは必須です。各スキーマ言語の記述例を示します。
(a) DTD
<!ENTITY % front-model "(journal-meta, article-meta, (%front-back.class;)? )"> <!ELEMENT front %front-model;> <!ATTLIST article %article-atts;>
(b) XSD
<xsd:element name="fpage"> <xsd:complexType mixed="true"> <xsd:attribute name="content-type"/> <xsd:attribute name="seq"/> <xsd:attribute name="specific-use"/> <xsd:attribute ref="xml:lang"/> </xsd:complexType>
(c) RELAX NG
<optional> <choice> <group> <ref name="fpage"/> <optional> <ref name="lpage"/> </optional> </group> </choice> </optional>
JATSの場合、スキーマ言語について詳しく知らなくても、既存のJATS文書からコピーして使えばよいでしょう。
(4) DOCTYPE宣言
XMLを実行させるには、DOCTYPE宣言文が必要です。これは例えば次のようなものです。
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
これもJATSの場合は、既存のDOCTYPEをコピーして使えばよいでしょう。
(5) 名前空間
名前空間(Name Space)とは、異なるXMLスキーマ間で要素名や属性名が重複・衝突しないようにし、同じ意味を持たせ、相互利用を可能にします。例としては次のようなものがあります。
-
数式(MathML): xmlns:mml=http://www.w3.org/1998/Math/MathML
-
XLINK: xmlns:xlink=http://www.w3.org/1999/xlink
-
スキーマ・ロケーション: xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
(6) xml:lang
xml:langはXMLで定められた特別な属性で、コンテンツが書かれている言語(英語、日本語など)を示します。
(7) チェックツール
PMCでのチェックでは、ValidatorとStyle Checkerというツールが用いられます。また後述のSchematronは構造だけでなく、データの整合性もチェックします。
(a) Validator
XMLが整形式ですかどうかや、DOCTYPE宣言の一致を確認
(b) Style Checker
XMLファイルをテンプレートで処理してレポートを出力します。PMC Tagging Styleに従っているかどうかも確認されます。
(c) Schematron
SchematronはXMLの木構造をチェックし、要素の存在・不在や論理構造を確認します。前述のPMC Style Checkerと同様ですが、編集者は出版者や雑誌ごとにSchematronを利用して、特有のルールを設定できます。例えば、AIP(American Institute of Physics)ではSGML/XMLデータをJATSに変換する際にXSLTとSchematronを利用し、250のルールを記述してデータのチェックを行いました。また、出版者SAGEでは、次のようなエラーの検出に用いました。
- ● 電子メールアドレス中にスペースがある。
- ● 著者の姓の中にスペースがある。
- ● タイトルがすべて大文字となっている
- ● 号サプリメンツのページには S がついていない。
-
セクションタイトルはが、<sec>、<title>で記述されておらず<p><italic>となっている。
(8) XSL
XSL(eXtensible Stylesheet Language)はXML文書からデータを取り出し、書式情報を与えて組版します。XSLTはデータの取り出しを担当し、XSL-FOやCSSはデータの書式情報を管理します。
2.3 JATS
(1) JATSの歴史
JATSの前史はNLM DTDです。NLM DTDは学術雑誌向けのXMLのDTDとして2002年に開発されました。このプロジェクトはPubMed Centralの改良計画の一環として、ハーバード大学とメロン財団が協力して行われました。NCBI、ハーバード大学、メロン財団、Mulberry Technologies(NCBIのコンサルタント)、Inera, Inc.(ハーバード大学のコンサルタント)がメンバーとして参加しています。
NLM DTDは歴史的にいくつかのバージョンを経ています。バージョン1.0(2002年)、バージョン2.0(2004年)、バージョン3.0(2008年)、バージョン3.1(2010年、ドラフト)などがあります。その後、JATS(Journal Article Tag Suite)へと進化し、NLM DTD 3.1(ドラフト)はNISOに移行され、ANSI標準となりました。JATSの前身はNLM DTDですが、JATS自身はDTDでなくタグセットです。
JATSは学術論文の記述に特化しており、科学技術医学を中心に、人文・社会科学にも適用可能です。更に学術書籍用(BITS)や規格標準用(STS)に拡張されています。JATSは論文単位のXMLファイルを扱い、雑誌単位の情報は含まれていません。欧米では主に外部との流通に利用され、大手出版社や学会で広く採用されています。JATSを利用することで、社内でも外部とのやり取りが容易になります。
なお、JATSには、Archiving and Interchange、Publishing、Article Authoringの3種類のタグセットがありますが、ここでは一番使われているPublishingタグセットについて解説します。また、本稿執筆時(2025年1月)のJATS最新版はVer 1.4ですが、J-STAGEで採用している版は1.1ですので、以下の 説明はVer 1.1に基づきます。Journal Publishing Tag Library Ver 1.1には、 当協会で翻訳した日本語版があります(2.4節 参考サイト)。
(2) JATSの構成と主要な要素
JATSの構成は次のようになります。
(a) 宣言部分
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
これは前述のように、決まりとしてコピーして使ってください。
(b) 基本構成
JATSは論文のためのXMLです。論文の基本構成を次のように定義しています。
- ● 論文(Article)
- ● 前付(Front matter)
- ● 本文(Body)
- ● 後付(Back matter)
- ● 浮動部分(Floating materials)
(c) JATS XMLの決まり
<article>で宣言した言語(@xml:lang)1)は、特に指定しない限り下位の要素に引き継がれます。
<article article-type="research-article" dtd-version="1.1" xml:lang="en"> </artilce>
<article-title>以外のほとんどの要素は繰り返しが可能です。したがって、複数言語で記述が可能になります。
(d) Article
XMLファイルの本体であり、記事の種類と、DTD、名前空間を定義しています。名前空間については、既存のXMLからコピーして使えばよいと思います。
<article article-type="research-article" dtd-version="1.1" xml:lang="en xmlns:mml=http://www.w3.org/1998/Math/MathML xmlns:xlink="http://www.w3.org/1999/xlink xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
(e) @article-type(属性)
J-STAGEでは表2.1の論文種別のみが許されています。

(f) @xml:lang(属性)
言語を指定します。<article>で指定した言語がデフォルトとなります。指定しない場合は「英語(en)」となります。言語コードとスクリプト(IANA Registry)が記述可能です。
-
xml:lang=”en” 英語
-
xml:lang=”ja-Jpan” 漢字まじり
-
xml:lang=”ja-Kana” カタカナ
-
xml:lang=”ja-Hira” ひらかな
(g) Front matter(前付)
<front>には次の要素が記述可能です。
-
<journal-meta>
-
<article-meta>
(h) <journal-meta>
<journal-meta>には次の要素が記述可能です。
-
<journal-id>(雑誌のコード)
-
<journal-title-group>
-
<journal-title> 雑誌タイトル *
-
<abbrev-journal-title> 雑誌略名 *
-
<issn> ISSN
-
<publisher> 出版者名 *
これらの要素は繰り返しができるので多言語の記述が可能です(<issn>を除く)。
(i) <article-meta>
<article-meta>には表2.2の要素が記述可能です。

(j) <article-id>(論文のID)
<article id>は様々なものがあり、属性@pub-id-typeで記述します。
<article-id pub-id-type="doi">10.1073/pnas.181325198</article-id> <article-id pub-id-type="other">jPNAS.v98.i18.pg10214</article-id> <article-id pub-id-type="pmid">11517319</article-id>
(k) <article-categories>(論文の種別)
論文の種別は<article-categories>の下の<subj-group><subject>で指定します。例としては、
<subject>Retraction</subject> <subject>Biological Sciences</subject>
などがあります。入れ子にすることもできます。
<subj-group> <subject>Primary care</subject> <subj-group> <subject>190</subject> <subject>10</subject> </subj-group> </subj-group>
(l) 論文タイトル
-
<title-group> サブタイトル、欄外見出し(running title)などがあるときに用いる。
-
<article-title> 通常の論文タイトル
-
<alt-title> 欄外見出しなど
-
<trans-title> 別の言語のタイトル(Ver 1.4では廃止されたが、J-STAGE採用の版1.1では有効)
(m) <title-group>
<title-group>には<article-title>、<subtitle>、<trans-title-group>、<alt-title>を含むことができます。
<title-group> <article-title>Effect of Alcohol on Recurrence of Chron’s Disease </article-title> <alt-title alt-title-type="left-running-head">Gaillard, Lehmen, Auge, et al.</alt-title> <alt-title alt-title-type="right-running-head">Effect of Alcohol on Recurrence of Chron’s Disease</alt-title> </title-group>
多言語のタイトルがあるときは次のように<trans-tilte-group>を用います。
<title-group> <artilce-title xml:lang=“ja”>世界最大の書籍アーカイブHathiTrust </article-title> <trans-title-group xml:lang=“en”> <trans-title>World Largest Book Archive, HathiTrust</trans-title> </trans-title-group> </title-group>
(n) 著者名と所属
著者名と所属は<contrib-group>で記述します。<contrib-group>は中に<contrib>、<aff>、<aff-alternatives>、<bio>、<role>、<xref>などを含みます。複数の著者が存在するときは、<contrib>を並列して記述し、複数の所属があるときは<aff>、<aff-alternatives>を並列して記述します。
<contrib>は個々の著者の情報を記述します。情報としては<name>、<aff>、<aff-alternatives>、<bio>、<xref>、<role>などがあります。
1) <name>
<name>は人名を記述します。<surname>、<given-names>に分けることができます。ミドルネームは要素にないので<given-names>などに含めることになります。例は次のとおりです。
<name> <surname>Llanos De La Torre Quiralte</surname> <given-names>M</given-names> </name>
2) <name-alternatives>
同一人物に複数の名前がある場合に用い、次の例のように、中に複数の<name>を記述することができます。
<name-alternatives> <name name-style="eastern" xml:lang="ja-Jpan"> <surname>中西</surname> <given-names>秀彦</given-names> </name> <name name-style="western" xml:lang="en"> <surname>Nakanishi</surname> <given-names>Hidehiko</given-names> </name> <name name-style="eastern" xml:lang="ja-Kana"> <surname>ナカニシ</surname> <given-names>ヒデヒコ</given-names> </name> </name-alternatives>
3) <aff>
著者の所属機関を記述します。中に<institution>、<addr-line>、<country>などを含むことができます。所属機関が複数ある場合、<contrib>中に<xref>を記述し、その属性@ridと<aff>の属性@idと対応させます。
<contrib contrib-type="author"> <name> <surname>Wigginton</surname> <given-names>Janis</given-names> </name> <xref ref-type="aff" rid="aff-1"/> </contrib> <aff id="aff-1">Department of Microbiology and Immunology, University of Michigan Medical School, Ann Arbor, MI 48109-0620</aff>
4) <aff-alternatives>
同一所属機関に複数の名前がある場合に用い、その中に複数の<aff>を含むことができます。これにより、例のように多言語での記述が可能となります。
<aff-alternatives id="aff1"> <aff> <institution xml:lang=“ja-Jpan”>国立言語学博物館</institution> </aff> <aff> <institution xml:lang="en">National Museum of Linguistics</institution> </aff> </aff-alternatives>
(o) <pub-date>
発行年月日を記述します。属性@pub-typeの値には、pub、epub、ppub、epub-ppubなどがあり、発行形態による複数の発行年月日を記述できます。
<pub-date pub-type="pub" iso-8601-date="1999-03-27"> <day>27</day> <month>03</month> <year>1999</year> </pub-date>
また、@date-typeで編集履歴(received、rev-request、accepted、retracted)なども記述できます。
(p) <abstract>
抄録を記述します。多言語の抄録がある場合、<trans-abstract>を用いて記述し、@xml:langで区別します(<trans-abstract>はver 1.4では廃止)。
(q) <kwd-group>
複数のキーワードをまとめる要素で、<kwd>で個々のキーワードを記述します。
<kwd-group kwd-group-type="author"> <kwd>DNA analysis</kwd> <kwd>gene expression</kwd> (中略) <kwd>parallel cloning</kwd> <kwd>fluid microarray</kwd> </kwd-group>
多言語のキーワード群がある場合、<kwd-group>を複数記述し、@xml:langで区別することができます。
(r) Body
論文の本文部分で、さまざまな本文要素を記述できます。<body>の直下には<sec>を置くことで、章節を定義できます。<sec>は入れ子構造を取ることができます。本文の要素としては、
-
<title> 章節のタイトル
-
<p> パラグラフ
-
<fig> 図
-
<graphic> 画像
-
<table-wrap> 表ラッパー2)
-
<fn> 脚注
などがあります。次に例を示します。
<sec sec-type="intro"> <title>Introduction</title> <p>Geriatric day hospitals developed rapidly in the United .... We therefore undertook a systematic review of the randomized trials of day hospital care.</p> </sec> <sec sec-type="methods"> <title>Methods</title> <p>The primary question addressed was ....</p> <sec> <title>Inclusion criteria</title> <p>We set out to identify all ....</p> </sec> <sec> <title>Search strategy</title> <p>We searched for ....</p> </sec> </sec>
(s) Back matter(後付)
<back>には以下の要素を記述することができます。
-
<ack>
-
<glossary>
-
<bio>
-
<ref-list>
-
<fn-group>
-
<notes>
(t) 参考文献
1) <ref-list>と<ref>
参考文献は<ref-list>で記述します。個々の文献は<ref-list>の中で<ref>で記述します。本文中では、文献番号を<xref>で次のように記述します。
<xref ref-type="bibr" rid="B6">6</xref>
これを受けて、<ref>では@id属性を用いて次のように文献番号を記述します。
<ref id="B6"> <label>6</label> (文献書誌) </ref>
文献リスト中に「注」が混ざっている場合、<ref>中に<note>を置くこともできます。
2) 書誌記述の区別
<ref>内で記述します。書誌には<element-citation>と<mixed-citation>があります。<element-citation>は書誌の要素のみを記述し、句読点は含めません。XML的にはより厳密ですが、例外の処理が面倒です。<mixed-citation>では書誌要素に加え、テキストや句読点も記述できるので、レンダリング(版下作成)が容易です。両者の例を示します。
<element-citation> <element-citation publication-type="journal" publication-format="print"> <name> <surname>Llanos De La Torre Quiralte</surname> <given-names>M</given-names></name> <name><surname>Garijo Ayestaran</surname> <given-names>M</given-names></name> <name><surname>Poch Olive</surname> <given-names>ML</given-names> </name> <article-title xml:lang="es">Evolucion de la mortalidad infantil de La Rioja (1980-1998)</article-title> <trans-title xml:lang="en">Evolution of the infant mortality rate in la Rioja in Spain (1980-1998)</trans-title> <source>An Esp Pediatr</source> <year iso-8601-date="2001-11">2001</year> <month>Nov</month> <volume>55</volume> <issue>5</issue> <fpage>413</fpage> <lpage>420</lpage> <comment>Figura 3, Tendencia de mortalidad infantil [Figure 3, Trends in infant mortality]; p. 418. Spanish</comment> </element-citation>
<mixed-citation publication-type="journal" publication-format="print"> <string-name> <surname>Llanos De La Torre Quiralte</surname>, <given-names>M</given-names></string-name>, <string-name><surname>Garijo Ayestaran</surname>, <given-names>M</given-names></string-name>, <string-name><surname>Poch Olive</surname>, <given-names>ML</given-names> </string-name>. <article-title xml:lang="es">Evolucion de la mortalidad infantil de La Rioja (1980-1998)</article-title>. [<trans-title xml:lang="en">Evolution of the infant mortality rate in la Rioja in Spain(1980-1998)</trans-title>]. <source>An Esp Pediatr</source>. <year iso-8601-date="2001-11">2001</year> <month>Nov</month>;<volume>55</volume>(<issue>5</issue>): <fpage>413</fpage>–<lpage>420</lpage>. Figure 3, Tendencia de mortalidad infantil [Figure 3, Trends in infant mortality]; p. 418. Spanish. </mixed-citation>
(u) <fn-group>(巻末注)
論文の最後に置かれ、個々の注は<fn>で記述します。本文や表の中で用いられます。
たとえば表中では、<td align=”center”>0.50<xref ref-type=”table-fn” rid=”TF1-151″></xref>(0.26 to 0.96)</td>のように属性@ridでリンクを記述し、<fn-group>中では<fn>の中で属性@idでそのリンクを記述します。<fn-group>の例を示します。
<table-wrap-foot> <fn-group> <fn id="TF1-151"><p>P<0.05 (random effects model).</p></fn> </fn-group> </table-wrap-foot>
2.4 参考サイト
- ○ JATS Journal Publishing Tag Library https://jats.nlm.nih.gov/publishing/tag-library/1.1/
- ○ JATS 日本語訳 https://xspa.jp/what/jats-japanese/
- ○ J-STAGE ガイドライン https://www.jstage.jst.go.jp/static/files/ja/jstage_xml_jats1_1_format_guideline.pdf
- ○ J-STAGE メタデータ項目一覧 https://www.jstage.jst.go.jp/static/files/ja/jstage-xml_jats1_1-metadata_item_list.pdf