Conversione dei dati in un messaggio XML

Spesso è necessario convertire i dati da un formato all'altro. Ad esempio, in un messaggio i tipi di elementi sono riconosciuti dai nomi ed in un altro messaggio gli elementi sono riconosciuti dai numeri. Ad esempio:

Type Name          Type Code

Confectionary      2000
Newspapers         3000
Hardware           4000

Considerare il seguente messaggio di input:

<Data>
  <Items>
    <Item>
      <Cat>1000</Cat>
      <Description>Milk Chocolate Bar</Description>
      <Type>Confectionary</Type>
    </Item>
    <Item>
      <Cat>1001</Cat>
      <Description>Daily Newspaper</Description>
      <Type>NewsPapers</Type>
    </Item>
    <Item>
      <Cat>1002</Cat>
      <Description>Kitchen Sink</Description>
      <Type>Hardware</Type>
    </Item>
  </Items>
  <TranslateTable>
    <Translate>
      <Name>Confectionary</Name>
      <Number>2000</Number>
    </Translate>
    <Translate>
      <Name>NewsPapers</Name>
      <Number>3000</Number>
    </Translate>
    <Translate>
      <Name>Hardware</Name>
      <Number>4000</Number>
    </Translate>
  </TranslateTable>
</Data>

Questo messaggio è composto da due sezioni: la prima è un elenco di elementi in cui ciascun elemento dispone di un tipo e di un numero di catalogo; la seconda è una tabella di conversione tra i nomi di tipo descrittivo ed i codici di tipo numerico. Se si include un nodo Compute con la seguente trasformazione:

SET OutputRoot.XML.Result.Items.Item[] = 
   (SELECT M.Cat, M.Description, T.Number As Type
     FROM 
       InputRoot.XML.Data.Items.Item[]               As M,
       InputRoot.XML.Data.TranslateTable.Translate[] As T
     WHERE M.Type = T.Name
   );

viene generato il seguente messaggio di output:

<Result>
  <Items>
    <Item>
      <Cat>1000</Cat>
      <Description>Milk Chocolate Bar</Description>
      <Type>2000</Type>
    </Item>
    <Item>
      <Cat>1001</Cat>
      <Description>Daily Newspaper</Description>
      <Type>3000</Type>
    </Item>
    <Item>
      <Cat>1002</Cat>
      <Description>Kitchen Sink</Description>
      <Type>4000</Type>
    </Item>
  </Items>
</Result>

Nel risultato, ciascun nome del tipo è stato convertito nel codice corrispondente. In questo esempio, i dati e la tabella di conversione erano contenuti nella stessa struttura ad albero del messaggio, sebbene questo non sia un requisito. Ad esempio, la tabella di conversione potrebbe essere contenuta in un database oppure potrebbe essere stata impostata in LocalEnvironment da un nodo Compute precedente.

Concetti correlati
Panoramica dei flussi di messaggi
Panoramica di ESQL
Creazione di modelli di messaggio
Attività correlate
Progettazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Gestione dei file ESQL
Riferimenti correlati
Nodo Compute
Nodo Database
Nodo Filter
Riferimento ESQL
Funzione SELECT
Istruzione SET
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05790_