Tipo di dati del modello di enumeratore
Il tipo di dati enumeratore 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 di 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à usato 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 a eventuali requisiti aggiuntivi imposti dallo schema XSD per il valore del componente dello schema: <enumerazione>.
*ArrayLabel (facoltativo). Se questa direttiva è specificata, il filtro del parser prevede che il valore venga 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.
Prendere in considerazione il modello seguente.
*Template: COLORS
{
*Type: DATATYPE
*DataType: ENUMERATOR
*XMLDataType: "colors"
*EnumeratorList: (YELLOW, MAGENTA, CYAN, BLACK, RED, GREEN, BLUE)
}
Il modello precedente causa il filtro del parser per creare la voce dello schema XML seguente.
<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 tipo di dati wrapped corrispondente.
<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>
Prendere in considerazione la voce GDL seguente.
*Color: GREEN
Prendere in considerazione il modello ACOLOR, che dichiara l'attributo *Color GDL per avere un valore *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 verificherebbe 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.