目次

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. カスタムスクリプトコンポーネント

ユーザーガイド

ユーザーガイド

XMLストリーマ

XMLストリーマ

XmlStreamer
コンポーネントは、大きなXMLドキュメントを小さな複数のセグメントに分割します。
XmlStreamer
は、XMLソースをヘッダ、ボディ、およびフッタのセグメントに分けます。ボディセグメントは、繰り返し要素または繰り返しがない要素を含むことができます。
XmlStreamer
は、各XMLセグメントを適切なトランスフォーメーション(通常はマッパーまたはシリアライザ)に渡すことができます。
構造化されたXML入力に起因する違いがいくつかありますが、
XmlStreamer
の機能は
Streamer
とよく似ています。次に主な機能を示します。
  • ボディセグメントはXML要素として定義されます。ボディは、同じタイプまたは異なるタイプの複数の要素を任意の順番に指定して構成できます。
  • ヘッダは、最初のボディセグメントの前に配置される一式のXML部分として定義されます。
    XmlStreamer
    設定では、ヘッダを構成する要素を定義する必要はありません。
  • フッタは、最後のボディセグメントの後に配置される一式のXML部分として定義されます。
    XmlStreamer
    設定では、フッタを構成する要素を定義する必要はありません。
  • ヘッダセグメントとフッタセグメントは、整形式のXMLでないことが多いです。マッパーまたはシリアライザへセグメントを渡せるようにするために、セグメントを整形式のXMLに変換する変更子コンポーネントを設定できます。
これらの機能を理解するために、次のソースXML構造を考えてみましょう。
<stream> <headerline1>MainHeader</headerline1> <substreams> <substream> <subheaderline1>SubHeader</subheaderline1> <segments> <segment1>Segment1A</segment1> <segment1>Segment1B</segment1> <segment2>Segment2A</segment2> <segment1>Segment1C</segment1> <segment2>Segment2B</segment2> </segments> <subfooterline1>SubFooter</subfooterline1> </substream> <substream>...</substream> <substream>...</substream> </substreams> <footerline1>MainFooter</footerline1> </stream>
この例では、ボディセグメントを
substream
要素として定義すると仮定します。最初の
substream
よりも前に配置されているものはすべてヘッダです。
<stream> <headerline1>MainHeader</headerline1> <substreams>
最後の
substream
よりも後に配置されているものはすべてフッタです。
</substreams> <footerline1>MainFooter</footerline1> </stream>
ヘッダセグメントとフッタセグメントは整形式のXMLではありません。終了タグまたは開始タグを追加して整形式にするための変更子を適用できます。例えば、変更子によってヘッダを次のように変換できます。
<stream> <headerline1>MainHeader</headerline1> <substreams> </substreams> </stream>
XmlStreamer
を設定し、ヘッダセグメント、フッタセグメント、および
substream
セグメントの各インスタンスを、適切なトランスフォーメーション(マッパーやシリアライザなど)に渡すことができます。
ヘッダのセグメント要素は、ボディ要素の処理時に使用できます。ただし、フッタ要素はボディ要素の処理時にはまだ使用できません。フッタ要素は、トランスフォーメーションがボディ要素の読み取りを終えた後にのみ処理されます。
別の方法として、
substream
要素を
segment1
セグメントと
segment2
セグメントに細分し、各セグメントをそれ自体のマッパーまたはシリアライザに送ることもできます。
segment1
segment2
が、不規則に並んでいることに注意してください。
XmlStreamer
は、
segment1
segment2
の順序を無視し、どのような順に現れてもこれらを処理します。
次の図はこのための構成を示しています。スクリプトは、ヘッダ、フッタ、
segment1
、および
segment2
セグメントの個々のシリアライザを定義します。
グローバルレベル XmlStreamer1 = XmlStreamer、レベル2 Header = XmlSegment、レベル3 run_component = HeaderSerializer、レベル2 Footer = XmlSegment、レベル3 run_component = FooterSerializer、レベル2 sub_elements =、レベル3 ComplexXmlSegment >>、レベル4 locator = /stream/*s/substreams/*s/substream、レベル4 sub_elements =、レベル5 SimpleXmlSegment >>、レベル6 locator = /stream/*s/substreams/*s/substream/*s/segments/*s/*s1/segment1、レベル6 run_component = Segment1Serializer、レベル5 SimpleXmlSegment >>、レベル6 locator = /stream/*s/substreams/*s/substream/*s/segments/*s/*s1/segment2、レベル6 run_component = Segment2Serializer、レベル4 ...、レベル3 ...、グローバルレベル HeaderSerializer = Serializer()、グローバルレベル FooterSerializer = Serializer()、グローバルレベル Segment1Serializer = Serializer()、グローバルレベル Segment2Serializer = Serializer()
この例で、ボディ要素の前にフッタ実行コンポーネントがあっても、フッタ要素は、トランスフォーメーションがボディ要素の読み取りを終えた後にのみ処理されます。
さらに詳しくするために、各サブストリーム要素内にネストされたヘッダとフッタのトランスフォーメーションを定義することができます。