付録J.1 カラム定義ファイルの作成
カラム定義ファイルとは,DBアダプタの検索結果のPosition()[変換元列番号]とXMLスキーマの変換先要素名を関連づけるCSV形式のファイルです。
(1) 形式
カラム定義ファイルの形式を次に示します。
変換元列番号,変換先要素名[改行] :
カラム定義ファイルの構文を次に示します。
項目 |
カラム定義ファイルの構文 |
---|---|
カラム定義ファイル |
( 行データ 改行コード )* |
行データ |
空白* [ 変換元列番号 空白* ] [ ',' 空白* 変換先要素名 空白* ] |
改行コード |
'\r\n' | '\r' | '\n' |
空白 |
' ' | '\t' |
変換元列番号 |
('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') + |
変換先要素名 |
( MS932文字 - ( ',' | ':' | 空白 | 改行コード ) )+ |
(2) 定義例
「付録I.1 例題」のデータベースの内容を例に,次のテーブル構成のデータをDBアダプタで取得する場合の,カラム定義ファイルの定義例について説明します。
受注番号(INTEGER) |
得意先コード(CHAR) |
商品コード(CHAR) |
受注個数(INTEGER) |
---|---|---|---|
1 |
AA001 |
0001 |
5 |
2 |
AB002 |
0001 |
1 |
3 |
AA001 |
0102 |
3 |
4 |
XA005 |
0103 |
1 |
5 |
AA001 |
0105 |
1 |
このテーブル構成のデータは,DBアダプタから次のように取得されます。
1 |
2 |
3 |
4 |
---|---|---|---|
1 |
AA001 |
0001 |
5 |
2 |
AB002 |
0001 |
1 |
3 |
AA001 |
0102 |
3 |
4 |
XA005 |
0103 |
1 |
5 |
AA001 |
0105 |
1 |
このように,DBアダプタから取得したデータは,列名をキーにして値を参照できないため,列名が要素名となるフォーマットに変換する必要があります。
そのため,カラム定義ファイルを使用して,DBアダプタから取得されたデータのどの列番号をどの要素名にマッピングするのかを定義します。
カラム定義ファイルの定義例
1,受注番号 2,得意先コード 3,商品コード 4,受注個数
このカラム定義ファイルの1行目は,DBアダプタが1列目のデータを[受注番号]にマッピングすることを表します。
このカラム定義ファイルを使用して自動マッピングすることで,DBアダプタから取得されたデータは次のように変換され,要素名(列名)をキーにして値を参照できるようになります。
受注番号 |
得意先コード |
商品コード |
受注個数 |
---|---|---|---|
1 |
AA001 |
0001 |
5 |
2 |
AB002 |
0001 |
1 |
3 |
AA001 |
0102 |
3 |
4 |
XA005 |
0103 |
1 |
5 |
AA001 |
0105 |
1 |
(3) 注意事項
カラム定義ファイルを作成するときの留意点について説明します。
-
ファイル名および拡張子は任意です。
-
使用できる文字コードはMS932です。
-
変換先要素名は大文字・小文字が区別されます。
-
変換元列番号,変換先要素名,または両方を省略した場合,その行の定義は無視され,警告メッセージが出力されます。
-
変換元列番号の文字列の長さは最大1,024文字です。
-
同一の変換先要素名を重複して定義した場合,先に定義した要素は無視されます。このとき警告メッセージが出力されます。
-
カラム定義ファイルを利用した自動マッピングでは,カラム定義ファイルの変換先要素名だけで評価され,名前空間は区別されません。
例えば,カラム定義ファイルに次のように定義した場合,要素名が「Home:Tel1」「Mobile:Tel1」と重複しているスキーマにマッピングすると,図のように両方の要素にマッピングされます。
カラム定義ファイルの内容
1,Name_Kanji 2,Name_Kana 3,Address 4,Tel1
図J‒1 名前空間が異なる同一要素名がある場合のマッピングの例