このサイトをビューするために JavaScript を有効化してください。

Altova MobileTogether Designer

ループアクション (下のスクリーンショットを参照) は、For Eachと [以下の条件の場合ループを中断する] 設定を使用して定義するアイテムのシーケンスを反復します。ループ内では、各反復中に実行されるアクションのセットを定義することができます。例えば、下のスクリーンショットの各反復では、ノードの追加 アクションが実行されます。ループ内では ループのブレーク アクションは特定の条件が満たされると指定されます。

MTDLoop

For Each 設定の XPath式により反復されるループのシーケンスは定義されます。注意する重要なポイントは以下の通りです。

 

For Each: XPath 式内で名前が付けられたシーケンスであることができます (例えば: 1 から 7) 内で名前を付けられた、または、) XML ツリー内のツリー要素から取得されたシーケンスであることができます。(例えば:$XML1/Products/Product$XML1 ツリー内の全ての Product 要素のシーケンスを選択します。ループに特定の ループのブレーク アクションが含まれていない場合全てのトランザクションが完了するとループは終了されます。

ループ変数: ループ変数は、現在反復されているシーケンスのアイテムを持つ変数です。ループ変数は、サインの後の最初の $ サインのダブルクリック後し名前を入力する名前により変数は識別されます。上のスクリーンショットでは、ループ変数の名前は MyLoop です。この変数は、名前 ($MyLoop) の前に $サインを持ち、他の XPath 変数と同様参照されます。変数は、ループ内が対象範囲であり、これは、ループの範囲外の XPath 式内の変数を参照することができないことを意味します。上のスクリーンショットでは、ループ変数は、ノードに追加 アクションの 新しいノード 設定で内で参照されています。これは、 ノードに追加 アクションがループ内で作成されており、変数はこのポイントではスコープの範囲内であるため妥当な参照です。この XPath 式は、各反復の前に評価されます。式が true() を評価する場合、ループが実行されます。上のスクリーンショットでは、 XPath 式  Product='' では、最初の空の Product 要素が発生した場合、ループが実行されます。

 

(コンテキストノードは Products です。ですから、相対ロケーターパスは有効です。)[ループを中断する] 設定は、上のスクリーンショットで表示されるように、 [For Each] 設定と共に使用することができます。または、個別に設定することができます。メモ:変数が(ツリーとして既知の)ノードセットを含む場合、このノードセットはロックされループアクション内のアクションにより変更することはできません。上のスクリーンショットでは、新規のノードが ノードに追加 アクションに追加され、他の XML ツリー ($XML2) に追加されます。以下のように反復されるシーケンスを変更することができます: ノードに対して直接反復するかわりに、ノードシーケンスに繋がれている複数のシーケンスに対して反復します。例えば、上のスクリーンショット内の Product ノードのシーケンスに対して反復する代わりに、 ノードシーケンスにつながれている数値の範囲に対して反復することができます。For Each 設定の XPath 式は、 $XML1/Products/Product から for $i in 1 to count($XML1/Products/Product) return $i に変更することができます。これは反復されている数のシーケンスです。(ループ内の現在の Product ノードは XPath 式によりアクセスすることができます: $XML1/Products/Product[$i])。

 

上のスクリーンショットで定義されているアクションは、重複するツリーフラグメントを作成します。ページがロードされると、ループアクションが $XML1/Products/Product 要素に対して反復します。各反復の間、現在の Product ノードは、 MyLoop 変数に保管されます。($MyLoop 変数内の) Product ノードは、 $XML2/Products ノードの最後の子として追加されます。ループは、最後の Product 要素が $XML1/Products から $XML2/Products へコピーされるまで継続されます。下のスクリーンショットを参照してください

MTDLoopDataCopy

ループはすべての反復が完了した場合、または条件が ループのブレーク アクションの実行時に設定されている場合に発生します (次のトピックを参照してください)

 

(C) 2020 Altova GmbH