# XML形式ファイルからフォーマット形式ファイルへの変換

同じスキーマファイルで表現できる、XML形式入力ファイルのタイプ別に説明します。

スキーマファイルの内容は以下のとおりです。

（この例では内容モデルsequenceを使用しています）

図4.29 スキーマファイル

画面4.11 XML情報ツリー

(1) ルート要素から2階層下の要素が繰り返している場合（出力側：繰り返しあり）

入力ファイルの内容とマッピング情報が以下の場合を例に、「XMLレコード単位」の設定ごとに説明します。

出力側のフォーマット情報は、繰り返しが設定されています。繰り返し分、入力データと出力データのマッピングを行います。

図4.30 入力ファイル

画面4.12 入力側（XML）と出力側（FMT）のマッピング

a) 「XMLレコード単位」が"1"のとき

<root>と</root>の中のデータを1レコードとして扱います。今回の例では、出力項目に<root>と</root>の中の全データが格納され、1レコードとして処理されます。

図4.31 出力ファイル

b) 「XMLレコード単位」が"2"のとき

ルート要素<root>から1階層下の要素を1レコードとして扱います。今回の例では、1階層下の要素は<A>が1つしか存在しないため、<A>と</A>の中のデータがすべて出力項目に格納され、1レコードとして処理されます。

図4.32 出力ファイル

c) 「XMLレコード単位」が"3"のとき

ルート要素<root>から2階層下の要素を1レコードとして扱います。

今回の例では、入力ファイルのデータの上から<A1>→<A2>→<A3>と1レコード目として処理していき、2回目の<A1>は1レコード目ではなく2レコード目として処理されます。これは、マッピング上では2回目の<A1>が出力項目2回目のdataにあるitem1と関係線が結ばれている一方で、「XMLレコード単位」の設定が"3"であるために次のレコードとして処理されるためです。

したがって、以下のような出力結果となります。入力データの出力がない項目には項目タイプのデフォルト値が出力されます。

図4.33 出力ファイル

d) 「XMLレコード単位」が"要素"のとき

抽出条件で設定された要素を基点に、1レコードとして扱います。

今回の例では、「抽出条件の追加」画面で要素Aを抽出条件に設定します。

マッピング画面は、以下のようになります。

画面4.13 入力側（XML）と出力側（FMT）のマッピング

要素Aを基点とした<A1>～<A3>を1レコードとして処理されます。

したがって、以下のような出力結果となります。

図4.34 出力ファイル

(2) ルート要素から2階層下の要素が繰り返している場合（出力側：繰り返しなし）

次に、出力側のフォーマット情報の繰り返しが設定されていない場合です。

マッピング情報を以下のとおりに一部だけ設定した場合について説明します。

入力ファイルは前回と同じファイルを使用します。

画面4.14 マッピング情報

a) 「XMLレコード単位」が"1"のとき

<root>と</root>の中のデータを1レコードとして扱います。今回の例では、出力項目に<root>と</root>の中のデータのうち、関係線が結ばれている最初の<A1>～<A3>の値が格納され、1レコードとして処理されます。マッピングされていない項目のデータは切り捨てられます。

図4.35 出力ファイル

b) 「XMLレコード単位」が"2"のとき

ルート要素<root>から1階層下の要素を1レコードとして扱います。今回の例では、1階層下の要素は<A>が1つしか存在しないため、<A>と</A>の中のデータのうち、関係線が結ばれている最初の<A1>～<A3>の値が出力項目に格納され、1レコードとして処理されます。マッピングされていない項目のデータは切り捨てられます。

図4.36 出力ファイル

c) 「XMLレコード単位」が"3"のとき

ルート要素<root>から2階層下の要素を1レコードとして扱います。

今回の例では、2階層下の要素のうち<A1>～<A3>を1レコードとして処理されます。

図4.37 出力ファイル

d) 「XMLレコード単位」が"要素"のとき

抽出条件で設定された要素を基点に、1レコードとして扱います。

