Node(s) ersetzen

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

Startseite >  Aktionen > Daten aktualisieren >

Node(s) ersetzen

Wenn die Aktion ausgelöst wird, geschieht Folgendes:

 

1.Das durch den Subnode(s)-XPath-Ausdruck definierte Nodeset wird, falls vorhanden, aus dem in der Einstellung Ziel-Node definierten Ziel-Node gelöscht.
2.Das durch den Subnode(s)-XPath-Ausdruck definierte Nodeset wird aus einem (in der Einstellung Parent von Quell-Node(s) definierten) Quell-Node in den Ziel-Node kopiert. Das Nodeset kann entweder als erstes oder letztes Child des Ziel-Node angehängt werden.

 

Der XPath-Ausdruck der Einstellung Subnode(s) wird für Quelle und Ziel separat ausgewertet: d.h. er wird im Kontext des als Quell-Node bzw. im Kontext des als Ziel-Node definierten Node ausgewertet.

 

Bei der Aktion "Node(s) ersetzen" handelt es sich im Grunde um eine Kombination aus den zwei Aktionen Node(s) löschen und Node(s) anhängen.

 

 

Beispiele

Unten finden Sie zwei Beispiele zur Aktion "Node(s) ersetzen".

 

Einfache Ersetzung

Betrachten Sie die Struktur der beiden im Fenster "Seitenquellen" unten gezeigten XML-Strukturen.

 

$XML1/ArticleOriginal hat ein Child-Element namens Body.
$XML2/ArticleCopy hat die Child-Elemente Header, Intro und Body (in dieser Reihenfolge)

MTActionReplaceNodeEx01a

Durch Verwendung der Aktion "Node ersetzen" wie in der Abbildung unten gezeigt, können wir das Element Body von ArticleCopy durch das Element Body von ArticleOriginal ersetzen.

MTActionReplaceNodeEx01Action

Die Aktion hängt einen Subnode namens Body als letztes Child aus einem Quell-Node namens ArticleOriginal an einen Ziel-Node namens ArticleCopy an. In der Abbildung unten sehen Sie die Seitenquellen während einer Simulation nach Ausführung der Aktion. Beachten Sie, dass das Body-Element von ArticleCopy durch das Body-Element von ArticleOriginal ersetzt wurde.

MTActionReplaceNodeEx01Sim

Beachten Sie, dass Header und Intro unverändert geblieben sind, während Body ersetzt wurde. Hätte ArticleCopy kein Body-Element, würde ein neues Body-Element angehängt.

 

Der (in der Einstellung Subnode(s) definierte) XPath-Ausdruck Body wird im Kontext des Quell-Node- bzw. des Ziel-Node-XPath-Ausdrucks ausgewertet, um (i) das zu kopierende Quell-Nodeset zu finden und (ii) das Nodeset, aus dem gelöscht und an das angehängt werden soll, zu suchen.

 

Ersetzen der gesamten Substruktur

 

In der Abbildung unten sehen Sie die Einstellungen, um ein ganzes Nodeset aus einem Quell-Node an einen anderen Ziel-Node anzuhängen. Alle untergeordneten Elemente des Quell-Nodes $XML1/office/usa werden zusammen mit ihren Attributen an $XML2/offices/office[@id="usa"] angehängt.

 

MTActionReplaceNode

 

Die genaue Reihenfolge der Aktionen ist die Folgende:

 

1.Der Subnode(s)-XPath-Ausdruck *, @* ermittelt alle untergeordneten Elemente des Ziel-Node $XML2/offices/office[@id="usa"] und löscht sie.
2.Der Subnode(s)-XPath-Ausdruck *, @* ermittelt alle untergeordneten Elemente des Quell-Node $XML1/office/usa und kopiert diese als einzigen Nodeset-Body in den Ziel-Node $XML2/offices/office[@id="usa"]. Da alle Child-Elemente des Ziel-Node gelöscht wurden, werden die vorherigen untergeordneten Elemente des Ziel-Node alle durch den neuen Subnode ersetzt.

 


© 2019 Altova GmbH