はじめに

東アジアの古典籍をデジタル化する際、TEI(Text Encoding Initiative)ガイドラインに準拠したXMLでマークアップすることが一般的になっています。一般財団法人人文情報学研究所が開発した「TEI古典籍ビューワ」は、このようなTEI/XMLファイルをブラウザで簡単に表示できる便利なツールです。

今回、このビューワをカスタマイズして、判読不能箇所を示す<gap>タグの表示に対応しました。本記事では、そのカスタマイズ方法を紹介します。

課題:gapタグが表示されない

古典籍のデジタル化において、虫損や破損などにより判読できない箇所は<gap>タグでマークアップします。

<gapreason="illegible"quantity="2"unit="character"/>

しかし、標準のTEI古典籍ビューワでは、このタグが適切に表示されません。そこで、判読不能な文字数分の黒四角(■)を表示し、マウスホバーで理由を確認できるようにカスタマイズしました。

カスタマイズの方針

TEI古典籍ビューワは以下のファイル構成になっています。

iaaalnpppidpppbe.._/xmmc.iiohnnnt..fmjc.lssjssminify

app.min.jsを直接編集すると、本体のアップデート時に変更が失われてしまいます。そこで、app_conf.jsのみを編集することで、本体との互換性を保ちながらカスタマイズを実現しました。

実装方法

1. MutationObserverによるDOM監視

TEI古典籍ビューワはXMLをパースしてDOMに変換します。この変換後のタイミングで<gap>タグを処理するため、MutationObserverを使用してDOM変更を監視します。

c}d}o)o)n;c;Msbuutm}omci}tu)deofaot;ynntba_ts(istm}r.tbooeiu)eaobnrot;sdbdsOvnaudoyebesti}lEdRrsr.iftvyevefoeRser=on(neurvr.nptsl.enEaorLutoreaddoil)bwcdecstsDhe.et{eOM(dnse=rMumNosnvtuodGedeatdearo(taeTp(cbitsyE'uooi.plDmdnofeeOeyOnomMnRbr=eCtes=E=no.se>a=tngurcstelv{hN(ette(onnE,rndotl(oedLe{md.eomueE)aectL;dnha=Eetit>MdBliE'ydo{N,ILnTdis_(sN't=Ob:>D=oE>dt{)yr{_u{ree,suslutb't)r;ee:true});

2. gapタグの処理

<gap>タグを検出したら、quantity属性の値に応じて黒四角を表示し、reason属性をツールチップとして設定します。

f}unctcg}ioa)onp;nsst.igcccgc}ci}ggpffaoooao;ofaargpnnnpnnppoar(.sss.ss(..cpEgdttttt'''''trgssesaaaqeidwocleattscptqrupxrlaomaorapyys=h.auealtelmrinses.llG(dsaanaCaeamtctaoseeacgaenstcosgg'te'sne..poatttoienoie:el:oTtccEnpa.inthtnb'dlneAoultsgtyoeMl:''e'Txtlrea=eay=lnae:dettosmi>tpdtp'''x)rroen.P=ge:'':'tirne{grar==,{b=traopp'''=u=s.pca.=p{,'t'(qPergl,re#'cursse'a'e(3hoeosetc,a'3enrceIA'e'st3ltyednt.h,oi'paSsttront;'ies=(relMl;nlegipdaeeed'abeep'rc)tpuar[,)tr.tt;roruge(er{reee(qaeAt't'usalu;Araoslrtenno(ntat]n';rsiTgioteabnyxpu')t,t);r)ee;.ag'saqopun,a';n;[tdiattya'-)origi'n1a'l,-t1a0g)-;name="gap"]');

ポイント:属性の取得方法

TEI古典籍ビューワがXMLをHTMLに変換する際、属性の扱いは要素によって異なります。<gap>タグの場合、XML属性がそのまま保持されるため、getAttribute()で直接取得できます。

ccoonnXsdsMtatLtqaqu-ua*annttiittyy==ggaapp.d.gadetatatAsatestterti使.bquutaen(t'iqtuya;ntity');

実際のDOM構造をブラウザの開発者ツールで確認することが重要です。

追加カスタマイズ

同様の手法で、以下の機能も追加しました。

GETパラメータによる高さ指定

テキスト表示部の高さをURLパラメータで指定できるようにしました。

index.html?height=800
cci}oofnnss(tthci}eofphinaegs(riht!dagtiomh)hscsteNu{iam==gNeh(nnpthteaVe.wraigalgeUmuhtRsetEL.VlSg=aeeelmatpuer(aenc'r)thhsBPee&yaiI&Irgndahth(mt(e's'hit()egew;ihxigttnhV_dtabo,lowud.1eyl0'o)>)c;.a0st)tiyo{lne..sheeairgchht);=heightValue+'px';

ページタイトルの設定

TEI/XMLに複数の<title>要素がある場合、1つ目のタイトルをページタイトルに設定します(デフォルトでは最後のタイトルが使用されます)。

<t/i<<ttttiliitettlSlleteeSm>tttm>ytp>e="s<u/bt"i>tle<>/ti<t!l-e->

書誌情報(sourceDesc/bibl)の表示改善

<sourceDesc>内の<bibl>要素を見やすく整形するため、CSSで各要素にラベルを付けてブロック表示にしました。

......}...sssssssssooooooooouuuuuuuuurrrrrrdmrrrcccccciaccceeeeeesreeeDDDDDDpgDDDeeeeeelieeessssssansssccccccy-ccc:b......o...bbbbbbbtbbbiiiiiiltiiibbbbbboobbbllllllcmlllk:tepdin;tepiduado0idutibtnt.tibltleoe3ltleoi,,eeoi,rs{m:rs,h;::heb:erebr,fe:of:robereef{o{rceocno{tnetcneotnn:tt:e"n"t:"";";fofno"tn;-tw-fewoiengithg-thw:te:ibgobhlotdl:;d;b}o}ld;}

これにより、以下のような見やすい表示になります:

A100:123

まとめ

TEI古典籍ビューワは、設定ファイルapp_conf.jsを編集することで柔軟にカスタマイズできます。今回紹介したMutationObserverを使った手法は、他のTEIタグへの対応にも応用可能です。

カスタマイズしたコードは以下のリポジトリで公開しています。

参考リンク

謝辞

TEI古典籍ビューワを開発・公開されている永崎研宣氏(一般財団法人人文情報学研究所)、本間淳氏(フェリックス・スタイル)に感謝いたします。