次の方法で共有


列挙子テンプレート データ型

列挙子 データ型には、一連のトークンに制限されている値が許可されています。

*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要素のこのインスタンスを定義します。