Nodo XMLTransformation

Questo argomento contiene le seguenti sezioni:

Scopo

Utilizzare il nodo XMLTransformation per trasformare un messaggio XML in un altro formato di messaggio XML, in base alle regole fornite da un foglio di stile XSL (eXtensible Stylesheet Language).

E' possibile specificare l'ubicazione del foglio di stile da applicare a questa trasformazione in uno dei seguenti tre modi:

  1. E' possibile utilizzare le proprietà del nodo. Questo garantisce che la trasformazione definita da questo singolo foglio di stile sia applicata ad ogni messaggio elaborato da questo nodo.
  2. E' possibile utilizzare il contenuto dei dati XML all'interno del messaggio stesso. In questo modo si trasforma il messaggio in base ad un foglio di stile che è il messaggio stesso a definire.
  3. Inizio modificaÈ possibile impostare un valore nella cartella LocalEnvironment. Occorre impostare questo valore (ad esempio, in un nodo Compute) prima del nodo XMLTransformation. E' possibile quindi utilizzare diversi input per stabilire quale foglio di stile utilizzare per questo messaggio, come ad esempio il contenuto dei dati del messaggio o un valore in un database.Fine modifica

Inizio modificaViene utilizzato un compilatore XSLT (eXtensible Stylesheet Language for Transformations) per la trasformazione, se il foglio di stile non è integrato all'interno del messaggio e il livello della cache del nodo (proprietà del nodo Livello cache del foglio di stile) è maggiore di 0. Se XSLT è memorizzato nella cache, le prestazioni migliorano poiché XSLT non viene analizzato ogni volta che viene utilizzato.Fine modifica

Il nodo XMLTransformation è rappresentato nel workbench dalla seguente icona:

Icona del nodo XMLTransformation

Utilizzo di questo nodo in un flusso di messaggi

Per un esempio di come utilizzare questo nodo, prendere in considerazione due agenzie di informazioni che si scambiamo informazioni regolarmente. Una potrebbe essere una stazione televisiva e l'altra un giornale. Sebbene le informazioni siano simili, il linguaggio utilizzato dalle due agenzie è diverso. Questo nodo può trasformare un formato in un altro applicando le regole del foglio di stile specificato. Se si specifica il foglio di stile nel messaggio (dati XML o LocalEnvironment), lo stesso nodo può svolgere entrambe le trasformazioni.

Esaminare l'Esempio XMLT per ulteriori dettagli su come utilizzare il nodo XMLTransformation.

Inizio modifica

Fogli di stile distribuiti e non distribuiti

È possibile utilizzare i fogli di stile in due modi differenti con il nodo XMLTransformation:
Fogli di stile distribuiti
I fogli di stile distribuiti possono essere importati in un file bar (broker archive) e distribuiti ai sistemi di destinazione. I fogli di stile distribuiti vengono gestiti da WebSphere Message Broker. La possibilità di distribuire i fogli di stile in questo modo è nuovo per Versione 6.0. Un foglio di stile principale è il foglio di stile root specificato in un flusso del messaggio. Ad esempio, un riferimento a un foglio di stile principale nello spazio di lavoro Eclipse, è necessario specificare C:\\project1\a\b.xsl come a/b.xsl (o ./a/b.xsl). Un foglio di stile principale può specificare (includere o importare) i relativi fogli di stile derivati.
Fogli di stile non distribuiti
I fogli di stile non distribuiti possono essere memorizzati in un percorso in cui il nodo XMLTransformation può accedervi. I fogli di stile non distribuiti non sono gestiti da WebSphere Message Broker.
Per ulteriori informazioni, consultare Migrazione di fogli di stile e file XML.

Distribuzione dei file XML o dei fogli di stile distribuiti

