GDL 연습 3: Root-Level 구문 만들기
운동
연습 1의 스키마를 수정하여 루트 수준에서만 찾을 수 있는 *PFeature라는 구문을 도입합니다.
다음 조건을 사용합니다.
*PFeature는 instance 이름을 가질 수 있습니다.
*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)
}