Node(s) anhängen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Aktionen > Daten aktualisieren >

Node(s) anhängen

Die Aktion "Node(s) anhängen" hängt einen oder mehrere Nodes als erstes oder letztes Child (Child-Node-Gruppe) des vom XPath-Ausdruck für die Einstellung An Node anhängen ausgewählten Node(s) an. Dabei kann es sich um einen einzelnen Node, eine Sequenz von Nodes oder ein gesamtes Strukturfragment handeln. Diese angehängten Nodes werden mit Hilfe der XML-Konstruktorsyntax von XQuery erstellt. Mit der XQuery-Syntax können alle sieben XML-Nodearten erstellt werden: Elemente, Attribute, Text, Dokument, Comment, Processing Instruction und Namespace.

MTDAppendNode01

Anmerkung:Der Unterschied zwischen Node(s) einfügen und Node(s) anhängen ist, dass der/die Node(s) mit Node(s) einfügen vor dem/den ausgewählten Node(s) hinzugefügt wird/werden, während der/die Node(s) mit Node(s) anhängen) als (erster oder letzter) Child-Node des/der ausgewählten Node(s) hinzugefügt wird/werden.

 

Position des/der angehängten Node(s)

Der/die neue(n) Node(s) werden als erste oder letzte Child-Nodes des/der vom XPath-Ausdruck für diese Einstellung (An Node anhängen) zurückgegebenen Node(s) angehängt. In der Abbildung oben werden die neuen Nodes als die letzten Child-Nodes des (mit dem XPath-Ausdruck current() ausgewählten) Kontext-Node Products angehängt. Um auszuwählen, ob der/die neue(n) Node(s) als erste oder letzte Child-Nodes angehängt werden sollen, aktivieren Sie in der Aktionsdefinition das entsprechende Optionsfeld.

 

Neue Nodes

Neue Nodes können wie in der Abbildung oben als direkte XML-Konstruktoren eingegeben werden:

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

 

Damit wird das Element MyElement-01, wie in der Abbildung unten gezeigt, nach dem letzten Product Element angehängt.

MTDAppendNode02

Sie können auch einen XPath Locator-Ausdruck verwenden, um eine Node (und alle seine Nachfahren) aus einer Seitenquelle auf der Seite anzuhängen. Beispiel:

$XML2/Row

 

 

Auch die XQuery-Konstruktoren für berechnete Nodes können verwendet werden. Beispiel:

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

attribute myatt{"value"} 

 

Der XPath-Ausdruck unten erzeugt das in der Abbildung unten gezeigte Ergebnis, das als die letzten Child-Nodes des Elements Products, also nach dem letzten aktuellen Child-Node (dem letzten Product-Node), angehängt wird.

 

<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

 

Entfernen angehängter Nodes von ihrer ursprünglichen Stelle

Wenn der/die angehängte(n) Node(s) aus einer der Seitenquellen des Projekts stammen, können Sie den/die Node(s) von der Originalposition löschen, indem Sie das Kontrollkästchen angehängte(n) Node(s) von der aktuellen Stelle entfernen aktivieren. Wenn neue Nodes direkt erstellt werden - also ohne Referenz auf die Seitenquellen des Projekts - so hat das Aktivieren dieser Option keine Auswirkung auf die Seitenquellen.

 

Ein gutes Beispiel für die Verwendung der Option Angehängte(n) Node(s) von der aktuellen Stelle entfernen ist das Sortieren von Nodes. Angenommen, Sie haben die folgende Struktur: $XML1/products/product/@name. Wir wollen die product Nodes auf Basis ihrer @name-Werte sortieren. Diese lässt sich mit der in der Abbildung unten gezeigten "Node(s) anhängen"-Definition bewerkstelligen.

MTDAppendNodeRemoveOriginal

Wir hängen einen neuen Node als letztes Child an den Node $XML1/products an.
Die neuen Nodes werden mit dem XPath-Ausdruck: for $i in $XML1/products/product order by $i/@name return $i generiert. Die order by Klausel sortiert die Sequenz der product-Elemente, bevor sie darüber iteriert.
Mit der Option angehängte(n) Node(s) von der aktuellen Stelle entfernen wird die ursprüngliche nicht sortierte Produktsequenz entfernt, sodass die geordnete von uns angehängte Sequenz übrig bleibt.

 

Die Variable $MT_TargetNode

Der Node in der Node(s) anhängen-Definition, in dem Child Node(s) angehängt werden sollen, wird automatisch in der vordefinierten MobileTogether Designer-Variablen $MT_TargetNode. gespeichert. Diese Variable kann anschließend, wie in der Abbildung unten gezeigt, im zweiten XPath-Ausdruck der Definition verwendet werden.

MTDAppendNode04

Der zweite XPath-Ausdruck sucht anhand des Ziel-Node ($MT_TargetNode) das letzte Child-Element des Ziel-Node und erstellt anschließend anhand des Namens dieses Child-Elements den Namen des neuen Elements.

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

 

Das Ergebnis der oben definierten Aktion "Node(s) anhängen" (wenn der Ziel-Node $XML1/Products ist)sehen Sie in der Abbildung unten.

MTDAppendNode05

 


© 2019 Altova GmbH