Inizio modificaPrima di configurare il nodo XMLTransformation, è necessario comprendere il modo in cui gestire i fogli di stile. (Un foglio di stile può specificare un altro file XML come foglio di stile). Per utilizzare i file XML o i fogli di stile distribuiti, è necessario attenersi alla seguente procedura:
  1. Accertarsi che i file abbiano le estensioni del nome file corrette: i fogli di stile da distribuire devono avere come estensione file .xsl o .xslt e i file XML da distribuire devono avere come estensione file .xml.
  2. Importare i file nell'area di lavoro Eclipse: tutti i fogli di stile e i file XML da distribuire devono essere importati in un progetto dell'area di lavoro Eclipse. I file XML o i fogli di stile discendenti che dipendono dall'ubicazione e che devono essere distribuiti vanno collocati nella struttura di directory corretta relativa ai fogli di stile parent. Non collocare nell'area di lavoro Eclipse i discendenti che dipendono dall'ubicazione e che non si desidera distribuire.
  3. Inizio modificaAccertarsi che tutti i riferimenti ai file siano in relazione: in linea generale, tutti i riferimenti a un foglio di stile principale devono essere messi in relazione, indipendentemente dall'ubicazione in cui si trovano. Un riferimento ad un foglio di stile principale deve essere messo in relazione alla root del progetto dell'area di lavoro Eclipse in questione.

    La sola eccezione è rappresentata dal fatto che, quando si specifica un foglio di stile principale come proprietà Nome foglio di stile su un nodo XMLTransformation, è possibile utilizzare un percorso assoluto che punti alla struttura di directory corretta nell'area di lavoro Eclipse. Se il foglio di stile principale viene trovato, il sistema reimposta automaticamente la proprietà del nodo sul valore relativo corretto. Esso svolge anche una distribuzione automatica del foglio di stile principale, insieme a tutti i fogli di stile discendenti che dipendono dall'ubicazione e che sono disponibili nel progetto dell'area di lavoro Eclipse in questione. Tutti i riferimenti ai fogli di stile discendenti che dipendono dall'ubicazione (o file XML) di un foglio di stile principale devono essere messi in relazione all'ubicazione dei rispettivi fogli di stile parent. Ad esempio, se il foglio di stile //project1/a/b.xsl fa riferimento al foglio di stile //project1/a/c/d.xsl il riferimento deve essere modificato in c/d.xsl (o ./c/d.xsl).

    Fine modifica
  4. Gestire i fogli di stile child o i file XML non distribuiti: i fogli di stile possono fare riferimento ad altri fogli di stile. Se si dispone di un foglio di stile child (o di un file XML) a cui si fa riferimento per quanto riguarda la relazione e che non va distribuito, mentre il parent lo è, assicurarsi che sia collocato nell'ubicazione corretta in percorso di lavoro del broker/XSL/external (percorso di lavoro del broker/XML/external). Un broker associa automaticamente la struttura ad albero dell'archivio distribuito del gruppo di esecuzione, percorso di lavoro broker/XSL/external e percorso di lavoro broker/XML/external. Ciò significa, ad esempio, che il broker esegue automaticamente una ricerca nella directory percorso di lavoro broker/XML/external/a/b per un riferimento del documento (b/c.xml) nel foglio di stile principale distribuito a/style.xsl se b/c.xml non viene rilevato nell'archivio distribuito del broker. È necessario utilizzare anche i riferimenti al percorso relativo per quei file che sono stati distribuiti ma che non sono disponibili nell'area di lavoro.
  5. Inizio modificaDistribuire i file: è necessario distribuire manualmente solo i fogli di stile o i file XML che non sono individuati dal sistema (gli strumenti forniscono avvertenze circa questi file). Se si fa clic su Sfoglia per il nodo o si fornisce il percorso completo dell'ubicazione del foglio di stile nello spazio di lavoro Eclipse, il foglio di stile viene incluso automaticamente nel file bar.

    Per eseguire la distribuzione manuale, aggiungere i file da distribuire ad un archivio broker (fare riferimento ad Aggiunta di file a un archivio broker e a Aggiunta di parole chiave a fogli di stile XSL) e distribuire l'archivio broker.

    Inizio modificaPer ogni gruppo di esecuzione che utilizza il nodo XMLTransformation, è possibile effettuare le seguenti azioni:
    • Includere il foglio di stile nella directory percorso di lavoro del broker/XSL/external sul broker; non includere il foglio di stile nel file bar.

      Se un foglio di stile nella directory percorso di lavoro del broker/XSL/external condivide lo stesso percorso e nome con un foglio di stile distribuito, viene utilizzato quest'ultimo.

    • Includere il foglio di stile nel file bar e distribuire il file bar. Se più file includono lo stesso nome del foglio di stile, viene utilizzato il foglio di stile dall'ultimo file bar distribuito.
    • Distribuire il foglio di stile nel relativo file bar. Se i file bar utilizzano nodi XMLTransformation, ma non includono il foglio di stile, Message Brokers Toolkit emette dei messaggi di avvertenza.
    Fine modifica
    Fine modifica
