Uma seção CData pode ser usada para integrar um documento XML a outro documento XML.
O que é uma seção CData?
Um elemento XML pode conter conteúdo de texto:<element>text content</element>
No entanto, alguns caracteres não pode aparecer nesse conteúdo. Especificamente, '<' e '&' têm significado especial para um analisador XML. Se forem incluídos no conteúdo de texto de um elemento, eles alteram o significado do documento XML. <element><text><content></element>
<element><text><content></element>
<element><![CDATA[<text><content>]]></element>
Para o que uma seção CData pode ser utilizada?
Em uma seção CData, é possível incluir marcação XML no valor de um elemento. No entanto, caracteres XML inválidos não podem ser incluídos. Dados binários também não podem ser incluídos em uma seção CData.<outer>
<embedXML>
<![CDATA[<innerMsg></innerMsg>]]>
</embedXML>
</outer>
<outer>
<embedXML>
<![CDATA[<badXML></wrongClosingTag>]]>
</embedXML>
</outer>
Os itens a seguir não são válidos em uma
seção CData: Como você inclui uma seção CData em uma mensagem XML de saída?
Considere a seguinte mensagem de entrada:
<TestCase>
<Folder>
<Field1>Value1</Field1>
<Field2>Value2</Field2>
<Field3>Value3</Field3>
</Folder>
</TestCase>
A ESQL a seguir mostra como serializar
uma mensagem inteira: DECLARE wholeMsgBlob BLOB
ASBITSTREAM(InputRoot.XMLNSC,
InputRoot.Properties.Encoding,
InputRoot.Properties.CodedCharSetId );
DECLARE wholeMsgChar CHAR
CAST(wholeMsgBlob AS CHAR CCSID InputRoot.Properties.CodedCharSetId);
SET OutputRoot.XMLNSC.Output.(XMLNSC.CDataField)Field1 = wholeMsgChar;
Este exemplo serializa a parte InputRoot.XMLNSC.TestCase.Folder da árvore de mensagens.
Se a árvore de mensagens de saída foi examinada antes de um nó MQOutput, isto mostraria:
(0x01000010):XML = (
(0x01000000):Output = (
(0x01000000):Field1 = (
(0x02000001): = '<TestCase><Folder><Field1>Value1</Field1><Field2>Value2</Field2>
<Field3>Value3</Field3></Folder><Folder2><Field1>Value1</Field1>
<Field2>Value2</Field2><Field3>Value3</Field3><Folder2></TestCase>'
)
)
)
Como pode ser visto, cada seção CData contém um único valor escalar que é a representação de caractere da parte da mensagem XML que é necessária.
Esta árvore produz a seguinte mensagem de saída XML:
<Output>
<Field1><![CDATA[<TestCase><Folder><Field1>Value 1</Field1>
<Field2>Value 2</Field2>
<Field3>Value 3</Field3></Folder>
<Folder2><Field1>Value 1</Field1>
<Field2>Value 2</Field2>
<Field3>Value 3</Field3></Folder2>
</TestCase>]]</Field1>
</Output>