XML形式論文の書き方
〜修正編〜

1.目次

論文XMLを作成して検証プログラムで「文法チェック」を行うと、エラーメッセージが出て処理が止まってしまうことがあります。これはXMLではミスがあった場合、処理プログラムはそこで処理を中止する、というルールが決められているためです。
 表示されるメッセージには問題の内容が書かれていますが、表現がやや難解なものもありますので主なエラーとその対処法についてここで簡単に説明します。次の中から、表示されているエラーメッセージを選んでください。
エラーメッセージが表示されない場合
  1. 「HTMLへ変換」「仕上がりプレビュー」をすると「テキスト処理中…」で止まってしまう
[ERROR[……]] と表示された場合
  1. "…" 要素の中は、"…" のリストに含まれる要素で構成してください。
  2. 要素 "…" の中の必須要素が足りません。"…" の中の要素はちゃんと入っていますか?
  3. 要素 "…" が定義されていません。DTD(DOCTYPE)の参照はちゃんとはいっていますか?
  4. 属性 "…" は要素 "…" の必須属性です。入れ忘れていないか、スペルミスしていないかお確かめください。
  5. 属性 "…" の値は "…" のうちのどれかでなければなりません。"…" はミススペルではないですか?
  6. 属性 "…" は、要素 "…" では使えません(定義されていません)。"…" はミススペルではないですか
[FATAL[……]] と表示された場合
  1. 開始タグ "…" は必ず対応する終了タグ </…> で閉じてください。もしちゃんと閉じているのなら、この中に対応のとれていない別の要素があります。
  2. 要素は必ず、開始タグと終了タグで囲まなければなりません。不用意に "<" をつかっていませんか? "<" は特殊文字として "&LT;" で参照してください。
  3. "…" エレメントの開始タグが正しくありません。開始タグは閉じる記号の( ">" or "/>" )で閉じてください。また、全角スペースが入っていませんか?
  4. 属性 "…" の値は必ず "値"(二重引用符)か '値'(引用符)のように囲んでください。
  5. 属性 "…" の値には '<' の文字は使えません。また、引用符の対応が取れているかチェックしてください。
  6. 属性は一つの開始タグの中では一度だけ指定してください。"…" in "…".
  7. 属性の名前 "…" のすぐ後ろは '=' (等号)でなければなりません。
  8. "&" 文字は特殊文字(エンティティ)を使うためのものです。"&AMP;" としてください。
  9. 特殊記号(エンティティ)"…" は定義されていません。スペルを間違っていませんか?
  10. 特殊文字(エンティティ)"…" は必ず ';' で閉じていなくてはなりません。
附表
  1. 各要素内で使用可能な要素の一覧表
  2. 属性値を持つ要素の属性一覧表

2.エラーメッセージが表示されない場合

1) 「HTMLへ変換」「仕上がりプレビュー」をすると「テキスト処理中…」で止まってしまう
原因として考えられることは、半角数字を使わなければならない場所で半角数字以外のものを使ってしまったことです。原稿を見直して、半角数字を使わなければならない場所(演題番号、著者リストの org、所属機関リストの id など)に他の文字が混じっていないか確認してください。尚、この問題については文法上の問題ではないため(現段階では)「XML文法チェック」では問題が発見できませんのでご注意ください。

 Windows 環境の方は、検証プログラムの起動時に現れたDOSウィンドウに「java.lang.NumberFormatException:」から始まる10行くらいのメッセージが出ているはずです。その最初の行で、java.lang.NumberFormatException: に続いて表示されている文字が原因です。テキストエディタの検索機能などを利用してその文字を見つけ出し、修正してください。

3.[ERROR[……]] と表示された場合

1) [ERROR[ "…" 要素の中は、"…" のリストに含まれる要素で構成してください。]]
このエラーメッセージは、その要素の中に含むことのできないものが書かれているときに表示されます。こちらに使用できる要素の一覧表を用意しました。各要素の中には「使用可能な要素」の欄に印のついているものしか使用できません(子要素の中は除く)。印がついていても「必須(1つ)」の要素が複数存在すると、やはりこのエラーが表示されます。表中の「要素以外の文字」とはタグではない一般の文字(不等号などの特殊記号を含む)です。

 例えば、本文(body)の中では節(section)以外を使用することはできないので、本文の文章を記述するためには必ず「要素以外の文字」の使用できる節(section)を作り、その中に記述する必要があります。

