XML_SPLIT
このアクティビティは、XMLドキュメントを指定のエレメント名の箇所で複数のドキュメントに分割します。これに関する特別な制限や警告は以下に記述されています。
ほとんどのXMLドキュメント処理ルーチンにおいて、このアプローチは必要ないので推奨されません。 このアクティビティは基本的に、メモリの制限により一度に処理することができない、格別大きなXMLドキュメントを扱う場合などに使用されます。 格別大きなXMLファイルは、このアクティビティで処理するとしても長い時間がかかります。このアクティビティに頼るソリューションを設計する前に、ユーザーの実行環境でファイルのパフォーマンスを検証してください。
このアクティビティを最適化するため、ソースのXMLドキュメントは関連のスキーマやDTDへの参照なしに処理されます。 このアクティビティにより作成された分割ドキュメントは
(*)XMLでなければなりません。(ソースのXMLドキュメントが整形式であることが前提です) ただし、分割されたドキュメントがソース・ドキュメントのスキーマやDTDへの参照が (*)保障はありません。 また、ソース・ドキュメントの構造や指定の分割エレメントにより、ソース・ドキュメントで使用可能な全てのデータが常に含まれるとは限りません。(*)ここでは、"整形式"と"妥当な"XMLドキュメントの違いを理解しているとの前提で記述されています。 この違いが不明な場合は、適切なXMLの参考文献を参照してください。
更にXMLは無限の種類のドキュメント構造を代表できることを理解しておいてください。 このアクティビティは、ユーザーが意図する、または期待する形に全てのソース・ドキュメントを分割できるわけではありません。 このアクティビティを使いやすく、しかも起こりうるシナリオにできるだけ対応できるように、このアクティビティでは、ドキュメントの分割方法やドキュメント分割時にどの先行データを保持・複製するかは、ある一定の仮定に基づき決定されています。 このアクティビティに頼るソリューションを設計する前に使用する予定のXML文書の代表的なサンプルで充分なテストを行ってください。
更に次のような制限や警告にも注意してください。
- ソースXMLドキュメント(DTDの参照をするXMLドキュメント)のDOCTYPEは分割ドキュメントに出力されません。
- XMLドキュメントの他の特定の部分、特にCDATAセクションも同様に分割ドキュメントに出力されません。
- ソースXMLドキュメントの余白(ライン・フィードやキャリッジ・リターンを含む)は分割ドキュメントでは失われます。 多くの場合、これによりXMLを認識しないテキスト・エディタやビューアでは読めなくなるだけです。
- 最後に、XML_SPLITアクティビティはソースXMLドキュメント内の他のデータの集合体を代表するXMLエレメントや属性値を修正することはできませんし、修正しません。 例えば、<ORDERS>エレメントにその中に含まれる受注行の集合体を代表する値が含まれる場合(例えば受注行の行数や受注量や値の合計など)、このデータはその<ORDERS>エレメントから生じる全ての分割ドキュメント内で通知なしに繰り返されます。
出力分割ドキュメントのパスと名前は、XMLSPLITPATH とXMLSPLITROOTパラメータで指定された値、または仮定された値に基づき生成されます。 生成された名前のドキュメントがターゲットの位置に存在する場合は、このアクティビティにより置換されます。
INPUTパラメータ:
XMLFILE: 必須
このパラメータで、分割するXMLドキュメント・ファイルのパスと名前を指定します。
XMLSPLITELEMENT : 任意
ソースXMLドキュメントを分割するXMLエレメントの名前を指定します。 指定がない場合、省略値の*FIRSTとみなされます。 *FIRST はルート・エレメントの中の(ルート・エレメントではありません)の最初のXMLエレメント名が分割エレメント名として使用されることを意味します。
エレメント名の比較は、便宜上大文字・小文字の区別なしに行われることに注意してください。 (XMLの厳密な意味で言うと、XMLエレメント名は大文字・小文字の区別をするので、これは曖昧になる可能性があります。) 更に装飾されていないエレメント名も比較に利用されます。つまり名前空間の修飾子も全て除外されます。
指定の名前に一致する(そして同名のエレメントの別のインスタンスに含まれない)エレメント(ルート・エレメント以外)のそれぞれのインスタンスは、XMLSPLITELEMENTSMAXパラメータに指定した値により、新しい分割XMLドキュメントを作ることができます。 分割ドキュメントには、それぞれ次のようなXML構造が含まれます。
- 分割エレメントの全ての先行エレメントおよびそれらを含む全ての先行エレメント
- 先行の兄弟エレメント。例:同じ親エレメンントを持つエレメント(分割エレメントの先行インスタンス以外)
- 分割エレメントのインスタンスおよびそれらを含む全てのエレメント
XMLSPLITELEMENTSMAX : 任意
このパラメータには、1つの分割ドキュメントで分割されるエレメント・インスタンスの最大数を指定します。 指定がない場合、省略値の1とみなされます。 このアクティビティは、このパラメータに指定された数までの分割エレメントの"兄弟"のインスタンスを同じ分割ドキュメント内に配置します。 親エレメントが閉じられると、最大数に達しているいないに関係なく、分割ドキュメントは閉じられます。 更に分割エレメントのインスタンスがある場合、別の分割ドキュメントが開始され、カウントは1からスタートします。
XMLSPLITPATH : 任意
このパラメータには、分割XMLドキュメント・ファイルを作成するパスを指定します。 指定がない場合、省略値の*SAMEとみなされます。 *SAMEは、分割XMLドキュメント・ファイルが入力のXMLドキュメント・ファイルと同じ場所に作成されることを意味します。
XMLSPLITROOT : 任意
このパラメータには、分割XMLドキュメント・ファイルのルート・ファイル名とファイル拡張子を指定できます。 指定がない場合、省略値の*SAMEとみなされます。 *SAMEは、このアクティビティが、入力XMLドキュメント・ファイルのファイル名と拡張子を、分割XMLドキュメント・ファイルのルート・ファイル名とファイル拡張子として使用することを意味します。 このアクティビティは、ルートファイル名に順序番号を付け加えて、それぞれの分割XMLドキュメント・ファイル名を作成します。 例えば、このパラメータの値として'ORDER.xml'を指定して、入力ファイルが3つのXMLドキュメント・ファイルに分割されたとすると、'ORDER1.xml'、'ORDER2.xml'、'ORDER3.xml'という名前になります。
XMLSPLITNOTRACE : 任意
このアクティビティはLANSA IntegratorのXMLReaderServiceとXMLWriterServiceを利用します。 このアクティビティは通常はかなり大きなXMLファイルの処理に使われるため、これらのサービスが特に大きなLANSA Integratorトレース・ファイルを生成する可能性があります。 多くのアクティビティよりも大きいので、実行時にLANSA Integratorのトレースを無効にすると、アクティビティが著しく改善されます。 指定がない場合、このパラメータの省略値はLANSA Integratorのトレースをオフにします。
LANSA Integratorのトレースを使用したい場合は、このパラメータに'NO'を指定します。 これは、設計時やテスト時など比較的小さいサンプルの入力XMLファイルを使用する時のみ使用するようにしてください。 ただし、これが必ずしもトレースを有効にする訳ではないことに注意してください。LANSA Composerの
の影響を受けるようになるだけです。OUTPUTパラメータ:
XMLSPLITCOUNT:
正常に完了すると、このパラメータには作成された分割ドキュメントの数が含まれます。
XMLSPLITLIST:
正常に完了すると、このパラメータには作成された分割ドキュメントのフル・パスのリストが含まれます。