GDL 練習 3:建立Root-Level建構
運動
修改 練習 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)
}