ノードの追加

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

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

ノードの追加

[ノードの追加アクション] は1つ以上の新しいノードを、ノードの追加設定の XPath 式で選択されたノードの最初または最後の子 (ノードのセット) として、追加します。追加されたノードは単一ノード、ノードのシーケンス、ツリー全体のフラグメントであることができます。これらの追加されたノードは、 XQuery の XML コンストラクターを使用して構築されます。次の 7 つすべての XML ノードの型はこの XQuery 構文を用いて構築されることができます: 要素、属性、テキスト、ドキュメント、コメント、処理命令、および名前空間。

MTDAppendNode01

メモ:[ノードの挿入][ノードの追加] の違いは、 [ノードの挿入] はノードを選択されたノードの前に追加し、 [ノードの追加] はノードを選択されたノードの (最初または最後の) 子ノードとして追加します。

 

 

追加されたノードの場所

新しいノードは、この設定の XPath 式 (ノードの前に挿入) により返されたノードに最初または最後の子ノードとして追加されます。上のスクリーンショットでは、新しいノードはコンテキストノード、(XPath 式 current()により選択された) Products 要素 の最後の子ノードとして追加されています。新しいノードが最初または最後の子ノードとして追加されるかは、アクションの定義の適切なラジオ ボタンを選択してください。

 

 

新規ノード

上のスクリーンショットに表示されるように、新規ノードは直接 XML コンストラクタとして挿入されることができます:

<MyElement-01 myatt="value">Element Content</MyElement-01>

 

これにより、下のスクリーンショットに表示されるように、 MyElement-01 要素を 最後の Product 要素の後に挿入します。

MTDAppendNode02

XPath ロケーター式を使用して、ページのページソースからノード (とその全ての子孫) を挿入することができます。例えば:

$XML2/Row

 

 

XQuery の計算されたノードコンストラクタも使用することができます。例えば:

element MyElement-01 {xs:string("Element Content")}

attribute myatt{"value"} 

 

下の XPath 式は、下のスクリーンショットに表示されるとおり、 Products 要素の最後の子ノードとしてとして追加された出力、すなわち、最後の現在の子ノード (最後の Product ノード) を作成します。

 

<MyElement-01 myatt="value">Element Content</MyElement-01>,

element MyElement-02 {"Element Content"},

element MyElement-03 {element MyElement-04 {"Element Content"}},

element MyElement-05{attribute myatt{"value"}, element MyElement-06{}} 

MTDAppendNode03

 

追加されたノードを元の場所から削除する

追加されたノードがプロジェクトのページソースから取得された場合、追加されたノードの削除を現在の場所のチェックボックスを選択してノードを元の場所から削除することができます。新しいノードが直接構成される場合、つまりプロジェクトのページソースを参照しないで構成される場合、このオプションの選択はページソースに影響を与えません。

 

現在の場所から追加されたノードを削除するオプションの使用のよい例は、ノードの保管です。以下の構造を持つツリーがあるとします: $XML1/products/product/@name。 ノードを @name の値をもとに並べ替えるとします。下のスクリーンショットに表示されるように、ノードの追加定義を使用して行うことができます。

MTDAppendNodeRemoveOriginal

$XML1/products ノードの最後の子として新しいノードを追加します。
XPath 式を使用して新しいノードが生成されます: for $i in $XML1/products/product order by $i/@name return $i。order by 句は、 product アイテムのシーケンスを反復する前に並べ替えます。
現在の場所から追加されたノードを削除するオプションは、もとの並べ替えられていない製品のシーケンスを削除します。追加され、並べ替えられたシーケンスは維持されます。

 

$MT_TargetNode 変数

子ノードの追加の前にターゲットされた、ノードの追加の定義のノードは、自動的に MobileTogether Designer に内蔵された $MT_TargetNode 変数に保存されます。この変数は、下のスクリーンショットで表示されるように、定義の第 2 の XPath 式に使用することができます。

MTDAppendNode04

第 2 の XPath 式は、ターゲットノード ($MT_TargetNode) を使用して、ターゲット ノードの最後の子要素を検索し、その子要素の名前を使用して新しい要素の名前を作成するために使用します。

element {concat("MyNew"name($MT_TargetNode/*[last()]))} {"Element Content"} 

 

(ターゲットノードが $XML1/Products の場合、) 上に定義される [ノードの追加 アクション] の結果は、下のスクリーンショットに表示されています。

MTDAppendNode05

 


(C) 2019 Altova GmbH