🐈
RELAX NGスキーマを操作するライブラリjingtrangを試す:検証編
概要
あるスキーマに従ったXMLファイルを作成する機会があったのですが、そのスキーマに合致したXMLファイルを作成できているか、確認する必要がありました。
上記の要件に対して、RELAX NGスキーマを操作するライブラリjingtrangを使ってみましたので、その備忘録です。
Google Colabのノートブックも用意しました。
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