概要

以下の記事で、Romaの使い方を説明しました。

今回は、手元にあるTEI/XMLを対象として、TEI ODD (One Document Does-it-all)や解説(HTMLやPDF)の作成に関する一連の流れを説明します。

なお、ODD (One Document Does it all) と RNG (RelaxNG) の違いについて、GPT-4による回答結果を末尾に掲載しています。こちらも参考にしてください。

使用するタグの一覧を取得する

まず、プロジェクトで使用するタグの一覧を取得します。

今回、手元にあるTEI/XMLを対象として、使用されているタグの一覧を取得するライブラリおよびチュートリアル用のノートブックを作成しました。

ライブラリ

https://nakamura196.github.io/gdb-utils/

チュートリアル用のノートブック

https://colab.research.google.com/github/nakamura196/000_tools/blob/main/TEIでタグの使用頻度を分析するチュートリアル.ipynb

例えば、上記のノートブックを実行すると、以下のような結果が得られます。以下は、対象としたTEI/XMLファイル中に含まれるタグとその頻度を取得し、その結果をタグの名前について昇順で取得したものです。

indexTagCount
0TEI1
18addrLine1
17address1
50app8
5author2
58back1
36bibl1
47body1
56closer1
44correspAction2
43correspDesc1
20country1
33date6
26dimensions1
19district1
54div1
37editor1
40editorialDecl1
39encodingDesc1
25extent2
2fileDesc1
29handDesc1
30handNote1
27height1
31history1
21idno2
16institution1
55lb13
51lem8
59listPerson1
12listWit1
45location1
14msDesc1
15msIdentifier1
23objectDesc1
48opener1
32origin1

Romaでタグを限定したODDファイルを作成する

上記で取得したタグに限定したODDファイルを、Romaというツールを用いて作成します。

https://roma.tei-c.org/

Romaの使い方については、以下の記事を参考にしてください。

具体的には、使用するタグ(以下の例では、addressaddrLine)にチェックを入れていきます。

この時、先にリストアップしたタグについて、手動で一つ一つチェックを入れていく作業は手間がかかります。そこで、これを自動化するスクリプトを作成する機能をライブラリに含めています。ノートブックにも実行例を含めていますが、以下のようなスクリプトを取得できます。

f}cci}}uoofnnnecss(ltlt}rtticsciee)etoeotx;tiiennntuttms{snVld}i}reesoocoaeo)fnmmNllhtltc;ssoeeeFuu(nTNt..coefmi}!noooFllkusoeffotCtoooCn.unotFhFugghdfnt(uFoeon((eod.ifli}noucud''c=rqtoefdunkn.TAkE=ueut)nddlhlb[aemn(d;=eelo]cfr.dccc{.=nsx;h.aythhhp[geie(mlSe=eeeu"cttsfdsexcccnsThhieWucelttkkkohEetmin-;eCrbbbt(Ic>estclcouoooFt"kmhtitnexxxoe,C0swTisot;).uxh)eeotre=cnt"ewrxn-An{hdTac{eet(iltieodkrVttl.tcMdbefaee(tekaroolxm'rmetLxnuut_.i.dcieoneT_mmchnstdsopd(l=)eW(Mrc)o;"ifatai-st,tonetml=erhudxcai=su"Tnthrs=teaedcV)yt(;dx:ha--t'dt'el{tie.rV,cuetxmeakexetdsliestmTcsutd)_o-"ee._Ml,sm'{pai(s)rts"iN;ictatomh-peta)ipmFrt"soy{e,Tu-mont'"Cde)ah)x.ue;tqtc'uhk)eo).rr;fy"oS,reEl"aebccahtc(okfr"u(,n'c."tmbidiocbn-l(c"ih,teec"mkb)bood{xy_"_,na"tcilvoes-ecro"n,tr"oclo'r)r;espAction","correspDesc","country","date","dimensions","district","div","editor","editorialDecl","encodingDesc","extent","fileDesc","handDesc","handNote","height","history","idno","institution","lb","lem","listPerson","listWit","location","msDesc","msIdentifier","objectDesc","opener","origin","p","persName","person","physDesc","placeName","profileDesc","provenance","publicationStmt","publisher","rdg","resp","respStmt","salute","signed","sourceDesc","space","supportDesc","teiHeader","text","title","titleStmt","variantEncoding","width","witness"];

上記のスクリプトを、Google Chromeをお使いであれば、「ディベロッパー ツール」を開き、「コンソール」タブを開き、上記のスクリプトを貼り付けます。

結果、リストアップしたタグに対して、自動でチェックがつきます。

ODDファイルの保存

上記まで実施した後、「ODDとしてカスタマイズ」を押して、ODDファイルをダウンロードします。このファイルを再度Romaにアップロードすることで、カスタマイズを継続して行うことができます。

解説(HTML)版の取得

また、「解説(HTML版)」を押すと、HTMLファイルがダウンロードされます。本ファイルをブラウザで開くと、以下のように、限定したタグに限ったタグの説明が一覧表示されます。

本ファイルをTEI/XMLファイルの編集者と共有することで、マニュアルの代わりとして使用できる可能性があります。

RNGファイルの利用

RomaのダウンロードオプションとしてRELAX NGスキーマも用意されています。本ファイルは以下の記事で紹介したように、TEI/XMLファイルに本ファイルへの情報を追記することにより、VSCodeやOxygen XML EditorなどでのValidation(検証)に利用することができます。具体的には、ODDに含まれていないタグを入力すると、エラーが表示されるようになります。

まとめ

ODDについては理解が不十分の点も多く、誤った記述があるかもしれません。ただ、ODDファイルの作成や応用について参考となる部分がありましたら幸いです。

今後は、各要素の属性のカスタマイズや、特定の属性に入力可能な値のカスタマイズなど、引き続き色々と試してみたいと思います。

参考: TEIのODDとRNGの違い(GPT-4による回答)

TEI (Text Encoding Initiative) は、学術的なテキストのデジタル化や電子テキストの研究を目的としたマークアップ言語のガイドラインセットです。XML(Extensible Markup Language)を基盤としています。TEIのカスタマイズのためには、ODD (One Document Does it all) と RNG (RelaxNG) という2つの異なる技術が関連します。以下、それぞれの説明です。

  1. ODD (One Document Does it all) :

    • ODDはTEIのカスタマイズメカニズムです。TEIの要素や属性をカスタマイズするための仕様書のようなもので、その仕様に基づいて具体的なカスタマイズされたスキーマが生成されます。
    • ODDは人間が読めるドキュメンテーションと、機械が読めるスキーマの情報を一つの文書にまとめています。
    • ODDを使用すると、TEIの要素や属性を追加、変更、削除することができます。
    • ODDからは、様々なスキーマ言語の形式、例えばRelaxNGやW3C XML Schema、DTDなどに変換することができます。
  2. RNG (RelaxNG) :

    • RelaxNGは、XML文書の構造を定義するためのスキーマ言語の一つです。RNGにはXMLベースの構文(RelaxNG XML構文)と非XMLベースの簡略構文(RelaxNG Compact構文)の2つの構文が存在します。
    • RelaxNGは、元々のDTDやW3C XML Schemaとは異なる簡易な方法で、XML文書の構造や内容を定義することができます。
    • TEIのODDを用いてカスタマイズした後、そのODDを基にRelaxNGのスキーマを生成することが一般的です。

要するに、ODDはTEIのカスタマイズを定義するための仕様書的存在で、そのODDからRNGなどの具体的なスキーマ形式に変換することができます。