<fsDecl>

<fsDecl> (feature structure declaration) declares one type of feature structure. 18.11 Feature System Declaration
Moduleiso-fs — 18 Feature Structures
AttributesIn addition to global attributes
typegives a name for the type of feature structure being declared.
Status Required
Datatype

<rng:ref name="data.enumerated"/>
data.enumerated
Values any convenient string of characters.
baseTypesgives the name of one or more typed feature structures from which this type inherits feature specifications and constraints; if this type includes a feature specification with the same name as that of any of those specified by this attribute, or if more than one specification of the same name is inherited, then the set of possible values is defined by unification. Similarly, the set of constraints applicable is derived by combining those specified explicitly within this element with those implied by the baseTypes attribute. When no baseTypes attribute is specified, no feature specification or constraint is inherited.
Status Optional
Datatype 1–∞ occurrences of

<rng:ref name="data.name"/>
data.name
separated by whitespace
Values one or more names as defined by the W3C XML Specification
Note
Inheritance is defined here as a monotonous relation.
The process of combining constraints may result in a contradiction, for example if two specifications for the same feature specify disjoint ranges of values, and at least one such specification is mandatory. In such a case, there is no valid representative for the type being defined.
Used byfsdDecl
May contain
Declaration

<rng:element name="fsDecl">
<rng:ref name="att.global.attributes"/>
<rng:attribute name="type">
 <rng:ref name="data.enumerated"/>
</rng:attribute>
<rng:optional>
 <rng:attribute name="baseTypes">
  <rng:list>
   <rng:oneOrMore>
    <rng:ref name="data.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,
   attribute type { data.enumerated },
   attribute baseTypes { list { data.name+ } }?,
   ( fsDescr?, fDecl+, fsConstraints? )
}
Example
<fsDecl type="SomeName">
 <fsDescr>Describes what this type of fs represents</fsDescr>
 <fDecl name="featureOne">
<!-- The declaration for featureOne -->
 </fDecl>
 <fDecl name="featureTwo">
<!-- The declaration for featureTwo -->
 </fDecl>
 <fsConstraints>
<!-- The feature structure constraints go here -->
 </fsConstraints>
</fsDecl>