Tipo di dati modello enumeratore

Il tipo di dati ENUMERATOR ha valori consentiti limitati a un set di token.

*DataType: ENUMERATOR indirizza un modello per definire un tipo di dati di enumerazione. Questo tipo di dati verrà restituito come dichiarazione simpleType di XML Schema derivata dal tipo stringa con restrizioni per specificare ogni enumeratore consentito. Le direttive seguenti vengono usate per definire completamente il tipo di dati ENUMERATOR:

  • *XMLDataType (obbligatorio). NCName da assegnare al tipo di dati XML che verrà utilizzato per definire questa enumerazione nello schema XML generato. Ogni tipo di enumerazione deve avere un NCName univoco. Questo nome deve essere univoco per tutti i tipi XSD_DEFINED e ENUMERATOR. Per evitare conflitti con i tipi di dati definiti dal parser GDL, è consigliabile evitare NCNames che iniziano con "GDL_" e "GDLW_".

  • *EnumeratorList (obbligatorio). Elenco dei token dell'enumeratore. Ogni token deve essere un simbolo GDL valido e deve essere conforme agli eventuali requisiti aggiuntivi imposti dallo schema XSD per il valore del componente dello schema: <enumerazione>.

  • *ArrayLabel (facoltativo). Se si specifica questa direttiva, il filtro del parser prevede che il valore sia racchiuso tra parentesi, preceduto dall'etichetta di matrice specificata.

Il valore da analizzare come tipo di dati ENUMERATOR deve corrispondere a uno dei token definiti dalla direttiva *ElementTags.

Si consideri il modello seguente.

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

Il modello precedente farà sì che il filtro parser crei la seguente voce dello schema XML.

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

Il filtro del parser creerà anche il corrispondente tipo di dati avvolto.

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

Si consideri la voce GDL seguente.

*Color: GREEN

Si consideri inoltre il modello ACOLOR, che dichiara l'attributo *Color GDL per avere un *ValueType definito dal modello COLORS, come illustrato nell'esempio di codice seguente.

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

Se la voce GDL precedente viene interpretata usando il modello ACOLOR, si verificherà l'output XML risultante.

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

L'attributo XML xsi:type definisce questa istanza dell'elemento GDL_ATTRIBUTE per contenere un tipo di valore definito dal modello che rappresenta un'enumerazione definita nello spazio dei nomi predefinito XML.