繰り返し項目のマッピング
XMLのツリーにおいて、1レコード中に同じ要素が繰り返し出現する場合があるかもしれません。その場合の繰り返し項目のマッピングの方法について説明します。要素の繰り返しは、マッピングによるノードの実体化後に起こるノードの増加によって表されます。
最大ノード数は9999ノードです。それ以上は増加できません。
(1) sequenceの子要素である要素ノード
マッピングしたノード数がその要素ノードの「maxOccurs」の値に達しない場合は、「maxOccurs」の値に達するまで未実体化状態のノードが1つずつ増加します。
さらに、sequence 1セットの要素がすべて実体化した後に、実体化したセット数がsequenceの「maxOccurs」の値に達していなければ、もう1セット未実体化状態のノードが同一階層に増加します。
このノードをマッピングすることでsequence内の次の繰り返しを項目として使用できます。
未実体化状態のsequence 1セットを自動で増加させるかどうかを設定できます。
自動で増加させる場合は、以下の手順で設定してください。
- DataMagic管理画面の上部にある[設定]ボタンをクリック
- 設定画面の[マッピング画面で、XMLのsequence/choice要素を自動で展開する]チェックボックスをオン
[マッピング画面で、XMLのsequence/choice要素を自動で展開する]チェックボックスをオフにしている場合は、
sequenceを右クリックして「次の子要素を展開」を選択することで、未実体化状態のノードを追加できます。
要素ノードについてはこの設定に関係なく、「maxOccurs」の値に達するまで未実体化状態のノードが1つずつ増加します。

画面4.47 増加したsequenceの子要素
(2) choiceの子要素である要素ノード
マッピングしたノード数がその要素ノードの「maxOccurs」の値に達しない場合は、「maxOccurs」の値に達するまで未実体化状態のノードが1つずつ増加します。
さらに、choice 1セットの要素1つが実体化した後に、実体化したセット数がchoiceの「maxOccurs」の値に達していなければ、もう1セット未実体化状態のノードが同一階層に増加します。
このノードをマッピングすることでchoice内の次の繰り返しを項目として使用できます。
未実体化状態のchoice 1セットを自動で増加させるかどうかを設定できます。
自動で増加させる場合は、以下の手順で設定してください。
- DataMagic管理画面の上部にある[設定]ボタンをクリック
- 設定画面の[マッピング画面で、XMLのsequence/choice要素を自動で展開する]チェックボックスをオン
[マッピング画面で、XMLのsequence/choice要素を自動で展開する]チェックボックスをオフにしている場合は、
choiceを右クリックして「次の子要素を展開」を選択することで、未実体化状態のノードを追加できます。
要素ノードについてはこの設定に関係なく、「maxOccurs」の値に達するまで未実体化状態のノードが1つずつ増加します。

画面4.48 増加したchoiceの子要素
(3) allの子要素である要素ノード
allそのものの中で繰り返し項目は定義できません。allが持つ子要素が実体化しても、ノードの増加は発生しません。

画面4.49 増加しないallの子要素
(4) データを無視する
前ページまでの使用方法では、常に繰り返しの1回目をマッピングして出力しないことには、2回目以降の項目のマッピングをできないことになります。1回目を出力せずに2回目の繰り返しだけを出力したい場合は、無視したいノードを選択した状態で右クリックし、コンテキストメニュー内の[データを無視する]をクリックしてください。そのノードは実体化され、次の項目をマッピングできるようになります。
入力側ツリーでのみ指定できます。

画面4.50 コンテキストメニュー(無視する)