Partager via


Type de données du modèle Énumérateur

Le type de données ENUMERATOR a autorisé des valeurs limitées à un ensemble de jetons.

*DataType : ENUMERATOR dirige un modèle pour définir un type de données d’énumération. Ce type de données sera généré sous la forme d’une déclaration simpleType de schéma XML dérivée du type de chaîne avec des restrictions pour spécifier chaque énumérateur autorisé. Les directives suivantes sont utilisées pour définir complètement le type de données ENUMERATOR :

  • *XMLDataType (obligatoire). NCName à affecter au type de données XML qui sera utilisé pour définir cette énumération dans le schéma XML généré. Chaque type d’énumération doit avoir un NOM NC unique. Ce nom doit être unique à tous les types XSD_DEFINED et ENUMERATOR. Pour éviter les conflits avec les types de données que l’analyseur GDL définit, vous devez éviter les ncNames qui commencent par « GDL_ » et « GDLW_ ».

  • *EnumeratorList (Obligatoire). Liste des jetons d’énumérateur. Chaque jeton doit être un symbole GDL valide et doit être conforme aux exigences supplémentaires imposées par le schéma XSD pour la valeur du composant de schéma : <énumération>.

  • *ArrayLabel (facultatif). Si cette directive est spécifiée, le filtre de l’analyseur s’attend à ce que la valeur soit entourée de parenthèses, précédées de l’étiquette de tableau spécifiée.

La valeur à analyser en tant que type de données ENUMERATOR doit correspondre à l’un des jetons que la directive *ElementTags définit.

Considérez le modèle suivant.

*Template:  COLORS
{
    *Type:  DATATYPE
    *DataType:   ENUMERATOR
    *XMLDataType: "colors"
    *EnumeratorList: (YELLOW, MAGENTA, CYAN, BLACK, RED, GREEN, BLUE)
}

Le modèle précédent entraîne la création par le filtre de l’analyseur de l’entrée de schéma XML suivante.

    <simpleType name = "colors">
        <restriction base="string">
            <enumeration value="YELLOW"/>
            <enumeration value="MAGENTA"/>
            <enumeration value="CYAN"/>
            <enumeration value="BLACK"/>
            <enumeration value="RED"/>
            <enumeration value="GREEN"/>
            <enumeration value="BLUE"/>
        </restriction>
    </simpleType>

Le filtre d’analyseur crée également le type de données encapsulé correspondant.

    <complexType name = "GDLW_colors">
        <simpleContent>
            <extension base="gdl:colors">
                <attribute name="Name" type="string" use="optional"/>
                <attribute name="Personality" type="string" use="optional"/>
            </extension>
        </simpleContent>
    </complexType>

Considérez l’entrée GDL suivante.

*Color: GREEN

Considérez le modèle ACOLOR, qui déclare que l’attribut *Color GDL a un *ValueType défini par le modèle COLORS, comme le montre l’exemple de code suivant.

*Template:  ACOLOR
{
    *Name:  "*Color"
    *Type:  ATTRIBUTE
    *ValueType:  COLORS
    *Additive: LEAST_TO_MOST_RECENT
}

Si l’entrée GDL précédente est interprétée à l’aide du modèle ACOLOR, la sortie XML résultante se produit.

    <GDL_ATTRIBUTE Name="*Color"  xsi:type="GDLW_colors" >GREEN</GDL_ATTRIBUTE>

L’attribut XML xsi:type définit cette instance de l’élément GDL_ATTRIBUTE pour contenir un type de valeur défini par modèle qui représente une énumération définie dans l’espace de noms XML par défaut.