Per consentire ai messaggi di input di contenere campi secondari facoltativi dei quali è possibile determinare la presenza o assenza solo esaminando il valore reale dei dati (ad esempio, un campo facoltativo di cifre numeriche seguite da uno o più caratteri alfabetici), utilizzare il metodo di separazione elementi dati Utilizza modello dati. Ciò ha particolare importanza per i messaggi conformi allo standard industriale SWIFT. Per utilizzare tale metodo, identificare le parti di un messaggio di input da associare a campi secondari fornendo espressioni regolari. Fornire un valore dell'espressione regolare per la proprietà Modello dati di ciascun elemento child del tipo complesso.
Durante l'analisi i dati sono messi in corrispondenza a turno con ciascun elemento child del tipo complesso. Il programma di analisi effettua tale operazione utilizzando l'espressione regolare dell'elemento child per determinare il numero di caratteri del messaggio applicati a tale elemento child. Questo numero di caratteri è costituito dalla lunghezza della stringa più lunga, iniziando dalla posizione corrente nel messaggio, che corrisponde all'espressione regolare. Se la stringa più lunga che corrisponde all'espressione regolare è di lunghezza zero, l'elemento è presente nel messaggio e la stringa vuota viene utilizzata per il valore. Se all'espressione regolare non corrisponde alcuna stringa, l'elemento non è presente. E' possibile che ciò provochi un errore di convalida successivo se l'elemento è richiesto.
Dopo che il numero di caratteri del messaggio di input è stato determinato, vengono assegnati valori agli elementi eseguendo la conversione dei dati normali o un'ulteriore analisi nel caso di un elemento complesso nel testo del messaggio di input. E' possibile che ciò provochi errori di sovraccarico o sottocarico se la lunghezza identificata dal modello non è appropriata per la definizione dell'elemento child.
In Sintassi di espressione regolare sono spiegate le regole di sintassi completa e le relative modalità di applicazione ma nella tabella riportata di seguito sono forniti alcuni esempi semplici di analisi utilizzando i modelli dei dati. Un esempio più complesso è visualizzato dopo la tabella.
Messaggio di input | Modello dati | Valore corrispondente |
---|---|---|
"123456ABC" | [0-9]* | "123456" |
"123" | [A-Z]* | "" |
"123" | [A-Z]+ | Non presente |
"ABCD123" | [A-Z]{1,3} primo campo [A-Z]{2,4} secondo campo |
"ABC" - primo campo (la stringa più lunga che corrisponde al modello) Non presente - secondo campo (non è presente la lunghezza minima di due caratteri alfabetici) |
"ABCDEFGHIJ1234" | [A-Z]{1,3} primo campo, ripetizione [0-9]+ secondo campo |
"ABC" - primo campo [1] "DEF" - primo campo [2] "GHI" - primo campo [3] "J" - primo campo [4] "1234" - secondo campo (il campo ripetuto termina quando i dati "1234" non corrisponde più al modello di dati specificato per il primo campo). |
Nell'esempio riportato di seguito viene descritta una corrispondenza di modello a tre campi.
Definizione del messaggio: Tipo complesso: Separazione elementi dati=Utilizza modello dati Campo1: xsd:string minOccurs=1, maxOccurs=1, Lunghezza=5, Riempimento=SPACE, Modello dati=".{5}" Campo2: xsd:int minOccurs=0, maxOccurs=1, Modello dati="[0-9]{0,6}" Campo3: xsd:string minOccurs=1, maxOccurs=1, minLength=3, maxLength=4, Modello dati="[A-Z][A-Za-z0-9]{2,3}" Input1: "ABCDE123F12" Risultato1: Campo1="ABCDE", Campo2="123", Campo3="F12" Input2: "ABCDEF12" Risultato2: Campo1="ABCDE", Campo2=non presente, Campo3="F12" Input3: "ABCDE123456XXXX" Risultato3: Campo1="ABCDE", Campo2="123456", Campo3="XXXX" Input4: "ABCDE1234567" Risultato4: Campo1="ABCDE", Campo2="123456", Campo3=non presente, che genera un'eccezione se la convalida è abilitata. Un carattere ("7") rimane non assegnato ad alcun elemento, che genera un'eccezione a sua volta.
Nel caso di un elemento child ripetuto, sono analizzate istanze dell'elemento child per un numero di volte pari alle corrispondenze del modello. Tale attività si verifica anche se la proprietà Numero massimo ricorrenze è specificata per l'elemento ripetuto e il numero di ricorrenze supera il limite superiore. E' quindi necessario che alcune condizioni di interruzione siano determinabili dal modello di espressione regolare per l'elemento. Nella tabella riportata sopra è incluso un esempio di elemento ripetuto.
Durante l'analisi i dati del messaggio di input che corrispondono al Modello dati e sono assegnati a un elemento non sono analizzati in modo ulteriore per delimitatori di tipo complesso di livello più alto. Questo funzionamento è simile al metodo di separazione elementi dati Lunghezza fissa. Tuttavia, è possibile codificare un'espressione regolare che metterà in corrispondenza i dati a un numero di delimitatori possibili.
Durante la scrittura se per un elemento child è specificata una lunghezza, il valore viene riempito in modo appropriato per tale lunghezza. Questo funzionamento è simile al metodo di separazione elementi dati Delimitato da elementi a lunghezza variabile.
Se nel messaggio è incluso un tipo complesso in cui la proprietà Composizione è impostata su Scelta, è possibile impostare il metodo di separazione elementi dati su Utilizza modello dati. In tal caso, per risolvere la scelta vengono utilizzati i valori del Modello dati degli elementi child. Iniziando con il primo elemento child, il primo modello che fornisce una corrispondenza determina l'elemento child presente. E' quindi importante l'ordine degli elementi child in una scelta.
Un tipo complesso è in grado di contenere elementi child ripetuto con la proprietà Numero massimo ricorrenze non associata. E' possibile specificare in modo facoltativo la lunghezza e altre proprietà associate, ad esempio la giustificazione e il riempimento degli elementi child.
Fare riferimento a Integrità del modello di messaggio TDS per le regole da seguire quando si utilizza il metodo di separazione elementi datiUtilizza modello dati e fare riferimento a Combinazioni di composizione e convalida del contenuto per dettagli sulle impostazioni valide di Composizione e Convalida contenuto.