Os elementos vazios e os valores nulos ocorrem frequentemente nos documentos XML.
Um fluxo de mensagens robusto deve ser capaz de reconhecer e manipular elementos vazios e valores nulos. De maneira semelhante, os elementos em uma árvore de mensagens podem ter um valor NULL, um valor vazio ou nenhum valor. Este tópico explica a análise e a gravação desses valores pelo domínio XMLNSC. Para obter detalhes sobre o processamento de valores nulos em Mapas de dados gráficos e ESQL, consulte Manipulando valores nulos.
Descrição | Entrada XML analisada por XMLNSC | Valor de 'elemento' na árvore de mensagens |
---|---|---|
Valor de elemento vazio | <element/> | Cadeia vazia |
Valor de elemento vazio | <element></element> | Cadeia vazia |
Pasta com elementos-filhos | <element><childElement/></element> | Nenhum valor |
Valor de Elemento Nil | <element xsi:nil="true"/> | Nenhum valor e um atributo filho xsi:nil com o valor 'true'. |
Observe que ambas as formas de elemento vazio resultam no mesmo valor na árvore de mensagens.
Descrição | Valor de 'elemento' na árvore de mensagens | Saída XML do Analisador XMLNSC |
---|---|---|
Valor de elemento vazio | Cadeia vazia | <element/> |
Valor de elemento nulo | NULL | <element/> |
Pasta com elementos-filhos | Nenhum valor | <element><childElement/></element> |
Valor de Elemento Nil | Sequência vazia, NULL, ou pasta | <element xsi:nil="true"/> Observe que o analisador XMLNSC produz apenas atributos xsi:nil que já estão na árvore de mensagens. Ele não produz automaticamente atributos xsi:nil para todos os elementos da árvore de mensagens que possuem um valor NULL e são 'nillable'. |
- <element/>
- <element></element>
O analisador XMLNSC trata das duas formas da mesma maneira. O elemento é incluído na árvore de mensagens com um valor de "" (a sequência vazia).
Quando uma árvore de mensagens é produzida pelo analisador XMLNSC, ela sempre usa a primeira forma para elementos que possuam um valor de "" (a sequência vazia).
Se a validação for ativada para o fluxo, o analisador XMLNSC executará as validações a seguir:
Se o elemento no documento possuir um atributo xsi:nil com o valor 'true', o elemento não deverá ter um valor ou conter quaisquer elementos filhos.
O elemento no documento de entrada não deve ter um atributo xsi:nil.
Se um elemento no documento de entrada tiver um atributo xsi:nil, o analisador XMLNSC criará um elemento na árvore de mensagens sem nenhum valor e um atributo filho xsi:nil com o valor 'true' ou 'false', conforme apropriado.
Quando uma árvore de mensagens é gravada em um fluxo de bits pelo analisador XMLNSC, se o valor do elemento for vazio, NULL ou não tiver nenhum valor e o elemento não tiver elementos filhos, o elemento será gravado como <element/>. Se o elemento tiver um atributo xsi:nil, ele será gravado exatamente como qualquer outro atributo.
Observe que o analisador XMLNSC produz apenas atributos xsi:nil que já estão na árvore de mensagens. Ele não produz automaticamente atributos xsi:nil para todos os elementos da árvore de mensagens que possuem um valor NULL e são 'nillable'.