列挙子テンプレート データ型
列挙子 データ型には、一連のトークンに制限されている値が許可されています。
*DataType: 列挙子 は、リストデータ型を定義するようにテンプレートに指示します。 このデータ型は、許可される各列挙子を指定する制限付きの文字列 型から 派生した XML スキーマ simpleType 宣言として出力されます。 列挙子 データ型を完全に定義するには、次のディレクティブを使用します。
*XMLDataType (必須)。 生成された XML スキーマでこのリスト型を定義するために使用される XML データ型に割り当てる NCName。 各リスト型には、一意の NCName が必要です。 この名前は、すべての XSD_DEFINED 型と ENUMERATOR 型に対して一意である必要があります。 GDL パーサーが定義するデータ型との競合を回避するには、"GDL_" および "GDLW_" で始まるNCNamesを避ける必要があります。
*EnumeratorList (必須)。 列挙子トークンの一覧。 各トークンは有効な GDL シンボルである必要があり、XSD スキーマがスキーマ コンポーネントの値に対して課す追加の要件 <(リスト型)> に準拠している必要があります。
*ArrayLabel (任意)。 このディレクティブを指定した場合、パーサー フィルターは値を括弧で囲み、その前に指定した配列ラベルを付けます。
列挙子 データ型として解析される値は、*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
次のコード例に示すように、テンプレート COLORS で定義された *ValueType を持つ *Color GDL 属性を宣言する ACOLOR テンプレートについて考えてみましょう。
*Template: ACOLOR
{
*Name: "*Color"
*Type: ATTRIBUTE
*ValueType: COLORS
*Additive: LEAST_TO_MOST_RECENT
}
前の GDL エントリが ACOLOR テンプレートを使用して解釈された場合、結果の XML 出力が発生します。
<GDL_ATTRIBUTE Name="*Color" xsi:type="GDLW_colors" >GREEN</GDL_ATTRIBUTE>
XML 属性 xsi:type は、xml の既定の名前空間で定義されている列挙型を表すテンプレート定義値型を保持するために、GDL_ATTRIBUTE要素のこのインスタンスを定義します。