Fine modifica
Fine modifica

Configurazione del nodo XMLTransformation

Una volta inserita un'istanza del nodo XMLTransformation in un flusso di messaggi, è possibile configurarla. Fare clic con il tasto destro del mouse sul nodo nella vista dell'editor e fare clic su Proprietà. Vengono visualizzate le proprietà base del nodo.

Tutte le proprietà obbligatorie, per le quali è necessario immettere un valore (quelle per le quali non è specificato un valore predefinito), sono contrassegnate con un asterisco nella finestra di dialogo delle proprietà.

Configurare il nodo XMLTransformation come segue:

  1. Selezionare i valori per le proprietà Priorità di selezione XML integrato, Priorità di selezione ambiente messaggio e Priorità di selezione attributo nodo Broker. I valori impostati stabiliscono l'ordine in cui sono ricercate le ubicazioni alternative per le informazioni del foglio di stile. L'impostazione di priorità più alta è 1. L'ordine predefinito è:
    1. Inizio modificaPriorità di selezione XML integrato, che ha un valore predefinito 1. Il nodo ricerca nei dati XML del messaggio le informazioni di ubicazione del foglio di stile. Ad esempio, i dati XML potrebbero contenere:
      <?xml-stylesheet type="text/xsl" href="foo.xsl"?>
      Fine modifica
    2. Priorità di selezione ambiente messaggio, che ha un valore predefinito 2. Il nodo ricerca nella struttura LocalEnvironment associata al messaggio corrente le informazioni sul foglio di stile memorizzate in un elemento denominato ComIbmXslXmltStylesheetname.

      Poiché questo nodo era disponibile in un SupportPac per la Versione 2.1 e l'elemento ComIbmXslMqsiStylesheetname era utilizzato come nome del foglio di stile, il nodo corrente controlla entrambi gli elementi. Se sono presenti entrambi, il valore in ComIbmXslXmltStylesheetname ha la precedenza.

    3. Priorità di selezione attributo nodo broker, che ha quindi un valore predefinito 3. Il nodo utilizza le proprietà del nodo Nome foglio di stile e Directory foglio di stile per stabilire i valori corretti.

    E' possibile impostare sullo stesso valore più di una proprietà, sebbene non sia consigliabile. In questo caso, l'ordine di priorità impostato dal nodo è l'ordine predefinito sopra indicato.

    Se si imposta un valore di ignora, il nodo non ricerca nell'ubicazione corrispondente per l'identificazione del foglio di stile. Se si impostano tutte e tre le proprietà su ignora, viene generato un errore di runtime.

  2. Se si desidera specificare un foglio di stile non distribuito utilizzando le proprietà del nodo, immettere il valore richiesto per Nome foglio di stile. Questo valore viene ignorato se le informazioni sul foglio di stile sono ricercate e trovate in un'ubicazione preferita (determinata dai valori di priorità di selezione impostati).

    Se si desidera specificare un foglio di stile principale, esistono due possibilità:
    1. Utilizzare il pulsante Sfoglia vicino al campo della proprietà Nome foglio di stile dall'area di lavoro. Il foglio di stile principale identificato e tutti i fogli di stile discendenti a cui si fa riferimento in relazione ad esso vengono automaticamente aggiunti al file bar quando si aggiunge un flusso di messaggi ad un file .bar (sempre che questi e i fogli di stile parent siano disponibili).
    2. Per l'identificazione di un foglio di stile già distribuito o da distribuire, si può utilizzare solo la proprietà Nome foglio di stile mentre la proprietà Directory foglio di stile deve essere lasciata vuota.
  3. Se l'identificazione del foglio di stile è completa, la proprietà Directory foglio di stile viene ignorata; in caso contrario, il valore impostato in questa proprietà è aggiunto all'inizio della specifica, indipendentemente da dove viene trovato.
  4. Inizio modificaIn Livello cache del foglio di stile, specificare il numero dei fogli di stile compilati e analizzati che sono memorizzati in questa istanza del nodo. Il valore predefinito è 5. La cache del foglio di stile è conservata per la durata del nodo. Viene eliminata quando il nodo è eliminato dal flusso o quando il flusso è eliminato o quando il gruppo di esecuzione viene arrestato.

    Se si modifica un foglio di stile memorizzato nella cache (ridistribuendo o sostituendo il file nel file system), il nodo XMLTransformation che contiene la cache sostituisce la versione memorizzata nella cache con la versione modificata (più recente) prima di elaborare un nuovo messaggio. Tuttavia, se si stanno modificando diversi fogli di stile, arrestare i flussi di messaggi appropriati prima di apportare le modifiche. Se non si arrestano i flussi di messaggi appropriati prima di apportare le modifiche, l'ordine delle modifiche non può essere garantito eseguendo flussi di messaggi ed è possibile che vi sia incompatibilità tra i fogli di stile modificati. È possibile utilizzare il comando mqsireload per ricaricare un foglio di stile ma il comando non impedisce incompatibilità.

    Fine modifica
  5. Selezionare Serie di caratteri di output nel Navigator della finestra di dialogo delle proprietà per specificare l'ordine in cui il nodo esegue una ricerca nelle ubicazioni valide per trovare la serie di caratteri da utilizzare per il messaggio di output. L'impostazione di priorità più alta è 1. L'ordine predefinito è:
    1. Priorità di selezione ambiente messaggio, che ha quindi un valore predefinito 1. Il nodo ricerca nella struttura LocalEnvironment associata al messaggio corrente le informazioni relative alla serie di caratteri memorizzate in un elemento denominato ComIbmXslXmltOutputcharset.

      Ad esempio, per codificare l'output della trasformazione come UTF-8, immettere il valore 1208 come stringa in questo elemento.

      Poiché questo nodo era disponibile in un SupportPac per la Versione 2.1 e l'elemento ComIbmXslMqsiOutputcharset era utilizzato per la serie di caratteri di output, il nodo corrente controlla entrambi gli elementi. Se sono presenti entrambi, il valore in ComIbmXslXmltOutputcharset ha la precedenza.

    2. Priorità di selezione attributo nodo broker, che ha quindi un valore predefinito 2. Il nodo utilizza la proprietà Serie di caratteri di output per stabilire il valore corretto.

      Se si imposta un valore per Serie di caratteri di output, il valore immesso deve essere numerico. Ad esempio, per codificare l'output della trasformazione come UTF-16, immettere 1200.

    E' possibile impostare sullo stesso valore più di una proprietà, sebbene non sia consigliabile. In questo caso, l'ordine di priorità impostato dal nodo è l'ordine predefinito sopra indicato.

    Se si imposta un valore 0, il nodo non ricerca nell'ubicazione corrispondente l'identificazione della serie di caratteri.

    Se il nodo non riesce a stabilire la serie di caratteri di output da nessuna di queste due origini, o perché non è impostato alcun valore o perché le priorità di selezione sono impostate su 0, viene utilizzato il valore predefinito 1208 (UTF8). (La specifica XSL indica che è possibile specificare la serie di caratteri di output nel foglio di stile; tuttavia, il nodo XMLTransformation ignora questo valore.)

  6. Selezionare Traccia dettagli nel Navigator della finestra di dialogo delle proprietà per tenere traccia delle azioni del nodo XMLTransformation. Il valore predefinito per la proprietà Traccia dettagli è Off. Per attivare la traccia, impostare la proprietà su On.

    Le informazioni relative alla traccia sono scritte su un file di traccia XMLTTrace.log:

    • Sui sistemi z/OS, il file è ubicato in <broker_dir>/output, dove <broker_dir> è la directory in cui è stato installato il broker
    • Sui sistemi Windows, il file è ubicato in <percorso di lavoro del broker>\common\log.
    • Sui sistemi UNIX, il file è ubicato in <percorso di lavoro del broker>\common\log.

    Se si attiva la traccia dettagliata per un nodo XMLTransformation, è attivata per tutti i nodi nel gruppo di esecuzione.

    Nota: questa proprietà ora è obsoleta. Qualsiasi traccia significativa adesso confluisce nella traccia utente, ammesso che la traccia di debug utente sia abilitata. L'impostazione di Traccia dettagli nel nodo XMLTransformation non influisce su alcuna traccia utente.
  7. Selezionare Descrizione nel Navigator della finestra di dialogo delle proprietà per immettere una descrizione breve, una descrizione completa o entrambe.
  8. Fare clic su Applica per effettuare le modifiche al nodo XMLTransformation senza chiudere la finestra di dialogo delle proprietà. Fare clic su OK per applicare le modifiche e chiudere la finestra di dialogo delle proprietà.

    Fare clic su Annulla per chiudere la finestra di dialogo ed eliminare tutte le modifiche apportate alle proprietà.

  9. Inizio modificaArrestare e riavviare il gruppo di esecuzione.Fine modifica