<br/>, <cite label="…"/>, <img src="…"/> は <要素名> と </要素名> で内容を挟むタイプのタグではないので表では全て空欄になっていますが、これらが原因となってこのエラーが発生することはないはずです。
2) [ERROR[ 要素 "…" の中の必須要素が足りません。"…" の中の要素はちゃんと入っていますか?]]
このエラーメッセージは、1)とは逆にその要素の中に含まなければならないものが書かれていないときに表示されます。こちらの表を参考にエラーが表示された箇所の原稿を見直してください。例えば、著者リスト(author-list-xx)の中に1人も著者情報(author)が書かれていない、式・図・表(math, figure, table)の中に画像の指定(img)がない、などが考えられます。
3) [ERROR[ 要素 "…" が定義されていません。DTD(DOCTYPE)の参照はちゃんとはいっていますか?]]
このエラーメッセージは、ほとんどの場合開始タグの要素名にスペルミスがあるときに表示されます。エラーが表示された箇所のタグをよく見直してください。ちなみに、終了タグにスペルミスがある場合には、4.1)のエラーが表示されます。

 エラーの表示された場所にもその他の場所にもスペルミスがない場合、本当にエラーメッセージに書かれているようにDTD(文書型定義ファイル)への参照に失敗している可能性があります。この場合、エラーメッセージは <jcmi-paper> のところに表示されるはずです。
 修正するには、ダウンロードして何も手を加えていない状態のテンプレートから下のような <!DOCTYPE … で始まる行(末尾のアドレスは変更されている可能性があります)をコピーし、作業ファイルの2行目、<!DOCTYPE … で始まる行を置き換えてください(作業ファイルにこの行が見つからないときは、<jcmi-paper> の行の前に挿入してください)。
<!DOCTYPE jcmi-paper PUBLIC "jcmipapr.dtd" "http://www.mi.hama-med.ac.jp/jcmi2000endai/jcmipapr.dtd">
このような事態を防ぐため、事務局からの指示などがない限り作業ファイル(テンプレート)の始めにある <jcmi-paper> より前の行は一切編集しないようにしてください。また、このような事態に備えてダウンロードしたテンプレートは保存しておき、作業はコピーを使用するようにしてください。
4) [ERROR[ 属性 "…" は要素 "…" の必須属性です。入れ忘れていないか、スペルミスしていないかお確かめください。]]
このエラーメッセージは、開始タグにおいて「属性="…"」の形で指定しなければならない項目が書かれていないときに表示されます。エラーが表示されている箇所のタグで指定しなければならない項目を確認して下さい。例えば、節(section)の title 属性や引用箇所(cite)の label 属性などが必須属性となっています。タグによっては幾つかの属性は書かれていなくてもエラーにはなりませんが(参考)、エラーを減らすためにも基本的に属性のあるタグは全ての属性を記入するという方針で執筆されることをお勧めします。
5) [ERROR[ 属性 "…" の値は "…" のうちのどれかでなければなりません。"…" はミススペルではないですか? ]]
このエラーメッセージは、属性の値として選択できないものが指定されているときに表示されます。「"( yes | no )" のうちのどれか」とは、「"yes または no" のうちのどれか」という意味です。このエラーは yes/no のどちらかを指定しなければならない属性や、箇条書き記号の指定(type 属性)などで発生します。エラーメッセージを参考にミススペルを修正してください。
6) [ERROR[ 属性 "…" は、要素 "…" では使えません(定義されていません)。"…" はミススペルではないですか]]
このエラーメッセージは、その要素で使用できない属性が指定されているときに表示されます。各要素の開始タグで指定できる属性の種類は予め定義されているもの(参考)に限られるため、ミススペルなどがあると未知の属性として認識されてしまいます。エラーの表示された箇所のタグについて、指定できる属性をスペルを含めて確認して下さい。

4.[FATAL[……]] と表示された場合

1) [FATAL[ 開始タグ "E" は必ず対応する終了タグ </E> で閉じてください。もしちゃんと閉じているのなら、この中に対応のとれていない別の要素があります。]]
このエラーメッセージは、タグの閉じ忘れ、または入れ子になったタグを閉じる順番のミスがあるときに表示されます。br, cite, img 以外のタグは必ず <要素名> 〜 </要素名> の組が成立していなければなりません(br, cite, img でもタグの終わりの / を忘れるとこのエラーが表示されます)。また、入れ子にしたタグは、後で開始したタグを先に開始したタグより先に閉じなければなりません。例えば、副節の場合は節(<section> 〜 </section>)の中で <subsection> 〜 </subsection> の組が完結している必要があります。
 このようなミスを減らすためには、先に開始タグと終了タグを書き、その後で内容を書くようにされることをお勧めします。
