ノードの置換

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  アクション > データの更新 >

ノードの置換

アクションがトリガーされると、以下が発生します:

 

1.サブノード XPath 式により指定されているノードセットは、(ターゲットノード 設定内で設定される)ターゲットノードから削除されます。
2.サブノード XPath 式により指定されているノードセットは、 (ソース ノード 設定内で設定される)ソースノードからターゲットノードにコピーされます。ノードセットはターゲットノードの最初の子、または、最後の子として追加することができます。

 

サブノード 設定の XPath 式はソースとターゲットのために個別に評価されます: コンテキスト内では、それぞれ ソース ノードとして指定されているノード、および、ターゲットノードとして指定されているノードです。

 

ノードの置換 アクションはアクション ノードの削除ノードの追加の2つのアクションの組合せです。

 

サンプル

以下のサンプルはノードの置換 アクションの作動をデモします。

 

サンプルの置換

下に表示されているページソースペイン内で表示されている2つの XML ツリーの構造を考慮してください。

 

$XML1/ArticleOriginal には、 Body という名前の子要素が存在します。
$XML2/ArticleCopy には、 HeaderIntroBody の順序でという名前の子要素が存在します。

MTActionReplaceNodeEx01a

下のスクリーンショットで示されるように、置換えノードアクションを使用して ArticleCopyBody 要素を ArticleOriginal の Body 要素と置き換えることができます。

MTActionReplaceNodeEx01Action

アクションは Body という名前のサブノードをと ArticleOriginal いう名前のソース ノードから最後の子として、 ArticleCopy という名前のターゲットノードに追加します。下のスクリーンショットは、アクション実行後のシミュレーション中のページソースを表示しています。 ArticleCopyBody 要素は ArticleOriginal Body 要素と置き換えられます。

MTActionReplaceNodeEx01Sim

HeaderIntro は影響を受けていませんが、Body は置換えらていません。 ArticleCopyBody 要素が存在しない場合、新規の Body 要素が追加されるはずです。

 

(サブノード 設定内で設定済みの) XPath 式 Body  は、ソース ノードターゲット ノード XPath 式のコンテキストで評価されます (i) コピーする ソース ノードセットをロケート、 (ii) 削除するノードと追加するノードをロケート。

 

 

サブツリー全体の置換

下のスクリーンショットは、(ソース) ノードから(ターゲット) ノードへノードセット全体を追加するために必要な設定を表示しています。ソース ノード $XML1/office/usa の全ての子要素は、属性と共に ターゲットノード $XML2/offices/office[@id="usa"]に追加されます。

MTActionReplaceNode

アクションのシーケンスは、以下のとおりです:

 

1.サブノード XPath 式 *, @* は、ターゲットノード $XML2/offices/office[@id="usa"] の全ての子要素をロケートし、 削除します。
2.サブノード XPath 式 *, @* は、 ソース ノード $XML1/office/usa のすべての子孫要素をロケートし、単一のノードセットとして、ターゲットノード $XML2/offices/office[@id="usa"]のボディにコピーします。ターゲットノードの子要素の全ては削除され、新規のサブノードがターゲットノードの前の子孫を置き換えます。

 


(C) 2019 Altova GmbH