Se si stanno gestendo messaggi XML di grandi dimensioni e si riceve un errore di 'mancanza di memoria', è possibile utilizzare il comando mqsireportproperties per visualizzare il valore corrente della dimensione Heap Java per il motore XSLT e il comando mqsichangeproperties per aumentarlo:
mqsireportproperties brokerName -e executionGroupLabel -o ComIbmJVMManager -n jvmMaxHeapSize
mqsichangeproperties brokerName -e executionGroupLabel -o ComIbmJVMManager -n jvmMaxHeapSize -v newSize
sostituendo brokerName, executionGroupLabel e newSize con i valori appropriati.

Inizio modificaIl valore da scegliere per newSize dipende dalla quantità di memoria fisica che ha il proprio computer e da quanto si sta utilizzando Java. Si suggerisce un valore nell'intervallo compreso tra 512 MB (536870912) e 1 GB (1073741824).Fine modifica

Terminali e proprietà

I terminali del nodo XMLTransformation sono descritti nella seguente tabella.

Terminale Descrizione
In Il terminale di input che accetta il messaggio per l'elaborazione da parte del nodo.
Failure Il terminale di output a cui è instradato il messaggio originale se viene rilevato un errore durante la trasformazione.
Out Il terminale di output a cui è instradato il messaggio trasformato con esito positivo.

