次の方法で共有


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