目次

Search

  1. はじめに
  2. データトランスフォーメーションについて
  3. データプロセッサトランスフォーメーション
  4. ウィザードの入力形式および出力形式
  5. リレーショナル入力とリレーショナル出力
  6. IntelliScriptエディタの使用
  7. XMap
  8. ライブラリ
  9. スキーマオブジェクト
  10. コマンドラインインタフェース
  11. スクリプト
  12. パーサー
  13. スクリプトポート
  14. ドキュメントプロセッサ
  15. 形式
  16. データホルダ
  17. アンカー
  18. トランスフォーマ
  19. アクション
  20. シリアライザ
  21. マッパー
  22. ロケータ、キー、インデックス
  23. ストリーマ
  24. バリデータ、通知、およびエラーの取扱い
  25. 検証ルール
  26. カスタムスクリプトコンポーネント

ユーザーガイド

ユーザーガイド

複数オカレンスデータホルダ

複数オカレンスデータホルダ

スキーマでは、
maxOccurs
属性を使用して、XMLドキュメントで兄弟要素を使用できる最大回数を設定することができます。同様に、1回または複数回使用できる変数を定義することもできます。1回しか出現しない要素または変数を単一オカレンス データホルダといいます。複数回出現する要素または変数を複数オカレンスデータホルダといいます。
単一オカレンスデータホルダと複数オカレンスデータホルダは、スクリプトがそれぞれにデータを保存するとき(例えば
Content
アンカーをデータホルダにマッピングするとき)に、異なる動作をします。
  • 単一オカレンスデータホルダでは、各割り当てが前回の割り当てを上書きます。
  • 複数オカレンスデータホルダでは、各割り当てによりデータホルダの新しいオカレンスが生成されます。
この動作を理解するために、スキーマで
<FirstName>
というXML要素を定義する場合を考えます。
maxOccurs = 1
の場合、これは単一オカレンスデータホルダになります。パーサーが複数の
Content
アンカーを
<FirstName>
要素にマッピングしても、出力には最後のマッピングしか含まれません。
次のようなファーストネームのリストであるソースドキュメントを解析する場合について考えてみます。
Jack Jennie Larissa
それぞれの名前は
FirstName
にマッピングされた
Content
アンカーであると仮定します。それぞれの名前で、
FirstName
の値が上書きされます。出力には次のマッピングだけが含まれます。
<FirstName>Larissa</FirstName>
次に、
maxOccurs = unbounded
の場合を考えます。この場合、
FirstName
は複数オカレンスデータホルダになります。複数の
Content
アンカーを要素にマッピングすると、パーサーは名前のリストを生成します。出力は次のようになります。
<FirstName>Jack</FirstName> <FirstName>Jennie</FirstName> <FirstName>Larissa</FirstName>
これと同じ原理が変数にも当てはまります。複数のアンカーを複数オカレンス変数にマッピングすると、各アンカーで変数の新しいオカレンスが生成されます。例えばこの機能を使用して、オカレンスを連結する
AppendListItems
アクションと
CombineValues
アクションの入力を準備することができます。
ここで説明した動作は、複数オカレンスデータホルダに単純データ型があると仮定した場合の動作です。特定の状況では、タイプが複合タイプの場合、各アンカーは新しいオカレンスを生成しない可能性があります。この動作はロケータを使用して制御することができます。詳細については、ロケータ、キー、インデックスの概要を参照してください。