Romaを使ってプロジェクトに応じたタグに使用する属性を限定する
概要
Romaを使ってプロジェクトに応じたタグに使用する属性を限定する方法に関する備忘録です。
背景
以下の記事で、Romaを使ってプロジェクトに応じたタグを限定する方法を記載しました。
今回はこの延長で、各タグで使用する属性のカスタマイズを行います。
ユースケース
ここでは、一例として、persNameで使用可能な属性を限定してみます。
デフォルト(tei_all.rng)をOxygen XML Editorで用いた際、以下のように、persNameタグで使用可能な属性として、多くの選択肢が提示されていることがわかります。
一方、本記事で説明するカスタマイズしたrngファイルを使用した場合、以下のように、5つの属性のみが利用可能となっていることがわかります。
このようにプロジェクト毎に使用可能なタグや属性を限定することで、入力者の負担軽減や、Validationの効率化が期待できます。
手順
以下の記事を参考に、Romaで新規にODDファイルを作成するか、既存のODDファイルを登録した状態から開始します。
そして、今回対象とするpersNameにチェックが入っていることを確認します。
次に、上記のpersNameのリンクをクリックすると、以下の画面に遷移します。
そして、属性をクリックします。このページにおいて、使用する属性を限定することができます。
以下では、少しわかりにくいですが、key
属性は使用するものとして残しており、xml:lang
属性は使用しないものとして除外している例です。
その他、新規の属性の作成や、
既存のものからインポート(用語が正しいか自身がありません)することもできました。
このカスタマイズ内容を保存できるように、ダウンロード > 「ODDとしてカスタマイズ」により、oddファイルをダウンロードしておきます。また、「RELAX NGスキーマ」などを選択して、実際にTEI/XMLで使用するファイルをダウンロードします。
詳細は以下を参考にしてください。
参考:説明文のカスタマイズ
Roma
RELAX NG スキーマ
<define name="tei_persName">
<element name="persName">
<a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(personal name) 日本語によるカスタマイズです。 [14.2.1. Personal Names]</a:documentation>
<ref name="tei_macro.phraseSeq"/>
<pattern xmlns="http://purl.oclc.org/dsdl/schematron"
xmlns:rng="http://relaxng.org/ns/structure/1.0" id="tei_hi_dns-persName-calendar-check-persName-constraint-rule-23">
<sch:rule xmlns:sch="http://purl.oclc.org/dsdl/schematron"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns="http://www.tei-c.org/ns/1.0" context="tei:*[@calendar]">
<sch:assert test="string-length( normalize-space(.) ) gt 0"> @calendar indicates one or more
systems or calendars to which the date represented by the content of this element belongs,
but this <sch:name/>
element has no textual content.</sch:assert>
</sch:rule>
</pattern>
<ref name="tei_att.canonical.attribute.key"/>
<ref name="tei_att.global.attribute.xmlid"/>
<ref name="tei_att.global.attribute.n"/>
<ref name="tei_att.global.linking.attribute.corresp"/>
<ref name="tei_att.global.analytic.attribute.ana"/>
<empty/>
</element>
</define>
LEAF Writer
まとめ
TEI/XMLの導入にあたり、参考になりましたら幸いです。
Discussion