RELAX NGとSchematronを組み合わせたTEI XMLスキーマの実装ガイド

! 人手で検証を行った後、AIが記事を執筆しました。 はじめに TEI(Text Encoding Initiative)XMLを編集する際、要素や属性の構造検証だけでなく、より複雑なビジネスルールの検証が必要になることがあります。本記事では、RELAX NG(RNG)とSchematronを組み合わせて、構造検証と内容検証の両方を実現する方法を、実際のプロジェクトで直面した課題を例に解説します。 解決したい課題 日本の古典文学テキストをTEI XMLで校訂する際、以下のような要求がありました: ID参照の動的検証 : corresp属性で参照するIDが、実際に文書内のwitness要素に存在することを検証したい Oxygen XML Editorでの補完機能 : 編集時にIDの候補を自動表示したい 複数ID参照のサポート : スペース区切りで複数のIDを指定可能にしたい 特定要素のみ参照を許可 : witness要素のIDのみを参照可能とし、person要素のIDが含まれる場合はエラーにしたい なぜRNG + Schematronなのか? RELAX NGの得意分野 要素・属性の構造定義 データ型の指定 基本的な内容モデルの定義 Schematronの得意分野 XPathベースの複雑な検証ルール 文書内の相互参照チェック カスタムエラーメッセージの提供 この2つを組み合わせることで、構造と内容の両面から厳密な検証が可能になります。 実装例 1. 基本的なRNGスキーマ構造 < < ? g / x r < < < < < g m a ! s ! s / ! r l m - c - t < s - a m - h - a r t - m v a : r e a m e r S n こ t f r R a r c s こ > t N r s x x x d n h に n > G > i m m m a s e p S a に o l l l t = m r c m よ n n n n a " a e h e る = s s s t h t f e = 構 " = : : y t r i m " 造 1 " a s p t o x a T 定 . h = c e p n = t E 義 0 t " h L : 名 " r I " t h = i / 前 t o " p t " b / 空 e n / e : t h r w 間 i ル > n / p t a w 宣 " ー c : t r w 言 ル r / p y . u を d e / : = t r 埋 i l r / " e i め n a e / h i = 込 g x l p t - " む = n a u t c h " g x r p . t U . n l : t T o g . r p F r . / g : - g c w / / 8 r l w n / " n g c w s w ? s . . / w > n o w 1 w s s r 3 . . t / g . 0 t r c o " e u d r > i c m s g - t p d / c u a l 2 . r t / 0 o e i s 0 r / b c 1 g 1 i h / / . l e X n 0 i m M s " t a L / y t S 1 / r c . a o h 0 n n e " n " m / o a > t - a d t a i t o a n t s y / p 1 e . s 0 " " 2. ID定義とanyURI型の活用 Oxygen XML Editorで自動補完を実現するために、anyURI型を使用します: ...

2025年8月9日 · 17 分 · Nakamura