Este tópico descreve como o analisador XML manipula nulos explícitos.
O domínio XML não possui um conceito de valor nulo no fluxo de bits da mensagem. Não existe nenhuma seqüência de bytes em uma mensagem XML que conduza à criação de um valor nulo explícito na árvore de mensagens pelo analisador XML. Embora o analisador não crie um campo da árvore de mensagens com um valor nulo explícito, você pode codificar o ESQL em um fluxo de mensagens que cria um campo com este formato.
Quando o analisador XML constrói um novo fluxo de bits de mensagem a partir da árvore de mensagens, ele pode encontrar valores nulos explícitos e deve ser capaz de manipulá-los. Neste caso, um valor nulo explícito é visto como "sem caracteres para gravação" e, portanto, o campo é criado como as tags vazias.
No domínio XML, existem diversos valores que conduzem à gravação de tags XML vazias na mensagem XML de saída:
Quando eles foram gravados como as marcações vazias em uma mensagem XML, se a mensagem XML for analisada subseqüentemente, não será possível distinguir entre estes três casos. Quando as marcações vazias forem analisadas em XML, será criado um campo da árvore de mensagens XML que não possui um valor. Isto é diferente de um campo da árvore de mensagens que contém um valor nulo explícito e um que contém uma cadeia de comprimento zero.
Embora o analisador XML resolva estes três valores de campos da árvore de mensagens diferentes para o mesmo resultado no fluxo de bits da mensagem, outras operações da árvore de mensagens poderão fazer a distinção deles. Embora o analisador XML não crie campos que contenham nulos explícitos e cadeias de comprimento zero, será possível executar operações em fluxos de mensagens que podem criá-los.
Portanto, se um fluxo de mensagens estiver processando mensagens no domínio XML, ESQL ou Java deverá distinguir entre um valor nulo explícito, uma cadeia de comprimento zero e um campo da árvore de mensagens que não possua um valor. Nem mesmo um campo que contenha o valor nulo explícito é considerado como nulo ao codificar ESQL para consultar o valor do elemento.
O processo de gravação XML pode manipular esta condição, no entanto, outras operações na ESQL não a tratam como um valor nulo. O domínio XML não possui um conceito de nulo e o analisador nunca cria um campo que contenha um valor nulo explícito. Como o domínio XML é um domínio baseado em caractere, quando o valor de um campo for consultado, ele retornará como um campo de caractere. Se você criar um campo da árvore de mensagens XML com um valor nulo explícito, ele não será visto como um valor nulo para as rotinas ESQL que obtêm o valor do campo da árvore de mensagens.
O que é retornado é a representação de caractere do conteúdo do campo que, neste caso, é a cadeia de caractere 'NULL'. Por exemplo, se você executar tais comparações com IS NULL, isto nunca será avaliado como um valor TRUE. Se você copiar este campo da árvore de mensagens para outra árvore de mensagens, o campo da árvore de mensagens de destino será populado com a cadeia de caracteres 'NULL'.