ここでは,プロパティマッピング定義ファイルの記述形式について説明します。
プロパティマッピング定義の記述形式を次の図に示します。
図4-3 プロパティマッピング定義の記述形式
プロパティマッピング定義はセクション形式で指定します。プロパティマッピング定義は複数のセクションで構成され,それぞれのセクションは複数のエントリで構成されます。なお,1行の長さは,2,048バイトまで(改行文字を含む)です。
(1) セクションの文法
セクションを記述する場合の文法を次に示します。
セクションの種類は,次に示す3種類があります。
以降,それぞれのセクションの文法について説明します。
(a) マッピング先クラス一覧セクション
マッピング先となるクラスを指定するセクションです。セクション名には, EDM_MAPPING_CLASS_LISTを指定してください。このセクションは,プロパティマッピング定義中に1か所だけ存在します。
エントリには,マッピング先クラス名と,マッピング内容を記述するセクションの名称(マッピング先クラス用セクション名)を定義します。エントリには使用するすべてのクラスについて定義します。エントリに定義するクラスは,dmaClass_ConfigurationHistoryクラスのサブクラスおよびdmaClass_DocVersionクラスのサブクラスです。それぞれ一つずつまたはどちらか一つについて定義します。
エントリの内容を次に示します。
(b) マッピング先クラス用セクション
マッピング先となるプロパティ名とタグ名(属性名)の対応を定義するセクションです。セクション名には,「(a) マッピング先クラス一覧セクション」で定義したマッピング先クラス用セクション名を指定します。使用するすべてのマッピング先クラスについて,このセクションを定義します。エントリには,次に示す内容を定義します。
マッピング先に指定できるプロパティはユーザ追加プロパティだけです。マッピング先がVariableArray型プロパティの場合,タグ名との対応は別セクションで定義するので,このセクションではVariableArray型プロパティ名とそのプロパティ用のセクションの名称(マッピング先VariableArray型プロパティ用セクション名)を定義します(VariableArray型プロパティ名エントリ)。エントリの内容を次に示します。
(c) マッピング先VariableArray型プロパティ用セクション
マッピング先VariableArray型プロパティ中の要素プロパティ名とタグ名(属性名)の対応を定義するセクションです。セクション名には「(b) マッピング先クラス用セクション」で定義したマッピング先VariableArray型プロパティ用セクション名を指定します。「(b) マッピング先クラス用セクション」で定義したすべてのマッピング先VariableArray型プロパティについて,このセクションを定義します。エントリには次に示す内容を定義します。
まず,EDM_RECORDエントリで親タグを定義し,次に各要素プロパティ名とタグ(属性)名の対応を定義します。親タグは,すべての子タグの上位にあり,繰り返し出現するタグである必要があります。なお,EDM_RECORDエントリはセクションの先頭だけに記述できます。エントリの内容を次に示します。
(2) エントリの文法
エントリを記述する場合の文法を次に示します。
エントリの種類は,次に示す5種類があります。
以降,それぞれのエントリの文法について説明します。
(a) クラス名エントリ
マッピング先クラス一覧セクション内だけで記述できるエントリです。エントリ名でマッピング先クラスを定義すると同時に,データでマッピング内容を記述するセクションの名称を定義します。
クラス名には,次のクラスを指定できます。
指定内容を次に示します。
(b) EDM_TAGエントリ
プロパティ名エントリの解析時にカレントとして扱うタグ階層を指定するエントリです。このエントリ以降に出現するプロパティ名エントリでは,指定されたタグはこのエントリで指定したタグの下の階層に存在するものとして解析されます。マッピング先クラス用セクションとマッピング先VariableArray型プロパティ用セクションで記述できます。
このエントリの指定は,次のEDM_TAGエントリが出現するか,セクションが終了するまで有効です。ただし,このエントリの指定後にマッピング先VariableArray型プロパティ用セクション名が定義されている場合,そのマッピング先VariableArray型プロパティ用セクションには,このエントリの指定内容が引き継がれます。
マッピング先VariableArray型プロパティ用セクションでこのエントリを指定した場合,指定したタグ階層はEDM_RECORDエントリで指定したタグの下の階層に存在するものとして解析されます。
このエントリで「.」(ピリオド)だけを指定すると「セクションの基本のEDM_TAGエントリ指定にする」という意味になります。このように指定すると,マッピング先クラス用セクション内ではカレントとして扱うタグ階層がないことを示し,マッピング先VariableArray型プロパティ用セクション内ではEDM_RECORDエントリの指定タグ階層を示します。指定内容を次に示します。
(c) EDM_RECORDエントリ
VariableArray型プロパティにマッピングする子タグ群の親の位置に当たる繰り返しタグ(親タグ)を定義するエントリです。VariableArray型プロパティの配列数は,ここで定義したタグの出現回数になります。このエントリは上位セクションのEDM_TAGエントリの指定を引き継ぐので,定義したタグの前には引き継いできたタグ階層が追加されます(上位セクションのEDM_TAG+指定タグ)。マッピング先VariableArray型プロパティ用セクションの先頭に必ず記述してください。
このエントリ以降に出現するEDM_TAGエントリおよびプロパティ名エントリでは,指定されたタグは,すべてこのエントリで指定したタグの下の階層に存在するものとして解析されます。このエントリの指定は,セクションが終了するまで有効です。
このエントリを記述する場合の注意事項を次に示します。
指定内容を次に示します。
(d) プロパティ名エントリ
マッピング先プロパティとマッピングするタグ(属性)を定義するエントリです。指定値によってマッピングする対象が異なります。プロパティ名のタグの指定形式について次の表に示します。
表4-22 プロパティ名のタグの指定形式
タグの指定形式 | マッピング対象 |
---|---|
タグ名 | 指定したタグの開始タグおよび終了タグに囲まれた文字列(タグ間のテキスト)をマッピングします。 |
属性名 | 指定した属性の値をマッピングします。対象タグは上位のEDM_TAGエントリおよびEDM_RECORDエントリで指定したタグです。 |
「.」(ピリオド) | タグ間テキストをマッピングします。対象タグは上位のEDM_TAGエントリおよびEDM_RECORDエントリで指定したタグです。 |
「(b) EDM_TAGエントリ」および「(c) EDM_RECORDエントリ」で説明したように,プロパティ名エントリで指定したタグは,これらの二つのエントリが上位に存在するかどうかで解析のしかたが変わります。上位エントリによる指定タグの解析の違いについて次の表に示します。
表4-23 上位エントリによる指定タグの解析の違い
上位エントリ | 解析結果および説明 |
---|---|
EDM_TAGエントリ有り |
|
EDM_RECORDエントリ有り |
|
両方有り |
|
両方なし |
|
このエントリはマッピング先クラス用セクションとマッピング先VariableArray型プロパティ用セクションで記述できます。マッピング先VariableArray型プロパティ用セクションでは,EDM_RECORDエントリが上位セクションのEDM_TAGエントリを引き継いでいるので,タグの内容には注意する必要があります。
マッピング先として指定できるプロパティはユーザ追加プロパティだけです。ただし,マッピング対象となる属性にはマッピング元XMLタグ定義(DCD)によってデータ型が設定されているので,プロパティと属性のデータ型の組み合わせによってはマッピングできない場合があります。マッピングできるデータ型の組み合わせを次の表に示します。
表4-24 マッピングできるデータ型の組み合わせ
プロパティのデータ型 | マッピング対象のマッピング元XMLタグ定義(DCD)データ型 |
---|---|
DMA_DATATYPE_INTEGER32 | string,number,int,fixed,decimal,i1,i2,i4,ui1,ui2,ui4,fixed14.4(値が整数値を表す文字列であること) |
DMA_DATATYPE_BOOLEAN | 同上(ただし値が'0'または'1'であること) |
DMA_DATATYPE_STRING | entity,entities,bin.hex,bin.base64以外の型 |
指定内容を次に示します。
(e) VariableArray型プロパティ名エントリ
マッピング先VariableArray型プロパティのマッピング内容を記述するセクションのセクション名を定義するエントリです。マッピング先クラス用セクション内だけで記述できます。指定内容を次に示します。
(3) コメントの文法
「;」(セミコロン)で始まる行はコメント行として扱われます。