Dela via


Datatyp för uppräkningsmall

Datatypen ENUMERATOR har tillåtna värden som är begränsade till en uppsättning token.

*DataType: ENUMERATOR dirigerar en mall för att definiera en uppräkningsdatatyp. Den här datatypen matas ut som en XML-schema simpleType-deklaration som härleds från strängtypen med begränsningar för att ange varje tillåten uppräknare. Följande direktiv används för att helt definiera datatypen ENUMERATOR:

  • *XMLDataType (krävs). NCName som ska tilldelas till den XML-datatyp som ska användas för att definiera den här uppräkningen i det genererade XML-schemat. Varje uppräkningstyp måste ha ett unikt NCName. Det här namnet måste vara unikt för alla XSD_DEFINED- och ENUMERATOR-typer. För att undvika konflikter med datatyper som GDL-parsern definierar bör du undvika NCNames som börjar med "GDL_" och "GDLW_".

  • *EnumeratorList (krävs). Listan över enumeratörtokens. Varje token måste vara en giltig GDL-symbol och måste uppfylla eventuella ytterligare krav som XSD-schemat ställer för värdet för schemakomponenten: <uppräkning>.

  • *ArrayLabel (valfritt). Om det här direktivet anges förväntar sig parserfiltret att värdet ska omges av parenteser, föregås av den angivna matrisetiketten.

Värdet som ska parsas som en ENUMERATOR-datatyp måste matcha en av de token som direktivet *ElementTags definierar.

Överväg följande mall.

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

Föregående mall gör att parserfiltret skapar följande XML-schemapost.

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

Parserfiltret skapar också motsvarande omslutna datatyp.

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

Överväg följande GDL-post.

*Color: GREEN

Och tänk på ACOLOR-mallen, som deklarerar attributet *Color GDL som har en *ValueType som definieras av mallen COLORS, som följande kodexempel visar.

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

Om den tidigare GDL-posten tolkas med hjälp av ACOLOR-mallen, skulle den resulterande XML-utdata genereras.

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

XML-attributet xsi:type definierar den här instansen av GDL_ATTRIBUTE-elementet för att innehålla en malldefinierad värdetyp som representerar en uppräkning som definieras i XML-standardnamnområdet.