Manipolazione dei messaggi nel dominio XMLNS

Questo argomento fornisce informazioni specifiche per la gestione dei messaggi che appartengono al dominio XMLNS e che sono analizzati da un programma di analisi XML generico. Il dominio XMLNS è un'estensione del dominio XML e fornisce supporto spazio dei nomi. Seguire la guida fornita per i messaggi XML in Manipolazione dei messaggi nel dominio XML, insieme alle informazioni presenti nell'argomento Manipolazione del contenuto del messaggio.

Il seguente esempio mostra come utilizzare ESQL per gestire gli spazi dei nomi. L'esempio dichiara delle costanti per lo spazio dei nomi all'inizio del modulo principale in modo che si possano utilizzare i prefissi nelle istruzioni ESQL invece di URI completi dello spazio dei nomi.

Le costanti per lo spazio dei nomi hanno effetto solo sull'ESQL; esse non controllano i prefissi generati nel messaggio di output. I prefissi nel messaggio di output generato sono controllati dalle dichiarazioni dello spazio dei nomi. E' possibile includere dichiarazioni spazio dei nomi nella struttura ad albero utilizzando il nome di correlazione XML.NamespaceDecl. Questi elementi sono quindi utilizzati per generare le dichiarazioni spazio dei nomi nel messaggio di output.

Se, quando viene generato il messaggio di output, lo spazio dei nomi con cui è qualificato un elemento o attributo non ha una dichiarazione dello spazio dei nomi corrispondente, ne viene generata una automaticamente utilizzando i prefissi del formato NSn dove n è un numero intero positivo.

CREATE COMPUTE MODULE xmlns_doc_flow_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();

-- Dichiarazione delle costanti spazio dei nomi
DECLARE sp1 NAMESPACE 'http://www.ibm.com/space1';
DECLARE sp2 NAMESPACE 'http://www.ibm.com/space2';
DECLARE sp3 NAMESPACE 'http://www.ibm.com/space3';

-- Dichiarazione spazio dei nomi per associare il prefisso 'space1' allo spazio dei nomi
SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1';  
SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!';      
 
-- Dichiarazione spazio dei nomi predefinito
SET OutputRoot.XMLNS.message.sp2:data2.(XML.NamespaceDecl)xmlns = 'http://www.ibm.com/space2';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData1 = 'Hola!';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData2 = 'Guten Tag!';

SET OutputRoot.XMLNS.message.sp3:data3 = 'Bonjour!';

SET OutputRoot.Properties.MessageDomain = 'XMLNS';

RETURN TRUE;
END;

CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;

END MODULE;
Quando viene elaborato questo ESQL, viene generato il seguente messaggio di output:
<message xmlns:space1="http://www.ibm.com/space1">
 <space1:data1>Hello!</space1:data1>
 <data2 xmlns="http://www.ibm.com/space2">
  <subData1>Hola!</subData1>
  <subData2>Guten Tag!</subData2>
 </data2>
 <NS1:data3 xmlns:NS1="http://www.ibm.com/space3">Bonjour!</NS1:data3>
</message>

È inoltre possibile specificare un'analisi opaca per un elemento nominato XML (e suoi discendenti, se è un elemento complesso). In altre parole, viene creato un singolo elemento denominato nell'albero dei messaggi con un valore (codificato in UTF-16) che contiene l'attuale flusso di dati XML contenuto tra i tag di inizio e fine dell'elemento opaco. Questa opzione può fornire benefici alle prestazioni se i contenuti di un elemento non risultano importanti all'interno del flusso di messaggi.

Per assegnare l'analisi opaca su un elemento XML, utilizzare un'istruzione ESQL CREATE con clausola PARSE per analizzare il documento XML. Impostare il qualificatore FORMAT della clausola PARSE sulla stringa costante e sensibile al maiuscolo/minuscolo 'XMLNS_OPAQUE' e il qualificatore TYPE della clausola PARSE sul nome dell'elemento XML da analizzare in modo opaco. La clausola TYPE può indicare il nome dell'elemento senza spazio dei nomi (per poter corrispondere ogni spazio dei nomi), con un prefisso di spazio dei nomi o un URI dello spazio dei nomi completo (per corrispondere uno specifico spazio dei nomi).

Prendere in considerazione il seguente esempio:

DECLARE soap NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';

DECLARE BitStream BLOB ASBITSTREAM(InputRoot.XMLNS
                                   ENCODING InputRoot.Properties.Encoding
                                   CCSID InputRoot.Properties.CodedCharSetId);
--No spazio dei nomi
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')	
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE 'Body');

--Prefisso spazio dei nomi
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE 'soap:Body');

--URI dello spazio dei nomi
  CREATE LASTCHILD OF OutputRoot
    DOMAIN('XMLNS')
          PARSE (BitStream
                 ENCODING InputRoot.Properties.Encoding
                 CCSID InputRoot.Properties.CodedCharSetId
                 FORMAT 'XMLNS_OPAQUE'
                 TYPE '{http://schemas.xmlsoap.org/soap/envelope/}Body');

L'analisi opaca degli elementi XML è disponibile solo nel dominio XMLNS; e il controllo sulla relativa specifica può subire modifiche nei rilasci successivi.

Per ulteriori informazioni su CREATE ed esempi relativi al suo utilizzo, consultare Istruzione CREATE.

Concetti correlati
Panoramica dei flussi di messaggi
Domini e programmi di analisi XML
Panoramica di ESQL
Attività correlate
Progettazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Manipolazione dei messaggi nel dominio XML
Riferimenti correlati
Riferimento ESQL
Istruzione DECLARE
Istruzione SET
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac17330_