<fsDecl>

<fsDecl> (déclaration de structure de traits) déclare un type de structure de traits 18.11 Feature System Declaration
Module iso-fs — 18 Feature Structures
En complément des attributs globaux
type attribue un nom au type de structure de traits déclaré.
Statut Requis
Type de données

<rng:ref name="data.enumerated"/>
data.enumerated
Valeurs toute chaîne de caractères pertinente.
baseTypes donne le nom d'une ou plusieurs structures de traits "type", de laquelle ou desquelles il hérite des spécifications et des contraintes de traits. Si ce type inclut une spécification de traits du même nom que l'une de celles spécifiées par cet attribut, ou si plus d'une spécification du même nom est transmise par héritage, l'ensemble des valeurs possibles est définie par unification. De même, l'ensemble des contraintes applicables résulte de la combinaison de celles qui sont spécifiées explicitement à l'intérieur de cet élément et de celles qui découlent de l'attribut baseTypes. Quand aucun attribut baseTypes n'est précisé, aucune spécification de traits ni contrainte n'est transmise par héritage.
Statut Optionel
Type de données 1–∞ occurrences of 

<rng:ref name="data.name"/>
data.name
séparé par un espace
Valeurs un ou plusieurs noms tels que définis par la Spécification XML du W3C.
Note
L'héritage est défini ici comme une relation monotone.
La combinaison de contraintes peut générer une contradiction, par exemple si deux spécifications données pour le même trait présentent des plages disjointes de valeurs et qu'au moins une de ces spécifications est obligatoire. Dans ce cas, il n'y a pas de représentant valide du type défini.
Utilisé par
Peut contenir
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:ref name="data.name"/>
    <rng:zeroOrMore>
     <rng:ref name="data.name"/>
    </rng:zeroOrMore>
   </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, data.name* } }?,
   ( fsDescr?, fDecl+, fsConstraints? )
}
Exemple
<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>