Freigeben über


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.