🍣

LEAF Writer:スキーマのカスタマイズ

2024/06/29に公開

概要

LEAF Writerのカスタマイズ方法に関する調査記録です。

https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer

今回はスキーマのカスタマイズ方法に関する備忘録です。以下のように、日本語訳などを表示することを目指します。

以下は、カスタマイズ前の表示です。以下のスキーマに基づき、多くの要素が英語の説明とともに表示されます。

https://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng

方法

以下のように、スキーマファイルを指定します。

https://github.com/kouigenjimonogatari/kouigenjimonogatari.github.io/blob/master/xml/lw/01.xml

具体的には、以下です。

<?xml-model href="https://kouigenjimonogatari.github.io/lw/tei_genji.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>

LEAF Writerはこのスキーマファイルを読み込み、validationや使用可能な要素の提示を行うようでした。

これはLEAF Writerに特化した機能ではなく、Oxygen XML Editorのような一般的なXMLエディタにおいても同じように動作することが多いようです。

(参考)LEAF Writerのカスタマイズ

上述したように、LEAF Writerでは、ロードしたXMLファイルで指定されたスキーマを参照するため、エディタとスキーマは疎結合な構成になっています。

しかし、LEAF Writer側で事前に定義したスキーマ以外を参照する場合、以下のようなダイアログが表示され、「ADD SCHEMA」ボタンから、独自に定義したスキーマの情報をLEAF Writerに教える必要があります。

上記の登録処理を行えば問題ありませんが、LEAF Writer側に事前に定義を追加しておきたい場合には、LEAF Writerをカスタマイズする必要があります。

具体的には、以下のように修正を加えることで、LEAF Writer側に指定したスキーマおよびCSSを事前登録できました。

https://gitlab.com/nakamura196/leaf-writer/-/commit/dc5108978bc3013a80965913d74e729daf6941f2

packages/cwrc-leafwriter/src/config/schemas.tsファイルに以下を追加しました。

packages/cwrc-leafwriter/src/config/schemas.ts
...
{
    id: 'teiGenji',
    name: 'TEI Genji',
    mapping: 'tei',
    rng: ['https://kouigenjimonogatari.github.io/lw/tei_genji.rng'],
    css: ['https://kouigenjimonogatari.github.io/lw/tei_genji.css'],
  },
...

これにより、指定したスキーマがLEAF Writerに事前登録され、以後、同じスキーマを参照する際には、上記の追加設定は不要になりました。

まとめ

TEIおよびLEAF Writerなどのツールにおけるスキーマの取り扱いについて、参考になりましたら幸いです。

Discussion