Enumeratorvorlagendatentyp
Der ENUMERATOR-Datentyp verfügt über zulässige Werte, die auf eine Gruppe von Token beschränkt sind.
*Datentyp: ENUMERATOR weist eine Vorlage an, einen Enumerationsdatentyp zu definieren. Dieser Datentyp wird als simpleType-Deklaration des XML-Schemas ausgegeben, die vom Zeichenfolgentyp mit Einschränkungen abgeleitet wird, um jeden zulässigen Enumerator anzugeben. Die folgenden Anweisungen werden verwendet, um den ENUMERATOR-Datentyp vollständig zu definieren:
*XMLDataType (erforderlich). Der NCName, der dem XML-Datentyp zugewiesen werden soll, der zum Definieren dieser Enumeration im generierten XML-Schema verwendet wird. Jeder Enumerationstyp muss über einen eindeutigen NCName verfügen. Dieser Name muss für alle XSD_DEFINED- und ENUMERATOR-Typen eindeutig sein. Um Konflikte mit Datentypen zu vermeiden, die der GDL-Parser definiert, sollten Sie NCNames vermeiden, die mit "GDL_" und "GDLW_" beginnen.
*EnumeratorList (Erforderlich). Die Liste der Enumeratortoken. Jedes Token muss ein gültiges GDL-Symbol sein und muss allen zusätzlichen Anforderungen entsprechen, die das XSD-Schema für den Wert der Schemakomponente: <Enumeration auferlegen> muss.
*ArrayLabel (optional). Wenn diese Direktive angegeben wird, erwartet der Parserfilter, dass der Wert in Klammern eingeschlossen wird, die der angegebenen Arraybezeichnung vorangestellt sind.
Der Wert, der als ENUMERATOR-Datentyp analysiert werden soll, muss mit einem der Token übereinstimmen, die die *ElementTags-Direktive definiert.
Betrachten Sie die folgende Vorlage.
*Template: COLORS
{
*Type: DATATYPE
*DataType: ENUMERATOR
*XMLDataType: "colors"
*EnumeratorList: (YELLOW, MAGENTA, CYAN, BLACK, RED, GREEN, BLUE)
}
Die vorherige Vorlage bewirkt, dass der Parserfilter den folgenden XML-Schemaeintrag erstellt.
<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>
Der Parserfilter erstellt auch den entsprechenden umschlossenen Datentyp.
<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>
Betrachten Sie den folgenden GDL-Eintrag.
*Color: GREEN
Betrachten Sie auch die ACOLOR-Vorlage, die das *Color GDL-Attribut als *ValueType deklariert, das von der Vorlage COLORS definiert wird, wie im folgenden Codebeispiel gezeigt.
*Template: ACOLOR
{
*Name: "*Color"
*Type: ATTRIBUTE
*ValueType: COLORS
*Additive: LEAST_TO_MOST_RECENT
}
Wenn der frühere GDL-Eintrag mithilfe der ACOLOR-Vorlage interpretiert wird, tritt die resultierende XML-Ausgabe auf.
<GDL_ATTRIBUTE Name="*Color" xsi:type="GDLW_colors" >GREEN</GDL_ATTRIBUTE>
Das XML-Attribut xsi:type definiert diese instance des GDL_ATTRIBUTE-Elements, um einen durch die Vorlage definierten Werttyp zu enthalten, der eine Enumeration darstellt, die im XML-Standardnamespace definiert ist.