🐈

RELAX NGスキーマを操作するライブラリjingtrangを試す:検証編

2023/01/18に公開

概要

あるスキーマに従ったXMLファイルを作成する機会があったのですが、そのスキーマに合致したXMLファイルを作成できているか、確認する必要がありました。

上記の要件に対して、RELAX NGスキーマを操作するライブラリjingtrangを使ってみましたので、その備忘録です。

https://pypi.org/project/jingtrang/

Google Colabのノートブックも用意しました。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す.ipynb

Validationを試す

# ライブラリのインストール
pip install jingtrang

# rngファイルのダウンロード(tei_allを使用)
wget https://raw.githubusercontent.com/nakamura196/test2021/main/tei_all.rng

# validation対象のXMLファイルの用意(校異源氏物語テキストのダウンロード)
wget https://kouigenjimonogatari.github.io/tei/01.xml

OKな例

以下のように実行すると、何も出力されませんでした。

pyjing tei_all.rng 01.xml

NGな例

一方、TEIのスキーマに合致しない以下のようなxmlファイルを用意しました。

ng.xml
<a>bbb</a>

その実行結果は以下です。a要素ではなく、TEIまたはteiCorpus要素が必要と出力されました。このように、スキーマに合致するか否かのチェックができました。

pyjing tei_all.rng ng.xml
/content/ng.xml:1:4: error: element "a" not allowed here; expected element "TEI" or "teiCorpus" (with xmlns="http://www.tei-c.org/ns/1.0")

まとめ

無事に検証を行うことができました。

ただ今回のニーズはTEI/XMLの以外のスキーマに適合するかを検証する必要がありましたので、このrngファイルの作成方法や内容について、別の記事にまとめたいと思います。

Discussion