TEI Processing Modelで実現する宣言的なマルチフォーマット変換

はじめに TEI (Text Encoding Initiative) は人文学テキストのデジタル化において広く使われている標準規格です。本記事では、TEI P5で導入された Processing Model という機能を使って、TEI XMLから複数のフォーマット(HTML、LaTeX/PDF、EPUB3)への変換を実現した事例を紹介します。 https://www.tei-c.org/Vault/P5/3.0.0/doc/tei-p5-doc/en/html/TD.html#TDPM 対象プロジェクトは「校異源氏物語」で公開されているテキストを例とします。 https://kouigenjimonogatari.github.io/ 背景 これまで、以下の記事で紹介したように、変換処理を個別に行ってきました。 ODD/RNGファイルのカスタマイズによる、使用するタグの限定 XSLTを用いたHTMLへの変換 XSLTを用いたTeX/PDFへの変換 EPUBへの変換 それぞれの取り組みにおいて、個別の変換ルールなどを記載したファイルを作成する必要があり、その煩雑さが課題となっていました。 Processing Modelとは Processing Modelは、TEI要素の変換ルールを宣言的 に記述する仕組みです。従来は各出力フォーマット用に個別のXSLTを書く必要がありましたが、Processing Modelを使うことで: ODDファイル内で変換ルールを定義 できる 複数の出力フォーマット に対応可能(web、latex、epubなど) スキーマと変換ルールを一元管理 できる Processing Modelの構造 < e / l < < e e d m / l m e o < < < < < < m e e s d ! m / ! m / ! m / o m n c e - o < m - o < m - o < m d e t > l - d m / o - d m / o - d m / o e n S P > e o < m d e o < m d e o < m d l t p e H l d o d o e E l d o d o e L l d o d o e > S e r T S e u e d l P S e u e d l a S e u e d l p c s M e l t s e S U e l t s e S T e l t s e S e o L q p c l e B q p c l e e q p c l e c i n u b u > > q 3 u b u > > q X u b u > > q > d a o e e t I u e e t I u e e t C u e l u n h R n e o n h R n e o n h R u e n t c a e l n u c a e l n u c a e s n t n p e v n i c t e v n i c t e v n t c = a u i d n e p i d n e p i d o e " m t o o i e > u o o i e > u o o i m > p e u u t t u u t t u u t e < t r i s t r i s t r i L r / p = o p p = o p p = o a s d u " n a u " n a u " n T N e t i > n t i > n t i > e a s = n s = n s = n \ X m c " l p f " l p f " l p e > w i a o e i a o l i e c " e n n r p n n r a n r o b e < u e < t e s m m " " / p b " / p e " o m o > > o e " > o e x > n a d u r > u r " < n e t s t s > / d = p o p o o " u n u n u f c t t t o h R n R n p r a e a e a u n n m n m t p g d e d e R e e i < i e r " t / t i n s > i d i n d o o e o i n n s n E t > c > P i n > U o a B n m 3 > e < s / < d / e d s e c s > c > 主な要素: ...

2025年10月8日 · 16 分 · Nakamura

VSCodeとXSLTを用いたTEI/XMLのリアルタイムプレビュー

概要 VSCodeとXSLTを用いたTEI/XMLのリアルタイムプレビュー環境を試作したので、備忘録です。 挙動 動作例は以下です。TEI/XMLファイルを編集し、保存すると、ブラウザの表示内容が更新されます。 https://youtu.be/ZParCRUc5AY?si=-aHHi3bIZGWoJYnP 準備 以下の拡張機能をインストールします。 Live Server Trigger Task on Save TEI/XMLを保存した際に、Trigger Task on SaveによってXSLTを実行し、変換されたHTMLファイルをLive Serverで閲覧します。 リポジトリ サンプルコードを以下に格納しています。 https://github.com/nakamura196/tei-xml-xslt-vscode XSLTを行うにあたり、xslt3をインストールします。 g c n i d p t m t c e i l i n o - s n x t e m a l l h - l t x t s p l s t : - / / s g c i o t d h e u b . c o m / n a k a m u r a 1 9 6 / t e i - x m l - x s l t - v s c o d e settings.jsonとtasks.json .vscodeフォルダに、settings.jsonとtasks.jsonを格納しています。 ...

2025年1月15日 · 29 分 · Nakamura

校異源氏物語テキストDBのTEI/XMLからPDFを作成する

概要 校異源氏物語テキストDBは、『校異源氏物語』のテキストデータを公開するデータベースです。 https://kouigenjimonogatari.github.io/ 今回、本DBに以下のようなPDFファイルを追加しました。 https://kouigenjimonogatari.github.io/output/01/main.pdf 本記事は、上記のようなPDFファイルを、XSLTとTeXを使って作成します。 リポジトリのクローン 以下のように、リポジトリをクローンします。 g i t c l o n e - d e p t h 1 h t t p s : / / g i t h u b . c o m / k o u i g e n j i m o n o g a t a r i / k o u i g e n j i m o n o g a t a r i . g i t h u b . i o そして以下のコマンドにより、xslt3をインストールします。 ...

2025年1月14日 · 8 分 · Nakamura

XSLTを使ってIIIFとTEIの対照表示を実現する

概要 XSLTを使ってIIIFとTEIの対照表示を実現してみる機会がありましたので、備忘録です。 結果は以下からご確認いただけます。「校異源氏物語テキストDB」を利用しています。 https://kouigenjimonogatari.github.io/xml/xsl/01.xml 背景 TEI/XMLの可視化にあたって、これまでは、TEI XMLをHTMLに変換してブラウザ上で表示するためのJavaScriptライブラリであるCETEICeanを使うことが多かったです。 これらの取り組みではJavaScriptのフレームワークと合わせて、柔軟な開発が可能でした。 しかし、この方法ではTEI/XMLとは別に、ビューアのデプロイが必要であるなど、課題を感じる点もありました。 対策 そこで、XSLTを使ったIIIFとTEIの対照表示に取り組みました。以下のXSLファイルを用意しました。実装にあたっては、ChatGPTを利用しました。 https://github.com/kouigenjimonogatari/kouigenjimonogatari.github.io/blob/master/xsl/mirador.xsl そして、XMLファイルからは、以下のように参照します。相対パスとなっている点は、適宜読み替えてください。 < < < ? ? T < x x E t < m m I e f < l l i i t < < - x H l i t a v s m e e t i u e t l a D l t t r y n d e e l h s l s e s S e o i e = r c t > r o s " > > m 校 > n h h t 異 池 = e t > 源 田 " e t 氏 亀 1 t p 物 鑑 . : 語 < 0 t / ・ / " y / き a p w り u ? e w つ t > = w ぼ h " . < t t r e e t > x i i t - t / c l x . e s o > l r " g / h n r s e / f 1 = . " 0 . " . > / . . / x s l / m i r a d o r . x s l " ? > これにより、以下のようなXMLファイルをブラウザで表示すると、 ...

2024年11月2日 · 2 分 · Nakamura

Node.js で XSLT を実行するサンプルリポジトリを作成しました。

Node.js で XSLT を実行するサンプルリポジトリを作成しました。 https://github.com/ldasjp8/nodejs-xslt TEI/XMLファイルなどをNode.jsで処理する際の参考になりましたら幸いです。

2022年4月8日 · 1 分 · Nakamura