Schleife
Die Aktion "Schleife" (siehe Abbildung unten) iteriert über eine Sequenz von Datenelementen, die Sie mit Hilfe der For Each-Einstellung definieren. Sie können innerhalb der Schleife eine Gruppe von Aktionen definieren, die in jeder Iteration ausgeführt werden soll. So wird z.B. in der Abbildung unten für jede Iteration eine An Node anhängen-Aktion ausgeführt. Außerdem ist innerhalb der Schleife eine Schleife abbrechen-Aktion definiert, wenn eine bestimmte Bedingung erfüllt wird.
Die Sequenz, über die die Schleife iteriert, wird durch die XPath-Ausdrücke der For Each--Einstellung definiert. Die wichtigsten Punkte, die zu beachten sind:
•For Each: Hierbei kann es sich um eine im XPath-Ausdruck genannte Sequenz (z.B: 1 bis 7) oder um eine Sequenz aus einer XML-Struktur handeln (z.B. wird mit: $XML1/Products/Product eine Sequenz aller Product-Elemente in der Struktur $XML1 ausgewählt; siehe Abbildung oben). Wenn die Schleife keine Schleife abbrechen-Aktion enthält, so wird die Schleife beendet, wenn alle Iterationen abgeschlossen sind.
•Schleifenvariable: Die Schleifenvariable ist die Variable, die das Datenelement der Sequenz, über die gerade iteriert wird, enthält. Die Schleifenvariable wird durch einen Namen bezeichnet, den Sie durch Doppelklick hinter das $-Zeichen und anschließende Eingabe des Namens definieren. In der Abbildung oben wurde die Schleifenvariable MyLoop genannt. Sie wird wie jede andere XPath-Variable durch ein $-Zeichen vor dem Namen ($MyLoop) referenziert. Die Variable befindet sich innerhalb der Schleife in Ihrem Gültigkeitsbereich, d.h. Sie können die Variable in einem XPath-Ausdruck, der sich außerhalb der Schleife befindet, nicht referenzieren. In der Abbildung oben wird die Schleifenvariable in der Einstellung Neuer Node der Aktion "An Node anhängen" referenziert. Dies ist eine gültige Referenz, da die Aktion "An Node anhängen" innerhalb der Schleife erstellt wurde; die Variable befindet sich daher an dieser Stelle im Gültigkeitsbereich. Die Variable $MyLoop in der Abbildung oben wird den Product-Node, über den gerade iteriert wird, enthalten.
Anmerkung: | Wenn in einer Schleifenvariable Nodes aus einer Seitenquellstruktur verwendet werden, wird diese Struktur gesperrt und kann von den Aktionen innerhalb der Aktion "Schleife" nicht geändert werden. In unserem Beispiel oben wird die Struktur $XML1 während der Verarbeitung der Schleife gesperrt. Die Änderungen erfolgen in einer anderen Seitenquellstruktur ($XML2): Die neuen Nodes, die mit der Aktion An Node anhängen hinzugefügt werden, werden zu ($XML2) hinzugefügt. Wenn Sie die Struktur, über die gerade iteriert wird, ändern möchten, tun Sie dies folgendermaßen: Anstatt direkt über die Nodes der Struktur zu iterieren, iterieren Sie über eine Zahlensequenz, die mit der Node-Sequenz in der Baumstruktur verknüpft ist. Anstatt also z.B. über die Sequenz von Product Nodes im Beispiel in der Abbildung oben zu iterieren, können wir über einen Zahlenbereich iterieren, der mit der Node-Sequenz verknüpft ist. Der XPath-Ausdruck der For Each-Einstellung kann von $XML1/Products/Product in for $i in 1 to count($XML1/Products/Product) return $i geändert werden. Beim Bereich, über den nun iteriert wird, handelt es sich um eine Zahlensequenz. (Der aktuelle Product Node in der Schleife kann mit dem XPath-Ausdruck: $XML1/Products/Product[$i] aufgerufen werden). |
Mit den in der Abbildung oben definierten Aktionen werden die ersten fünf Product-Elemente in einer anderen Struktur dupliziert. Wenn die Seite geladen wird, iteriert die Aktion "Schleife" über die $XML1/Products/Product-Elemente. Der aktuelle Produkt-Node wird während jeder Iteration in der Variablen MyLoop gespeichert. Dieser Product-Node (in der Variablen $MyLoop) wird anschließend als das letzte Child des $XML2/Products-Node hinzugefügt. Die Schleife wird fortgesetzt, bis das letzte Product-Element aus $XML1/Products in $XML2/Products kopiert wurde. Siehe Abbildung unten.
Die Schleife wird beendet, wenn entweder alle Iterationen fertig verarbeitet wurden oder wenn eine Bedingung definiert ist, unter der eine Schleife abbrechen-Aktion ausgeführt wird (siehe nächstes Kapitel).
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.