Domini e programmi di analisi XML

Il dominio di messaggi XML include tutti i messaggi conformi allo standard XML W3C.

I messaggi in questo dominio sono elaborati da uno dei programmi di analisi XML, XMLNS o XMLNSC. Il dominio XMLNS è un'estensione del dominio XML e contiene i messaggi conformi allo stesso standard e che sfruttano la funzione spazio dei nomi della specifica XML. I messaggi in questo dominio sono elaborati dal programma di analisi XML.

Il programma di analisi XML è un programma che interpreta un flusso di bit o la struttura ad albero che rappresenta un messaggio che appartiene al dominio XML e genera la struttura ad albero corrispondente dal flusso di bit in input o il flusso di bit dalla struttura ad albero in output. Il flusso di bit è una rappresentazione di un file XML. (Il programma di analisi XML interpreta anche un flusso di bit o una struttura ad albero che rappresenta un messaggio che appartiene ai domini JMS; non esiste un programma di analisi JMS.)

Le applicazioni possono scambiare i messaggi XML (con o senza il supporto spazi dei nomi) con i broker WebSphere Message Broker in due modi:

  1. E' possibile predefinire la maschera del messaggio (creare un modello) per creare un dizionario del messaggio. In tal caso, i messaggi XML vengono analizzati dal programma di analisi MRM ed elaborati allo stesso modo di tutti i messaggi di cui si creano i modelli.
  2. E' possibile utilizzare messaggi a definizione automatica che non è necessario specificare in alcun modo prima dell'invio.

    Un messaggio a definizione automatica può essere gestito da ogni nodo integrato. L'intero messaggio può essere memorizzato in un database e le intestazioni possono essere aggiunte o rimosse dal messaggio mentre questo attraversa il flusso di messaggi.

Un messaggio a definizione automatica è anche noto come messaggio XML generico. Esso non ha un formato registrato, ma trasporta le informazioni relative al proprio contenuto e struttura all'interno del messaggio in forma di documento che è conforme alla specifica XML. La sua definizione non è conservata altrove. Quando un messaggio XML è ricevuto dal broker, esso viene interpretato dal programma di analisi XML e viene creata una struttura ad albero del messaggio interna in base alle definizioni XML contenute all'interno di quel messaggio.

I dettagli di come il programma di analisi XML gestisce i valori e gli elementi null sono descritti in Il programma di analisi XML e i valori null.

Le informazioni fornite con WebSphere Message Broker non offrono una definizione o descrizione completa della terminologia, dei concetti e delle costruzioni dei messaggi XML: si tratta di un riepilogo che evidenzia gli aspetti importanti quando si utilizzano i messaggi XML con i broker e i flussi di messaggi.

Per ulteriori informazioni su XML, consultare il sito Web developerWorks.

Esempio di analisi dei messaggi XML

Gli elementi relativi al nome utilizzati in questa descrizione (ad esempio, XmlDecl) sono forniti da WebSphere Message Broker e ci si riferisce ad essi come nomi di correlazione. Essi sono disponibili per utilizzo simbolico all'interno dell'ESQL che definisce l'elaborazione del contenuto del messaggio eseguita dai nodi, quali il nodo Compute o Filter, all'interno di un flusso di messaggi. Essi non fanno parte della specifica XML. Ogni programma di analisi XML definisce la propria serie di nomi di correlazione poiché la gestione del contenuto XML varia.

I nomi di correlazione per gli elementi nome XML (ad esempio, Elemento eXmlDecl) equivalgono a un valore costante del formato 0x01000000. E' possibile vedere queste costanti utilizzate nell'output creato dal nodo Trace quando si esegue la traccia di un messaggio, o di una porzione del messaggio.

Un messaggio XML semplice potrebbe essere:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE Envelope
PUBLIC "http://www.ibm.com/dtds" "example.dtd"
[<!ENTITY Example_ID "ST_TimeoutNodes Timeout Request Input Test Message">]
>
<Envelope version="1.0">
	<Header>
		<Example>&Example_ID;</Example>
		<!-- This is a comment  -->
	</Header>
	<Body  version="1.0">
		<Element01>Value01</Element01>
		<Element02/>
		<Element03>
			<Repeated>ValueA</Repeated>
			<Repeated>ValueB</Repeated>
		</Element03>
		<Element04><P>This is <B>bold</B> text</P></Element04>
	</Body>
</Envelope>

Le seguenti sezioni mostrano l'output creato dal nodo Trace quando il messaggio di cui sopra è stato analizzato nei programmi di analisi XML e XMLNSC per dimostrare le differenze nelle strutture interne utilizzate per rappresentare i dati mentre vengono elaborati dal Broker.

Esempio di messaggio XML analizzato nel dominio XML

Notare che nel seguente esempio gli elementi WhiteSpace all'interno della struttura ad albero sono presenti a causa delle interruzioni di spazio, tabulazione e riga che formattano il documento XML originale, per chiarezza nella presentazione, i caratteri reali nella traccia sono stati sostituiti con 'WhiteSpace'. WhiteSpace all'interno di un elemento XML ha rilevanza per l'attività aziendale ed è rappresentato utilizzando l'elemento di sintassi Content. Si noti che XmlDecl, DTD e commenti sono rappresentati nel dominio XML utilizzando elementi relativi alla sintassi denominati di correlazione esplicita.

