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.
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 soll(en), 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.
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{}}
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.
•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.
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.
MobileTogether-Erweiterungsfunktionen
MobileTogether enthält eine Reihe von XPath-Erweiterungsfunktionen, die speziell für die Verwendung in MobileTogether-Designs erstellt wurden. Einige davon können bei bestimmten Aktionen sehr nützlich sein. So erhalten Sie etwa mit mt-available-languages() die Sprachen, in denen die Lösung zur Verfügung steht. Diese Funktion könnte z.B. mit der Aktion Meldungsfeld verwendet werden. Wenn eine Funktion für diese Aktion besonders relevant ist, ist sie unten aufgelistet. Eine vollständige Liste aller Erweiterungsfunktionen und mit Beschreibungen finden Sie im Kapitel MobileTogether-Erweiterungsfunktionen.