Quando l'applicazione invia un messaggio ad un broker, il modo in cui vengono interpretati i dati del messaggio dipende dal contenuto del messaggio e dalla configurazione del flusso di messaggi. Se l'applicazione invia un messaggio che deve essere interpretato dal programma di analisi XML generico o dal programma di analisi MRM personalizzato da un formato fisico XML, l'applicazione può contenere dati relativi alla data oppure all'ora rappresentati da uno dei tipi di dati datetime primitivi dello schema XML.
Il tipo di dati dello schema XML di ciascuna porzione di dati viene convertito in un tipo di dati ESQL e l'elemento creato nella struttura ad albero del messaggio è del tipo convertito. Se i dati datetime in un messaggio di input non corrispondono alle regole del tipo di dati dello schema scelto, i valori scritti dal programma di analisi nella struttura ad albero del messaggio vengono modificati anche se il messaggio è nel dominio MRM ed il flusso di messaggi è configurato in modo da convalidare il messaggio di input. La convalida non è disponibile per i messaggi XML generici.
Ciò ha il seguente effetto sui campi secondari dei dati datetime di input:
I seguenti esempi illustrano tali punti.
Tipo di dati dello schema XML dei dati di input | Regole dello schema | Valore di input nel flusso di bit | Valore scritto nella struttura ad albero logica (tipo di dati ESQL tra parentesi) |
---|---|---|---|
xsd:dateTime | CCAA-MM-GGThh:mm:ss | 2002-12-31T23:59:59 | 2002-12-31 23:59:59 (TIMESTAMP) |
--24 | 1970-01-24 (DATE) | ||
23:59:59 | 23:59:59 (TIME) | ||
xsd:date | CCAA-MM-GG | 2002-12-31 | 2002-12-31 (DATE) |
2002-12-31T23:59:59 | 2002-12-31 (DATE) | ||
-06-24 | 1970-06-24 (DATE) | ||
xsd:time | hh:mm:ss | 14:15:16 | 14:15:16 (TIME) |
xsd:gDay | ---GG | ---24 | 1970-01-24 (DATE) |
xsd:gMonth | --MM | --12 | 1970-12-01 (DATE) |
xsd:gMonthDay | --MM-GG | --12-31 | 1970-12-31 (DATE) |
xsd:gYear | CCAA | 2002 | 2002-01-01 (DATE) |
xsd:gYearMonth | CCAA-MM | 2002-12 | 2002-12-01 (DATE) |
Quando si considera il tipo di dati datetime dello schema da utilizzare, tenere presente ch, se il messaggio è nel dominio MRM e si configura il flusso di messaggi in modo da convalidare i messaggi, i campi secondari mancanti possono causare eccezioni relative alla convalida.
I tipi di dati dello schema Gday, gMonth, gMonthDay, gYear e gYearMonth sono utilizzati per registrare particolari periodi di tempo ricorrenti. Esiste una potenziale confusione quando la convalida è attivata, perché i periodi di tempo ricorrenti utilizzati in tali tipi di dati dello schema vengono memorizzati da ESQL come momenti specifici.
Ad esempio, quando viene scritto il 24 del mese, che corrisponde ad un tipo gDay (giorno del mese) nella struttura ad albero logica, i campi secondari mancanti relativi al mese ed all'anno vengono forniti dall'epoch (gennaio 1970) in modo da fornire la data specifica 1970-01-24. Se si codifica ESQL in modo da modificare tale data, ad esempio aggiungendo un intervallo di 10 giorni e si genere un messaggio di output convalidato, viene generata un'eccezione. Ciò si verifica perché il risultato del calcolo è 1970-02-03, ma tale valore non è valido perché il campo secondario del mese della data non corrisponde più alla data epoch.