今回の例では、「抽出条件の追加」画面で要素Aを抽出条件に設定します。

マッピング画面は以下のようになります。

画面4.15 マッピング情報

要素Aを基点とした<A1>～<A3>を1レコードとして処理されます。

したがって、以下のような出力結果となります。

図4.38 出力ファイル

(3) ルート要素の直下の要素が繰り返している場合（出力側：繰り返しあり）

入力ファイルの内容とマッピング情報が以下の場合を例に、「XMLレコード単位」の設定ごとに説明します。

出力側のフォーマット情報は、繰り返しが設定されています。繰り返し分、入力データと出力データのマッピングを行います。

図4.39 入力ファイル

画面4.16 マッピング情報

a) 「XMLレコード単位」が"1"のとき

<root>と</root>の中のデータを1レコードとして扱います。今回の例では、出力項目に<root>と</root>の中の全データが格納され、1レコードとして処理されます。

図4.40 出力ファイル

b) 「XMLレコード単位」が"2"のとき

ルート要素<root>から1階層下の要素を1レコードとして扱います。今回の例では、入力ファイルの上から<A>のデータを1レコード目として処理していき、2回目の<A>のデータは1レコード目ではなく2レコード目として処理されます。これは、マッピング上では2回目の<A>のデータが出力項目2回目のdataにあるitem1～3と関係線が結ばれている一方で、「XMLレコード単位」の設定が"2"であるために次のレコードとして処理されるためです。

したがって、以下のような出力結果となります。入力データの出力がない項目には項目タイプのデフォルト値が出力されます。

図4.41 出力ファイル

c) 「XMLレコード単位」が"3"のとき

ルート要素<root>から2階層下の要素を1レコードとして扱います。

今回の例では、ルート要素から1階層下の要素が複数存在しているため、2つ目の<A>が出現した時点でXMLレコード単位整合性エラーとなります。

d) 「XMLレコード単位」が"要素"のとき

抽出条件で設定された要素を基点に、1レコードとして扱います。

今回の例では、「抽出条件の追加」画面で要素Aを抽出条件に設定します。

マッピング画面は以下のようになります。

画面4.17 マッピング情報

要素Aを基点とした<A1>～<A3>を1レコードとして処理されます。

したがって、以下のような出力結果となります。

図4.42 出力ファイル

(4) ルート要素の直下の要素が繰り返している場合（出力側：繰り返しなし）

次に、出力側のフォーマット情報の繰り返しが設定されていない場合です。

マッピング情報を以下のとおりに一部だけ設定した場合について説明します。

入力ファイルは前回と同じファイルを使用します。

画面4.18 マッピング情報

a) 「XMLレコード単位」が"1"のとき

<root>と</root>の中のデータを1レコードとして扱います。今回の例では、出力項目に<root>と</root>の中のデータのうち、関係線が結ばれている最初の<A1>～<A3>の値が格納され、1レコードとして処理されます。マッピングされていない項目のデータは切り捨てられます。

図4.43 出力ファイル

b) 「XMLレコード単位」が"2"のとき

ルート要素<root>から1階層下の要素を1レコードとして扱います。今回の例では、1階層下の要素に<A>が4つ存在するため、<A>のデータを1レコードとして計4レコードが処理されます。

図4.44 出力ファイル

c) 「XMLレコード単位」が"3"のとき

ルート要素<root>から2階層下の要素を1レコードとして扱います。

今回の例では、ルート要素から1階層下の要素が複数存在しているため、2つ目の<A>が出現した時点でXMLレコード単位整合性エラーとなります。

d) 「XMLレコード単位」が"要素"のとき

抽出条件で設定された要素を基点に、1レコードとして扱います。

今回の例では、「抽出条件の追加」画面で要素Aを抽出条件に設定します。

マッピング画面は以下のようになります。

画面4.19 マッピング情報

要素Aを基点とした<A1>～<A3>を1レコードとして処理されます。

したがって、以下のような出力結果となります。

図4.45 出力ファイル