共用方式為


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)
}