Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Abbildung von Feldern innerhalb eines Kontextes Dokument im Navigationsbaum lokalisieren

Wie ein Message-Mapping Felder innerhalb eines Kontextes abbildet, hängt davon ab, ob es sich um ein Strukturfeld handelt oder ein Wertefeld. Strukturfelder sind Elemente mit Unterelementen, die keinen eigenen Wert haben können. Attribute und typisierte Elemente, also ‚Blatt-Knoten’ in der Hierarchie, sind Wertefelder.

Abbildung von Strukturfeldern

Ob Strukturfelder erzeugt werden, hängt von deren Häufigkeit in der Zielstruktur ab und davon, ob ein Zielfeld-Mapping für das Strukturfeld definiert wurde. Die folgende Tabelle gibt eine Übersicht, wann Sie Zielfeld-Mappings für Strukturfelder gemäß der Schema-Definition der Zielstruktur definieren müssen. (Im Mapping-Editor werden solche Felder in rot angezeigt.)

Nötige Zielfeld-Mappings für Strukturfelder in der Zielstruktur

Häufigkeit

Bedingungen für die Erzeugung

n = minOccurs = maxOccurs > 0

Das Message-Mapping erzeugt diese Strukturfelder automatisch, weil sie unabhängig vom Zielfeld-Mapping in der Zielstruktur n mal auftreten müssen. Sie können solchen Strukturfeldern trotzdem ein Zielfeld-Mapping zuweisen (beispielsweise mit der Standardfunktion createIf(), um aus mehreren möglichen Ausgangsstrukturfeldern das richtige auszuwählen).

minOccurs = 0

Das Strukturfeld ist optional. Ob das Feld erzeugt wird, hängt davon ab, ob Sie ihm ein Zielfeld-Mapping zugewiesen haben (beispielsweise ein Strukturfeld der Ausgangsstruktur). Zu beachten ist insbesondere folgendes:

·      Wenn Sie dem Strukturfeld ein Zielfeld-Mapping zuweisen, müssen Sie dies auch für obligatorische Unterelmente / Attribute tun, sonst ist das Message-Mapping nicht vollständig (daher zeigt sie der Mapping-Editor in so einem Fall rot an).

·      Um optionale Strukturfelder zu erzeugen reicht es nicht aus, für Unterelemente / Attribute ein Zielfeld-Mapping zu erzeugen. Optionale Strukturfelder ohne Zielfeld-Mapping unterdrückt das Message-Mapping inklusive Unterknoten.

Wie oft optionale Strukturfelder erzeugt werden, ist an maxOccurs gebunden und dem Zielfeld-Mapping. Hier gelten die gleichen Regeln wie für Wertefelder (siehe unten).

0 < minOccurs < maxOccurs

Für solche Strukturfelder müssen Sie ein Zielfeld-Mapping definieren. Wie oft diese Strukturfelder erzeugt werden, hängt von minOccurs, maxOccurs und dem Zielfeld-Mapping ab. Hier gelten die gleichen Regeln wie für Wertefelder (siehe unten).

Sie können Strukturen der Ausgangsstruktur auch gezielt in andere Strukturen überführen, siehe Strukturabbildungen durch Setzen des Kontexts.

Häufigkeit von Wertefeldern und Strukturfeldern

Auch wenn für ein Ausgangsfeld gemäß einer XML Schema Definition beliebig oft auftreten darf, tritt es letztlich nur endlich oft in dem XML-Dokument auf, für das das Message-Mapping ausgeführt wird. Wie oft es dann in der Zielstruktur auftauchen wird, hängt von den Attributen minOccurs und maxOccurs  der Zielfelder ab. Für die folgenden Aussagen sei sourceElem ein Feld der Ausgangsstruktur und targetElem ein Feld der Zielstruktur, das diesem Feld im Mapping Editor zugeordnet ist (ohne Verwendung von Funktionen):

·      Das Tag targetElem mit minOccurs=“<n>“ tritt mindestens <n> mal in der Zielstruktur auf. Wenn sourceElem nicht oft genug in der Ausgangsstruktur vorkommt, löst die Mapping-Laufzeit eine Ausnahme aus.

·      Das Tag targetElem mit maxOccurs=“<n>“ tritt höchstens <n> mal in der Zielstruktur auf. Wenn sourceElem öfter in der Ausgangsstruktur vorkommt, gehen also Werte verloren, tritt es weniger oft auf, werden gleich viele Ziel- wie Ausgangsfelder erzeugt.

Achtung

Die Mapping-Laufzeit ignoriert Default-Werte, die im XSD-Schema für Felder enthalten sind.

Erzeugende Funktionen

Die Standardfunktionen der Funktionskategorie Constants haben keinen Eingabewert. Sie erzeugen also einen Wert für ein Zielfeld statt ihn von einem Ausgangsfeld zu übernehmen. Neben diesen Funktionen gehören alle Funktionen (egal ob Standard- oder benutzerdefinierte Funktionen), die keine Eingangswerte haben, zu solchen erzeugende Funktionen.

Wenn erzeugende Funktionen einem Zielfeld zugeordnet sind, bestimmen die Attribute minOccurs und maxOccurs, wie oft ein Wert erzeugt wird:

·      Ist minOccurs = 0, wird der Wert der Funktion ein mal erzeugt.

·      Ansonsten entsprechend so oft, wie er laut minOccurs auftreten muss.

Hinweis

Dies gilt unabhängig von dem Attribut maxOccurs. Auch bei maxOccurs = „unbounded“ erzeugt die Mapping-Laufzeit den Wert nur so oft, wie es durch minOccurs vorgegeben ist.

Wenn erzeugende Funktionen einer Funktion zugeordnet sind, bestimmt die Eingabe-Queue mit den meisten Werten des aktuellen Kontextes, wie oft die erzeugende Funktion einen Wert erzeugt (siehe auch: Verarbeiten von Eingabe-Queues).

 

 

 

Ende des Inhaltsbereichs