2) [FATAL[ 要素は必ず、開始タグと終了タグで囲まなければなりません。不用意に "<" をつかっていませんか? "<" は特殊文字として "&LT;" で参照してください。]]
このエラーメッセージは、ほとんどの場合半角の小なり記号(<)をそのまま使ってしまったときに表示されます。小なり記号はタグの始まりとして認識されますので、執筆の際にそのまま使用することはできません。メッセージにあるように特殊文字として "&LT;" という記号に書き換えるか全角の「<」を使用してください。また、小なり記号を使った位置によっては3)のエラーが表示される場合もあります。
3) [FATAL[ "…" エレメントの開始タグが正しくありません。開始タグは閉じる記号の( ">" or "/>" )で閉じてください。また、全角スペースが入っていませんか?]]
このエラーメッセージは、開始タグに問題があるときに表示されます。エラーメッセージの始めにある「"…"エレメント」が実際に論文XMLで使用されている要素名(参考)でなければ、原因は2)と同様半角の小なり記号(<)をそのまま使ってしまったことです。この場合、エレメント名として示された文字列の直前に "<" が紛れ込んでいるはずですので、2)を参考に修正してください。
 エラーメッセージに示されたエレメント名が実際に使用されているものであった場合は、原因として第1に属性の設定が半角スペースで区切られていないことが考えられます。特に見落としやすいものは半角スペースのつもりで使ってしまった「全角スペース」です。タグの中で指定する各属性は必ず半角スペースで区切られなければなりません。お使いのテキストエディタの設定で編集記号の表示・非表示を切り替えられる場合は全角スペースを表示するように設定しておかれることをお勧めします。
 そのほか、属性値の引用符を閉じる位置がおかしい場合にもこのエラーが表示されます。節のタイトルなどの中で引用符を使用する必要がある場合は、一重引用符(')と二重引用符(")を併用して title='A"B"C' のようにして下さい。両方同じ種類の引用符を使用して例えば「title="A"B"C"」のように記述すると、Aを属性値として処理し、残りの部分「B"C"」はタグ内に不正な文字があると認識されてしまいます。
4) [FATAL[ 属性 "…" の値は必ず "値"(二重引用符)か '値'(引用符)のように囲んでください。]]
このエラーメッセージは、属性の値が引用符で囲まれていないときに表示されます。XMLのルールでは、タグの属性値は必ず引用符で囲まなければならないと定められています。引用符で囲み忘れると、せっかく属性値を指定してもエラーになってしまいますのでご注意下さい。尚、始めの引用符はあるものの、閉じる方の引用符を忘れてしまうと5)のエラーが表示されます。
5) [FATAL[ 属性 "…" の値には '<' の文字は使えません。また、引用符の対応が取れているかチェックしてください。]]
このエラーメッセージは、多くの場合引用符の閉じ忘れ、または始めと終わりに違う引用符を使用したときに表示されます。必要な場所で引用符が閉じられないと、次に引用符が現れるまでの文字をずっと属性値として処理してしまい、その間に現れた他の要素のタグに含まれる '<' のためにこのエラーが表示されます。このエラーメッセージは問題となった '<' が現れた箇所に表示されますが、通常問題の箇所はそれより前にありますのでそこから遡って引用符の確認をしてください。尚、メッセージにあるように属性の値には '<' の文字は使えません。属性の値に限らず、半角記号の '<' は特殊文字として '&LT;' を使用してください。
6) [FATAL[ 属性は一つの開始タグの中では一度だけ指定してください。"P" in "E".]]
このエラーメッセージは、要素Eの開始タグの中で属性Pが2回以上指定されているときに表示されます。メッセージにあるように、一つの開始タグの中では同じ属性を複数回指定することはできません。多くの場合、コピー・貼り付けのミスと思われますので、エラーが表示された箇所のタグを再度確認して下さい。
7) [FATAL[ 属性の名前 "…" のすぐ後ろは '=' (等号)でなければなりません。]]
このエラーメッセージは、属性の名前と "値" の間に '=' (等号)がない、または他の文字が含まれているときに表示されます。開始タグの中で属性を指定する際には、必ず「属性="値"」の形で指定しなければなりません。もし原稿を確認してもエラーの表示された位置の属性の名前の後に等号があるなら、その等号が全角記号の「=」になっている可能性があります。属性の名前と値を結ぶ記号は必ず半角の '=' でなければなりませんのでご注意ください。
8) [FATAL[ "&" 文字は特殊文字(エンティティ)を使うためのものです。"&AMP;" としてください。]]
このエラーメッセージは4)と同様に、半角の&記号をそのまま使ってしまったときに表示されます。XMLの処理システムは "&" が現れるとそこから ";" までを特殊記号を記述するための表現(エンティティ)として扱おうとします。そのため、"&" を執筆の際にそのまま使用することはできません。メッセージにあるように特殊文字として "&AMP;" という記号に書き換えるか全角の「&」を使用してください。
9) [FATAL[ 特殊記号(エンティティ)"…" は定義されていません。スペルを間違っていませんか?]]
このエラーメッセージは、"&LT; (<)", "&GT; (>)", "&AMP; (&)" 以外のエンティティ表現を使ってしまったときに表示されます。原因は多くの場合スペルの間違いと考えられます。「小なり記号」は Less Than の「LT」、「大なり記号」は Greater Than の「GT」、「&記号」は AMPersand の「AMP」です。
10) [FATAL[ 特殊文字(エンティティ)"…" は必ず ';' で閉じていなくてはなりません。]]
このエラーメッセージは、エンティティ表現が正しくセミコロン(;)で終了していないときに表示されます。特殊文字を表現するエンティティは必ず '&' と ';' で挟む形なければならないため、& が現れた後に ';' が見つからないとエラーとなってしまいます。逆に、始まりの & を忘れた場合は、それ以降の文字列がエンティティ表現として認識されないため、文中に妙な文字列が残ってしまいます(この場合はエラーにはなりません)。