GDL 演習 5: さまざまな機能の名前の制限を定義する
演習
演習 4 のテンプレートを使用して、*PFeature: InputTray の一部である *POption 内に表示される *Name: コンストラクトを定義し、最大 16 文字に制限し、*PFeature: PaperSize の一部である *POption 内に表示される *Name: を最大 24 文字に制限します。
この変更は、以前に定義したテンプレートを削除または変更せずに行います。 エントリの適切なテンプレート化を確認する単純な GDL データ ファイルを作成します。
ソリューション
次のテンプレートは、条件を満たします。
*Template: PAPER_SIZE_OPT_NAME
{
*Name: "*Name" *% isolate this branch from base templates
*Inherits: NAME
*MaxLength: 24 chars
}
*Template: INPUTTRAY_OPT_NAME
{
*Name: "*Name" *% isolate this branch from base templates
*Inherits: NAME
*MaxLength: 16 chars
}
*Template: INPUTTRAY_OPTION2
{
*Inherits: INPUTTRAY_OPTION
*Members: (INPUTTRAY_OPT_NAME)
*Instances: <ANY>
}
*Template: PAPERSIZE_OPTION2
{
*Inherits: PAPERSIZE_OPTION
*Members: (PAPER_SIZE_OPT_NAME)
*Instances: <ANY>
}
*PFeature: random
{
*Name:"Generic Feature"
*DefaultOption: First
*POption: First
{
*Name: "First Option"
*Command: "Select me"
}
}
*PFeature: PaperSize
{
*Name: "Paper Size"
*DefaultOption: Letter
*POption: Letter
{
*Name: "Letter"
*Command: "Select Letter"
*PaperSize: PAIR(8.5, 11) inches
}
*POption: Legal
{
*Name: "Legal"
*Command: "Select Legal"
*PaperSize: PAIR(8.5, 14) inches
}
*POption: A4
{
*Name: "A4"
*Command: "Select A4"
*PaperSize: PAIR(205, 317) mm
}
}
*PFeature: InputTray
{
*Name: "Paper Source"
*DefaultOption: Upper
*POption: Upper
{
*Name: "Upper Tray"
*Command: "Select Upper Tray"
*Capacity: 2000 sheets
}
*POption: Lower
{
*Name: "Lower Tray"
*Command: "Select Lower Tray"
*Capacity: 500 sheets
}
}
注継承を使用すると、前のテンプレートを変更したり、前のテンプレートが確立したスキーマの意図を覆したりすることなく、基底クラスのバリエーションをさらに調整および派生させることができます。 この機能も継承の強みです。 継承により、サードパーティはマスター スキーマを変更したり違反したりすることなくマスター スキーマを拡張できるようになります。