要素の属性を特定のものだけに制限する
TEIのデフォルトでは、要素は多くの属性クラス(att.global、att.datableなど)を継承しており、多数の属性が使用可能です。特定の属性のみを許可したい場合は、以下のように設定します。
例: persNameでxml:idとcorrespのみを許可
<elementSpec ident="persName" mode="change">
<classes mode="change">
<!-- 属性クラスを削除(モデルクラスは維持) -->
<memberOf key="att.global" mode="delete"/>
<memberOf key="att.cmc" mode="delete"/>
<memberOf key="att.datable" mode="delete"/>
<memberOf key="att.editLike" mode="delete"/>
<memberOf key="att.personal" mode="delete"/>
<memberOf key="att.typed" mode="delete"/>
</classes>
<attList>
<attDef ident="xml:id" mode="add" usage="opt">
<desc>要素の一意な識別子</desc>
<datatype>
<dataRef name="ID"/>
</datatype>
</attDef>
<attDef ident="corresp" mode="add" usage="opt">
<desc>関連する人物情報へのリンク</desc>
<datatype>
<dataRef key="teidata.pointer"/>
</datatype>
</attDef>
</attList>
</elementSpec>
ポイント
<classes mode="change">を使用:mode="replace"で空にすると、モデルクラスも削除され要素自体が使えなくなる- 属性クラスを個別に削除 :
<memberOf key="att.xxx" mode="delete"/>で不要な属性クラスを削除 - 必要な属性を追加 :
<attDef ident="xxx" mode="add">で許可したい属性を定義
注意点
- 要素がどの属性クラスに属しているかは、TEI Guidelinesで確認できる
att.globalを削除するとxml:id、xml:langなども使えなくなるため、必要に応じて個別に追加する
要素に属性を追加する
既存の属性クラスを維持したまま、新しい属性を追加する場合:
<elementSpec ident="pb" mode="change">
<attList>
<attDef ident="facs" mode="add" usage="opt">
<desc>原本画像へのリンク</desc>
<datatype>
<dataRef key="teidata.pointer"/>
</datatype>
</attDef>
</attList>
</elementSpec>
この場合、既存の属性クラスはそのまま維持され、facs属性が追加されます。
動画版(生成AIによる自動生成): この記事の内容をずんだもん×四国めたんの掛け合いで解説しています。自動生成のため、内容に誤りがある可能性があります。正確な情報は記事本文をご参照ください。



