🐈

ODD編集Tips:その1

に公開

要素の属性を特定のものだけに制限する

TEIのデフォルトでは、要素は多くの属性クラス(att.globalatt.datableなど)を継承しており、多数の属性が使用可能です。特定の属性のみを許可したい場合は、以下のように設定します。

例: persNameでxml:idcorrespのみを許可

<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>

ポイント

  1. <classes mode="change">を使用: mode="replace"で空にすると、モデルクラスも削除され要素自体が使えなくなる
  2. 属性クラスを個別に削除: <memberOf key="att.xxx" mode="delete"/>で不要な属性クラスを削除
  3. 必要な属性を追加: <attDef ident="xxx" mode="add">で許可したい属性を定義

注意点

  • 要素がどの属性クラスに属しているかは、TEI Guidelinesで確認できる
  • att.globalを削除するとxml:idxml: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属性が追加されます。

Discussion