Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Strukturabbildungen durch Setzen des Kontexts Dokument im Navigationsbaum lokalisieren

In der Voreinstellung ist jedes Feld im Kontext des übergeordneten Feldes:

Diese Grafik wird im zugehörigen Text erklärt

Fix und Foxy sind also im 1.flat-Kontext, Jolly Jumper und Lucky Luke im zweiten und alle vier im 1.street-Kontext. Das erste <street>-Feld befindet sich im 1.city-Kontext, und so weiter...

Angenommen, Sie wollen diese Struktur auf die folgende Liste abbilden, um Personen aus der ersten Stadt und der ersten Straße zu erfassen:

<personList minOccurs=”1” maxOccurs=”1”>
  <person minOccurs=“0” maxOccurs=„unbounded“>

Hinweis

Der Wurzelknoten (hier <personList>) tritt immer genau einmal auf. In der Zielstruktur ist dies explizit dargestellt.

Es sollen also alle vier Personen des 1.street-Kontextes (Fix, Foxy, Lucky Lucke und Jolly Jumper) aufgelistet werden. Sie definieren dazu ein Zielfeld-Mapping für <person>:

\personList\person=\root\city\street\flat\person

Mit der obigen XML-Instanz wird folgendes Resultat erzeugt:

<personList>
   <person> Fix </person>
   <person> Foxy </person>
</personList>

Es werden also nur Fix und Foxy aus dem 1.flat-Kontext erzeugt. Warum dies so ist, verdeutlicht die Prozessierung:

...

       1.      Der Wurzelknoten <personList> wird erzeugt, denn er ist obligatorisch.

       2.      Im Kontext von <personList> prüft das Message-Mapping, ob es ein Zielfeld-Mapping zu \personList\person gibt und ob in der XML-Instanz dafür Werte vorliegen. Das abgebildete Feld \root\city\street\flat\person ist im 1.flat-Kontext.

       3.      Das Message-Mapping erzeugt für Fix und Foxy im 1.flat-Kontext Felder in der Ziel-Struktur. Nach dem 1.Flat-Kontext wird dieser geschlossen und damit auch der Kontext <personList> in der Zielstruktur.

Mit dem letzten Schritt ist die Transformation abgeschlossen, weil alle Felder der Zielstruktur abgearbeitet worden sind. Das Beispiel zeigt folgendes:

·        Bei dem Mapping ist implizit der Strukturknoten <flat> dem Wurzelknoten <personList> zugeordnet. <personList> wird so oft erzeugt wie es durch das Schema vorgegeben ist, also ein mal (siehe auch: Abbildung von Feldern innerhalb eines Kontextes).

·        Der Grund, warum nur Fix und Foxy in die Liste aufgenommen werden ist, dass sie in einem anderen Kontext liegen als Jolly Jumper und Lucky Luke.

Im Kontext-Menü des Datenfluss-Editors können Sie den Kontext für jedes Feld in der Ausgangsstruktur individuell einstellen. Wenn Sie für \root\city\street\flat\person den Kontext <street> einstellen, werden vor dem Mapping alle <person>-Felder unter das nächsthöhere Feld <street> gehängt. Je nachdem, wie Sie den Kontext in der Ausgangsstruktur einstellen, erhalten Sie die folgenden Ergebnisse:

Verschiedene Struktur-Mappings abhängig vom Kontext des Ausgangsfeldes <person>

Kontext
von
\root\city\street\flat\person

Ergebnisliste

flat (Voreinstellung)

<personList>
   <person> Fix </person>
   <person> Foxy </person>
</personList>

street

<personList>
   <person> Fix </person>
   <person> Foxy </person>
   <person> Jolly Jumper </person>
   <person> Lucky Luke </person>
</personList>

city

<personList>
   <person> Fix </person>
   <person> Foxy </person>
   <person> Jolly Jumper </person>
   <person> Lucky Luke </person>
   <person> Asterix </person>
   <person> Obelix </person>
</personList>

root

<personList>
   <person> Fix </person>
   <person> Foxy </person>
   <person> Jolly Jumper </person>
   <person> Lucky Luke </person>
   <person> Asterix </person>
   <person> Obelix </person>
   <person> Valerian </person>
</personList>

Hinweis

Die Standardfunktion removeContexts() weist ihr zugewiesene Felder dem Wurzelkontext zu. Wenn Sie einem solchen Feld den Kontext root zuweisen, hat dies den gleichen Effekt.

Hinweis

Ein Attribut hat als übergeordneten Kontext das Element, dem es zugewiesen ist. Die oben gemachten Aussagen für Felder gelten genauso für Attribute.

Technisch gesehen wird die XML-Instanz in Queues eingelesen, bevor die Zielfeld-Mappings abgearbeitet werden. Die Kontexte werden in der Queue über Kontextwechsel voneinander getrennt. In erweiterten benutzerdefinierten Funktionen können Sie diese Queues direkt ansprechen.

 

 

 

Ende des Inhaltsbereichs