(0x01000010):XML        = (
    (0x05000018):XML      = (
      (0x06000011): = '1.0'
      (0x06000012): = 'UTF-8'
      (0x06000014): = 'no'
    )
    (0x06000002):         = 'WhiteSpace'
    (0x05000020):Envelope = (
      (0x06000004): = 'http://www.ibm.com/dtds'
      (0x06000008): = 'example.dtd'
      (0x05000021): = (
        (0x05000011):Example_ID = (
          (0x06000041): = 'ST_TimeoutNodes Timeout Request Input Test Message'
        )
      )
    )
    (0x06000002):         = 'WhiteSpace'
    (0x01000000):Envelope       = (
      (0x03000000):version   = '1.0'
      (0x02000000):         = 'WhiteSpace'
      (0x01000000):Header  = (
        (0x02000000):         = 'WhiteSpace'
        (0x01000000):Example = (
          (0x06000020): = 'Example_ID'
          (0x02000000): = 'ST_TimeoutNodes Timeout Request Input Test Message'
          (0x06000021): = 'Example_ID'
        )
        (0x02000000):         = 'WhiteSpace'
        (0x06000018):        = ' This is a comment  '
        (0x02000000):         = 'WhiteSpace'
      )
      (0x02000000):         = 'WhiteSpace'
      (0x01000000):Body    = (
        (0x03000000):version   = '1.0'
        (0x02000000):         = 'WhiteSpace'
        (0x01000000):Element01 = (
          (0x02000000): = 'Value01'
        )
        (0x02000000):         = 'WhiteSpace'
        (0x01000000):Element02 = 
        (0x02000000):         = 'WhiteSpace'
        (0x01000000):Element03 = (
          (0x02000000):         = 'WhiteSpace'
          (0x01000000):Repeated = (
            (0x02000000): = 'ValueA'
          )
          (0x02000000):         = 'WhiteSpace'
          (0x01000000):Repeated = (
            (0x02000000): = 'ValueB'
          )
          (0x02000000):         = 'WhiteSpace'
        )
        (0x02000000):         = 'WhiteSpace'
        (0x01000000):Element04 = (
          (0x01000000):P = (
            (0x02000000):  = 'This is '
            (0x01000000):B = (
              (0x02000000): = 'bold'
            )
            (0x02000000):  = ' text'
          )
        )
        (0x02000000):         = 'WhiteSpace'
      )
      (0x02000000):         = 'WhiteSpace'
    )

Esempio di messaggio XML analizzato nel dominio XMLNSC

La seguente traccia mostra gli elementi creati per rappresentare la stessa struttura XML all'interno del programma di analisi XMLNSC compatto nella modalità predefinita. In questa modalità il programma di analisi compatto non conserva commenti, istruzioni di elaborazione o testo misto.

Si vede chiaramente dal confronto, che c'è un grande risparmio nel numero di elementi relativi alla sintassi utilizzato per rappresentare lo stesso contenuto aziendale del messaggio XML di esempio utilizzando il programma di analisi compatto.

Si noti che, non conservando testo misto, tutti gli elementi WhiteSpace che non contengono dati aziendali non mantengono alcun foot print di runtime nella struttura ad albero del messaggio del Broker. Tuttavia ciò fa anche sì che il testo misto in "Element04.P" venga eliminato e che solo il valore della cartella child "Element04.P.B" sia conservato nella struttura ad albero, il testo 'This is ' e ' text' in "P" è eliminato. Questo tipo di struttura XML non è in genere associato a formati di dati aziendali, quindi si preferisce normalmente l'utilizzo del programma di analisi XMLNSC compatto. Comunque, nel caso sia necessario questo tipo di elaborazione si eviterà di utilizzare il programma di analisi XMLNSC o lo si utilizzerà con la modalità relativa alla conservazione del testo misto abilitata.

Anche la gestione della dichiarazione XML è diversa nel programma di analisi compatto con gli attributi Version, Encoding e StandAlone conservati come child di XmlDeclaration piuttosto che come elementi denominati di correlazione speciale.

(0x01000000):XMLNSC     = (
    (0x01000400):XmlDeclaration = (
      (0x03000100):Version    = '1.0'
      (0x03000100):Encoding   = 'UTF-8'
      (0x03000100):StandAlone = 'no'
    )
    (0x01000000):Envelope       = (
      (0x03000100):version   = '1.0'
      (0x01000000):Header  = (
        (0x03000000):Example = 'ST_TimeoutNodes Timeout Request Input Test Message'
      )
      (0x01000000):Body    = (
        (0x03000100):version   = '1.0'
        (0x03000000):Element01 = 'Value01'
        (0x01000000):Element02 = 
        (0x01000000):Element03 = (
          (0x03000000):Repeated = 'ValueA'
          (0x03000000):Repeated = 'ValueB'
        )
        (0x01000000):Element04 = (
          (0x01000000):P = (
            (0x03000000):B = 'bold'
          )
        )
   )

La maggior parte degli esempi nella Galleria degli esempi utilizza il programma di analisi XML per elaborare i messaggi. Ad esempio, consultare l'esempio Richiesta/Replica coordinate, l'Esempio Messaggio di grandi dimensioni, e l'Esempio Instradamento del messaggio.

Riferimenti correlati
Nodi integrati
Strutture XML
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac00600_