Tipo de datos de plantilla de enumerador
El tipo de datos ENUMERATOR tiene valores permitidos que están limitados a un conjunto de tokens.
*DataType: ENUMERATOR dirige una plantilla para definir un tipo de datos de enumeración. Este tipo de datos se generará como una declaración simpleType de esquema XML que se deriva del tipo de cadena con restricciones para especificar cada enumerador permitido. Las directivas siguientes se usan para definir completamente el tipo de datos ENUMERATOR:
*XMLDataType (obligatorio). NCName que se asignará al tipo de datos XML que se usará para definir esta enumeración en el esquema XML generado. Cada tipo de enumeración debe tener un NCName único. Este nombre debe ser único para todos los tipos XSD_DEFINED y ENUMERATOR. Para evitar conflictos con los tipos de datos que define el analizador de GDL, debe evitar NCNames que comiencen por "GDL_" y "GDLW_".
*EnumeratorList (obligatorio). Lista de tokens de enumerador. Cada token debe ser un símbolo GDL válido y debe cumplir los requisitos adicionales que impone el esquema XSD para el valor del componente de esquema: <enumeración>.
*ArrayLabel (opcional). Si se especifica esta directiva, el filtro del analizador espera que el valor esté entre paréntesis, precedido por la etiqueta de matriz especificada.
El valor que se va a analizar como un tipo de datos ENUMERATOR debe coincidir con uno de los tokens que define la directiva *ElementTags.
Tenga en cuenta la siguiente plantilla.
*Template: COLORS
{
*Type: DATATYPE
*DataType: ENUMERATOR
*XMLDataType: "colors"
*EnumeratorList: (YELLOW, MAGENTA, CYAN, BLACK, RED, GREEN, BLUE)
}
La plantilla anterior hará que el filtro del analizador cree la siguiente entrada de esquema 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>
El filtro del analizador también creará el tipo de datos ajustado correspondiente.
<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>
Tenga en cuenta la siguiente entrada GDL.
*Color: GREEN
Y considere la plantilla ACOLOR, que declara el atributo *Color GDL para tener un *ValueType definido por la plantilla COLORS, como se muestra en el ejemplo de código siguiente.
*Template: ACOLOR
{
*Name: "*Color"
*Type: ATTRIBUTE
*ValueType: COLORS
*Additive: LEAST_TO_MOST_RECENT
}
Si la entrada GDL anterior se interpreta mediante la plantilla ACOLOR, se produciría la salida XML resultante.
<GDL_ATTRIBUTE Name="*Color" xsi:type="GDLW_colors" >GREEN</GDL_ATTRIBUTE>
El atributo XML xsi:type define esta instancia del elemento GDL_ATTRIBUTE para contener un tipo de valor definido por plantilla que representa una enumeración que se define en el espacio de nombres predeterminado XML.