Uma mensagem comercial pode conter campos vazios ou que têm um valor específico fora do intervalo. Nesses casos, o aplicativo que recebe a mensagem deve tratar o campo como se não tivesse um valor. A árvore de mensagens lógicas suporta esse conceito, permitindo que o valor de qualquer elemento seja configurado para NULL.
Em um documento XML, a maneira comum de representar um valor nulo é deixar o elemento ou atributo vazio.
Por exemplo: <price></price> ou <element price=""/>
O atributo xsi:nil fornece uma maneira de tornar isso mais explícito: price=<xsi:nil="true"/>
Algumas mensagens de negócios usam um valor especial para representar um valor nulo: <price>-999</price>. Esse estilo de representação de valor nulo é suportado pelos analisadores DFDL e MRM.
O analisador DFDL pode detectar um valor nulo que é representado por um valor fora do intervalo. O valor nulo deve ser especificado no esquema DFDL e pode ser igual ou diferente para cada elemento. No DFDL ele é chamado de valor inexistente. Ao analisar, o analisador DFDL verifica o valor inexistente de cada elemento da mensagem. Se o valor do fluxo de bits corresponder ao valor inexistente no esquema DFDL, o analisador DFDL configurará o valor na árvore de mensagens como NULL. A mesma verificação é executada ao converter uma árvore de mensagens em um fluxo de bits. Se o valor na árvore de mensagens for NULL, o analisador DFDL exibirá o valor inexistente do esquema DFDL.
Para obter informações adicionais, consulte A especificação DFDL 1.0, seção 13.15.
Utilizando ESQL, é possível configurar o valor de um elemento de árvore de mensagens para NULL:
SET OutputRoot.XMLNSC.myField VALUE = NULL;
Observe que isso é diferente de SET OutputRoot.XMLNSC.myField = NULL;, que poderia fazer com que myField fosse excluído da árvore de mensagens.
O mesmo efeito pode ser obtido utilizando Java.
Em geral, os analisadores XML (XMLNSC, XMLNS e XML) não criam valores nulos na árvore de mensagens; uma elemento vazio ou um valor de atributo vazio meramente produz um valor de cadeia vazia na árvore de mensagens.
Se a validação estiver ativada, o analisador XMLNSC detecta e processa os atributos xsi:nil no documento de entrada. Se o atributo xsi:nil for configurado como 'true', e o elemento for anulável, o elemento-pai do atributo na árvore de mensagens receberá um valor nulo.
Para maiores informações sobre suporte para o analisador XML para elementos nulos e valores nulos, consulte Elementos Vazios do XMLNSC e Valores Nulos and Elementos Vazios XMLNS e Valores Nulos.
Formato Físico XML
ao analisar, o analisador MRM XML pode detectar e processar atributos xsi:nil no documento XML de entrada. Se o atributo xsi:nil for configurado como 'true', e o elemento for anulável, o elemento-pai do atributo na árvore de mensagens receberá um valor nulo.
Para obter informações sobre como ativar o suporte a xsi:nil no analisado MRM, consulte Conjuntos de Mensagens: Opções de Manipulação Nulas XML.
Os seguinte tópicos fornecem informações adicionais sobre a manipulação de valores nulos no analisador MRM:
Todos os Formatos Físicos
O analisador MRM pode detectar um valor nulo representado por um valor fora do intervalo. O valor nulo deve ser especificado no formato físico da mensagem.
Ao analisar, o analisador MRM verifica o valor nulo de cada elemento da mensagem. Se o valor do fluxo de bits corresponder ao valor nulo no conjunto de mensagens, o analisador MRM configura o valor na árvore de mensagens para NULL.
A mesma verificação é executada ao converter uma árvore de mensagens em um fluxo de bits. Se o valor da árvore de mensagens dor NULL, o analisador MRM exibe o valor nulo do conjunto de mensagens.
O formato JSON suporta NULL como um tipo de valor JSON.
Quando uma mensagem JSON inclui um objeto com um valor nulo, o analisador JSON configura o valor na árvore de mensagens como NULL.
Ao serializar um elemento na árvore de mensagens com um valor nulo, o fluxo de bits JSON é construído como um objeto JSON com um valor igual a nulo.