RELAX NGスキーマを操作するライブラリjingtrangを試す:rngファイルの作成編
概要 以下の記事で、jingtrangおよびrngファイルを用いたxmlファイルの検証を行いました。 このjingtrangライブラリでは、xmlファイルからrngファイルを作成できるということで、試してみます。 Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す:作成編.ipynb rngファイルを作成する rngファイルを作成する元ファイルとして、以下を用意しました。 <root><title>aaa</title></root> 上記のファイルに対して、以下を実行します。 pytrang base.xml base.rng 結果、以下のファイルが作成されました。 <?xml version="1.0" encoding="UTF-8"?> <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="root"> <element name="title"> <data type="NCName"/> </element> </element> </start> </grammar> このrngファイルに対して、以下のようにテストしてみました。 OK:テキストが異なるもの <root><title>bbb</title></root> pyjing base.rng ex1.xml NG:titleがない <root><aaa>bbb</aaa></root> pyjing base.rng ex2.xml /content/ex2.xml:1:12: error: element "aaa" not allowed anywhere; expected element "title" /content/ex2.xml:1:28: error: element "root" incomplete; missing required element "title" NG: 属性がある <root><title lang="en">aaa</title></root> pyjing base.rng ex3.xml /content/ex3.xml:1:24: error: found attribute "lang", but no attributes allowed here まとめ 上記のような形で、あるxmlファイルから、rngファイルを作成することができました。rngファイルの記述方法についてはさらなる勉強が必要ですが、今回のような具体例から試行錯誤ができる仕組みは有効かと思います。 ...







