Wenn die Eingabenachrichten optional Unterfelder enthalten können, deren An- oder Abwesenheit nur dadurch festgestellt werden kann, dass der tatsächliche Wert der Daten überprüft wird (z. B. ein optionales Feld mit numerischen Ziffern gefolgt von einem oder mehreren alphabetischen Zeichen), müssen Sie das Verfahren Datenmuster verwenden als Trennzeichen für Datenelemente verwenden. Dies gilt vor allem für Nachrichten, die dem SWIFT-Industriestandard entsprechen. Für dieses Verfahren müssen Sie reguläre Ausdrücke angeben, um diejenigen Teile einer Eingabenachricht zu identifizieren, die Unterfeldern zugeordnet werden sollen. Sie müssen einen regulären Ausdruck für die Eigenschaft Datenmuster jedes untergeordneten Elements des komplexen Typs angeben.
Bei der Analyse werden Daten nacheinander mit jedem untergeordneten Element des komplexen Typs abgeglichen. Zu diesem Zweck ermittelt der Parser anhand des regulären Ausdrucks für das untergeordnete Element die Anzahl der Zeichen in der Nachricht, die zu dem jeweiligen untergeordneten Element gehören. Diese Anzahl Zeichen entspricht der Länge der längsten Zeichenfolge, beginnend mit der aktuellen Position in der Nachricht, die mit dem regulären Ausdruck übereinstimmt. Wenn die längste Zeichenfolge, die mit dem regulären Ausdruck übereinstimmt, die Länge null hat, ist das Element in der Nachricht vorhanden, und es wird die leere Zeichenfolge für den Wert verwendet. Falls keine Zeichenfolge mit dem regulären Ausdruck übereinstimmt, ist das Element nicht vorhanden. Dies kann einen Gültigkeitsfehler zur Folge haben, wenn das Element erforderlich ist.
Nachdem die Anzahl der Zeichen in der Eingabenachricht ermittelt wurde, findet eine normale Datenkonvertierung bzw., im Falle eines komplexen Elements, eine weitere Analyse des Textes in der Eingabenachricht statt, um Elementen Werte zuzuordnen. Dies kann zu Datenüberlauf- oder Unterlauffehlern führen, wenn die durch das Muster erkannte Länge nicht zur Definition des untergeordneten Elements passt.
Unter Syntax für reguläre Ausdrücke werden alle Syntaxregeln und ihre Anwendung erläutert. Die nachfolgende Tabelle enthält einige einfache Beispiele für die Analyse mit Hilfe von Datenmustern. Im Anschluss an die Tabelle folgt ein komplexeres Beispiel.
Eingabenachricht | Datenmuster | Gefundener Wert |
---|---|---|
"123456ABC" | [0-9]* | "123456" |
"123" | [A-Z]* | "" |
"123" | [A-Z]+ | Nicht vorhanden |
"ABCD123" | [A-Z]{1,3} erstes Feld [A-Z]{2,4} zweites Feld |
"ABC" - erstes Feld (die längste Zeichenfolge, die mit dem
Muster übereinstimmt) Nicht vorhanden - zweites Feld (Mindestlänge von zwei alphabetischen Zeichen ist nicht vorhanden) |
"ABCDEFGHIJ1234" | [A-Z]{1,3} erstes Feld, Wiederholung [0-9]+ zweites Feld |
"ABC" - erstes Feld [1] "DEF" - erstes Feld [2] "GHI" - erstes Feld [3] "J" - erstes Feld [4] "1234" - zweites Feld (das Wiederholungsfeld endet, wenn die Daten "1234" nicht mehr mit dem für das erste Feld angegebenen Datenmuster übereinstimmen.) |
Das folgende Beispiel zeigt eine Mustererkennung für drei Felder.
Nachrichtendefinition: Komplexer Typ: Trennzeichen für Datenelemente=Datenmuster verwenden Feld1: xsd:string minOccurs=1, maxOccurs=1, Length=5, Pad=SPACE, Datenmuster=".{5}" Feld2: xsd:int minOccurs=0, maxOccurs=1, Datenmuster="[0-9]{0,6}" Feld3: xsd:string minOccurs=1, maxOccurs=1, minLength=3, maxLength=4, Datenmuster="[A-Z][A-Za-z0-9]{2,3}" Eingabe1: "ABCDE123F12" Ergebnis1: Feld1="ABCDE", Feld2="123", Feld3="F12" Eingabe2: "ABCDEF12" Ergebnis2: Feld1="ABCDE", Feld2=nicht vorhanden, Feld3="F12" Eingabe3: "ABCDE123456XXXX" Ergebnis3: Feld1="ABCDE", Feld2="123456", Feld3="XXXX" Eingabe4: "ABCDE1234567" Ergebnis4: Feld1="ABCDE", Feld2="123456", Feld3=nicht vorhanden, was eine Ausnahme verursacht, wenn Überprüfung aktiviert ist. Ein Zeichen ("7") wird keinem Element zugeordnet, was ebenfalls eine Ausnahme verursacht.
Im Falle eines untergeordneten Wiederholungselements werden Exemplare des untergeordneten Elements so lange analysiert, wie eine Übereinstimmung mit dem Muster gefunden wird. Dies gilt auch, wenn Maximale Anzahl für das Wiederholungselement angegeben ist und die Häufigkeit die Obergrenze überschreitet. Deshalb muss aus dem regulären Ausdruck für das Element eine Bedingung für das Elementende abgeleitet werden können. Die Tabelle oben enthält ein Beispiel für ein Wiederholungselement.
Beim Parsing werden die Daten aus der Eingabenachricht, die mit dem Datenmuster übereinstimmen und einem Element zugeordnet werden, nicht weiter auf Begrenzer eines übergeordneten komplexen Typs durchsucht. Dieses Verhalten entspricht dem des Verfahrens Feste Länge für Trennzeichen für Datenelemente. Sie können jedoch einen regulären Ausdruck codieren, mit dem Daten mit einem von mehreren möglichen Begrenzern abgeglichen werden.
Wenn für ein untergeordnetes Element eine Länge angegeben ist, wird der Wert beim Schreibvorgang auf die entsprechende Länge aufgefüllt. Dieses Verhalten entspricht dem des Verfahrens Elemente variabler Länge mit Begrenzer für Trennzeichen für Datenelemente, aber ohne Begrenzer.
Wenn die Nachricht einen komplexen Typ enthält, für den Zusammensetzung auf Auswahl gesetzt ist, können Sie Trennzeichen für Datenelemente auf Datenmuster verwenden setzen. In diesem Fall wird die Auswahl mit Hilfe der Datenmuster-Werte der untergeordneten Elemente aufgelöst. Beginnend mit dem ersten untergeordneten Element legt das erste Muster, das eine Übereinstimmung ergibt, fest, welches untergeordnete Element vorhanden ist. Deshalb kann die Reihenfolge der untergeordneten Elemente in einer Auswahl wichtig sein.
Ein komplexer Typ kann untergeordnete Wiederholungselemente enthalten, wobei Maximale Anzahl unbegrenzt ist. Länge und andere zugehörige Eigenschaften wie Ausrichtung und Auffüllung können optional für die untergeordneten Elemente angegeben werden.
Unter TDS-Nachrichtenmodellintegrität finden Sie Regeln für die Verwendung des Verfahrens Datenmuster verwenden für Trennzeichen für Datenelemente. Unter Kombinierter Einsatz von Zusammensetzung und Inhaltsauswertung finden Sie ausführliche Informationen zu gültigen Einstellungen für Zusammensetzung und Inhaltsauswertung.