Le seguenti tabelle descrivono le proprietà del nodo; la colonna con l'intestazione O indica se la proprietà è obbligatoria (contrassegnata con un asterisco nella finestra di dialogo delle proprietà, se è necessario immettere un valore quando non è specificato un valore predefinito), la colonna con l'intestazione C indica se la proprietà è configurabile (è possibile modificare il valore quando si aggiunge un flusso di messaggi a un file bar per distribuirlo).

Le proprietà relative al foglio di stile del nodo XMLTransformation sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Priorità di selezione XML integrato No 1 Il valore di priorità per la ricerca delle informazioni sull'ubicazione del foglio di stile nei dati XML.
Priorità di selezione ambiente messaggio No 2 Il valore di priorità per la ricerca delle informazioni sull'ubicazione del foglio di stile nella cartella LocalEnvironment del messaggio corrente.
Priorità di selezione attributo nodo broker No 3 Il valore priorità per la ricerca delle informazioni sull'ubicazione del foglio di stile come proprietà del nodo
Nome foglio di stile No   Il nome del foglio di stile, utilizzato se la specifica del foglio di stile viene ricercata nelle proprietà del nodo.
Directory foglio di stile No   Il percorso in cui è localizzato il foglio di stile. Utilizzato da tutti i metodi di ubicazione.
Livello cache del foglio di stile No No 5 Il numero di fogli di stile compilati o analizzati che sono memorizzati in questa istanza del nodo.

Le proprietà Serie di caratteri di output del nodo XMLTransformation sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Priorità di selezione ambiente messaggio No 1 Il valore di priorità per la ricerca dell'ID Serie di caratteri di output nella cartella LocalEnvironment del messaggio corrente.
Priorità di selezione attributo nodo broker No 2 Il valore di priorità per la ricerca dell'ID Serie di caratteri di output come proprietà del nodo.
Serie di caratteri di output No No   Il valore numerico della Serie di caratteri di output

Le proprietà Traccia dettagli del nodo XMLTransformation sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Impostazione traccia No Off Indica se la traccia è attiva o non attiva. Se la traccia è attiva, la traccia di livello basso è registrata in un file.

Le proprietà Descrizione del nodo XMLTransformation sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Descrizione breve No No   Una breve descrizione del nodo.
Descrizione completa No No   Testo che descrive lo scopo del nodo nel flusso di messaggi.

Se il prologo del contenuto del messaggio di input contiene una dichiarazione di codifica XML, il nodo XMLTransformation ignora la codifica e utilizza sempre CodedCharSetId nella cartella di proprietà del messaggio per decodificare il messaggio.

Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac12490_