アクションがトリガーされると、以下が発生します:
1.サブノード XPath 式により指定されているノードセットは、(ターゲットノード 設定内で設定される)ターゲットノードから削除されます。
2.サブノード XPath 式により指定されているノードセットは、 (ソース ノード 設定内で設定される)ソースノードからターゲットノードにコピーされます。ノードセットはターゲットノードの最初の子、または、最後の子として追加することができます。
サブノード 設定の XPath 式はソースとターゲットのために個別に評価されます:
コンテキスト内では、それぞれ ソース ノードとして指定されているノード、および、ターゲットノードとして指定されているノードです。ノードの置換 アクションはアクション ノードの削除 と ノードの追加の2つのアクションの組合せです。
以下のサンプルはノードの置換 アクションの作動をデモします。
下に表示されているページソースペイン内で表示されている2つの XML ツリーの構造を考慮してください。
•$XML1/ArticleOriginal には、 Body という名前の子要素が存在します。
•$XML2/ArticleCopy には、 Header、Intro、Body の順序でという名前の子要素が存在します。
下のスクリーンショットで示されるように、置換えノードアクションを使用して ArticleCopy の Body 要素を ArticleOriginal の Body 要素と置き換えることができます。
アクションは Body という名前のサブノードを ArticleOriginal いう名前のソース ノードから最後の子として、 ArticleCopy という名前のターゲットノードに追加します。下のスクリーンショットは、アクション実行後のシミュレーション中のページソースを表示しています。ArticleCopy の Body 要素は ArticleOriginal の Body 要素と置き換えられます。
Header と Intro は影響を受けていませんが、Body は置換えらていません。ArticleCopy に Body 要素が存在しない場合、新規の Body 要素が追加されるはずです。
(サブノード 設定内で設定済みの) XPath 式 Body は、ソース ノード と ターゲット ノード XPath 式のコンテキストで評価されます (i) コピーする ソース ノードセットをロケート、 (ii) 削除するノードと追加するノードをロケート。
下のスクリーンショットは、(ソース) ノードから(ターゲット) ノードへノードセット全体を追加するために必要な設定を表示しています。ソース ノード $XML1/office/usa の全ての子要素は、属性と共に ターゲットノード $XML2/offices/office[@id="usa"]に追加されます。
アクションのシーケンスは、以下のとおりです:
1.サブノード XPath 式 *, @* は、ターゲットノード $XML2/offices/office[@id="usa"] の全ての子要素をロケートし、 削除します。
2.サブノード XPath 式 *, @* は、 ソース ノード $XML1/office/usa のすべての子孫要素をロケートし、単一のノードセットとして、ターゲットノード $XML2/offices/office[@id="usa"]のボディにコピーします。ターゲットノードの子要素の全ては削除され、新規のサブノードがターゲットノードの前の子孫を置き換えます。