列舉值範本資料類型
ENUMERATOR 資料類型具有限制為一組權杖的允許值。
*DataType:ENUMERATOR 會指示範本定義列舉資料類型。 此資料類型會輸出為 XML 架構 simpleType 宣告,此宣告衍生自 字串 類型,並具有指定每個允許列舉值的限制。 下列指示詞可用來完整定義 ENUMERATOR 資料類型:
*XMLDataType (必要) 。 要指派給 XML 資料類型的 NCName,將用來在產生的 XML 架構中定義此列舉。 每個列舉類型都必須有唯一的 NCName。 此名稱必須對所有XSD_DEFINED和 ENUMERATOR 類型是唯一的。 若要避免與 GDL 剖析器所定義的資料類型發生衝突,您應該避免以 「GDL_」 和 「GDLW_」 開頭的 NCName。
*EnumeratorList (必要) 。 列舉值標記的清單。 每個權杖都必須是有效的 GDL 符號,而且必須符合 XSD 架構針對架構元件值所施加的任何其他需求: < 列舉 > 。
*ArrayLabel (選擇性) 。 如果指定這個指示詞,剖析器篩選準則預期值會以括弧括住,前面加上指定的陣列標籤。
要剖析為 ENUMERATOR 資料類型的值必須符合 *ElementTags 指示詞所定義的其中一個標記。
請考慮下列範本。
*Template: COLORS
{
*Type: DATATYPE
*DataType: ENUMERATOR
*XMLDataType: "colors"
*EnumeratorList: (YELLOW, MAGENTA, CYAN, BLACK, RED, GREEN, BLUE)
}
上述範本會導致剖析器篩選準則建立下列 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>
剖析器篩選也會建立對應的包裝資料類型。
<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>
請考慮下列 GDL 專案。
*Color: GREEN
並考慮 ACOLOR 範本,它會宣告 *Color GDL 屬性具有範本 COLORS 所定義的 *ValueType ,如下列程式碼範例所示。
*Template: ACOLOR
{
*Name: "*Color"
*Type: ATTRIBUTE
*ValueType: COLORS
*Additive: LEAST_TO_MOST_RECENT
}
如果使用 ACOLOR 範本解譯先前的 GDL 專案,就會發生產生的 XML 輸出。
<GDL_ATTRIBUTE Name="*Color" xsi:type="GDLW_colors" >GREEN</GDL_ATTRIBUTE>
XML 屬性 xsi:type 會定義GDL_ATTRIBUTE專案的這個實例,以保存範本定義的實值型別,代表 XML 預設命名空間中定義的列舉。