<fsDecl>

<fsDecl> (feature structure declaration) ひとつの素性構造を宣言する。 [18.11 Feature System Declaration]
モジュール iso-fs — Feature Structures
属性 att.global (@xml:id, @n, @xml:lang, @xml:base, @xml:space) (att.global.rendition (@rend, @style, @rendition)) (att.global.linking (@corresp, @synch, @sameAs, @copyOf, @next, @prev, @exclude, @select)) (att.global.analytic (@ana)) (att.global.facs (@facs)) (att.global.change (@change)) (att.global.responsibility (@cert, @resp)) (att.global.source (@source)) att.datcat (@datcat, @valueDatcat, @targetDatcat)
type⚓︎ 宣言された素性構造の名前を示す。
状態 必須
データ型 teidata.enumerated
baseTypes⚓︎ ひとつ以上の素性構造を示す。ここから、属性typeは素性定義・制約を 継承する。属性typeが当該属性で示されたものと同名の素性定義を含む 場合、またはひとつ以上の同名素性定義を継承する場合、それらの値は 統合される。同様に、当該属性baseTypesにある値と、当該 要素が持つ内容を統合して制約となる。属性baseTypesが付 与されていない場合、継承される素性定義や素性制約はない。
状態 任意
データ型 1–∞ occurrences of teidata.name 空白文字で区切られる
解説

ここでの継承は、単調な関係である。

複数の制約を統合することで、矛盾が起きるかもしれない。例え ば、同じ素性に2つの定義が重なりのない素性値域を指定し、少なくと もそのうちの1つが必須である場合である。このような時は、属性type にとって妥当な値がなくなる。

クラブのメンバー
上位
iso-fs: fsdDecl
下位
<fsDecl type="SomeName">
 <fsDescr>Describes what this type of fs represents</fsDescr>
 <fDecl name="featureOne">
<!-- The declaration for featureOne -->
  <vRange>
<!-- the range of possible values for this feature -->
  </vRange>
 </fDecl>
 <fDecl name="featureTwo">
<!-- The declaration for featureTwo -->
  <vRange>
<!-- the range of possible values for this feature -->
  </vRange>
 </fDecl>
 <fsConstraints>
<!-- Any additional constraints for the feature structure -->
 </fsConstraints>
</fsDecl>
Content model
<content>
 <sequence>
  <elementRef key="fsDescrminOccurs="0"/>
  <elementRef key="fDeclminOccurs="1"
   maxOccurs="unbounded"/>

  <elementRef key="fsConstraints"
   minOccurs="0"/>

 </sequence>
</content>
宣言
<rng:element name="fsDecl">
 <rng:ref name="att.global.attributes"/>
 <rng:ref name="att.global.rendition.attributes"/>
 <rng:ref name="att.global.linking.attributes"/>
 <rng:ref name="att.global.analytic.attributes"/>
 <rng:ref name="att.global.facs.attributes"/>
 <rng:ref name="att.global.change.attributes"/>
 <rng:ref name="att.global.responsibility.attributes"/>
 <rng:ref name="att.global.source.attributes"/>
 <rng:ref name="att.datcat.attributes"/>
 <rng:attribute name="type">
  <rng:ref name="teidata.enumerated"/>
 </rng:attribute>
 <rng:optional>
  <rng:attribute name="baseTypes">
   <rng:list>
    <rng:oneOrMore>
     <rng:ref name="teidata.name"/>
    </rng:oneOrMore>
   </rng:list>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:optional>
   <rng:ref name="fsDescr"/>
  </rng:optional>
  <rng:oneOrMore>
   <rng:ref name="fDecl"/>
  </rng:oneOrMore>
  <rng:optional>
   <rng:ref name="fsConstraints"/>
  </rng:optional>
 </rng:group>
</rng:element>
element fsDecl
{
   att.global.attributes,
   att.global.rendition.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   att.global.responsibility.attributes,
   att.global.source.attributes,
   att.datcat.attributes,
   attribute type { teidata.enumerated },
   attribute baseTypes { list { teidata.name+ } }?,
   ( fsDescr?, fDecl+, fsConstraints? )
}