GDL 演習 3: ルート レベル コンストラクトを作成する
演習
演習 1 のスキーマを変更して、ルート レベルでのみ検出できる *PFeature という名前のコンストラクトを導入します。
次の条件を使用してください。
*PFeature には任意のインスタンス名を指定できます。
*PFeature メンバーは、*Name および *DefaultOption という名前の属性です。
*PFeature には、仮想として宣言する必要がある *Poption という名前のコンストラクト メンバーがあります。
ソリューション
次のテンプレートは、上記の条件を満たします。
*Template: POPTION
{
*Name: "*POption"
*Type: CONSTRUCT
*Virtual: TRUE
}
*Template: NAME
{
*Name: "*Name"
*Type: ATTRIBUTE
*ValueType: NORMAL_STRING
}
*Template: SYMBOL
{
*Type: DATATYPE
*DataType: FILTER_TYPE
*ElementType: XML_STRING
*FilterTypeName: "SYMBOLNAME"
}
*Template: DEFAULT_OPT
{
*Name: "*DefaultOption"
*Type: ATTRIBUTE
*ValueType: SYMBOL
}
*Template: PFEATURE
{
*Name: "*PFeature"
*Type: CONSTRUCT
*Members: (POPTION, NAME, DEFAULT_OPT)
*Instances: <ANY>
}
*Template: ROOT2
{
*Inherits: ROOT
*Members: (PFEATURE)
}