Os espaços de nomes nas mensagens XML são suportados pelos analisadores
XMLNSC e XMLNS. Os espaços de nomes não são suportados pelo analisador
XML.
Analisando
Os analisadores XMLNS e XMLNSC podem analisar
qualquer documento XML bem-formado, independentemente de o documento conter, ou não,
os espaços de nomes. Se os elementos ou os atributos tiverem espaços de nomes,
esses espaços de nomes serão aplicados aos elementos e aos atributos na árvore de
mensagens. Os mapeamentos de prefixo de espaço de nomes também são transportados na
árvore de mensagens e são utilizados ao serializar a árvore de mensagens de volta
para XML.
- Se um elemento ou um atributo no XML de entrada tiver um espaço de nomes, o nó
correspondente da árvore de mensagens também terá esse espaço de nomes.
- Se um elemento contiver uma declaração de espaço de nomes (um atributo
xmlns), um elemento filho que contém seu prefixo e a
URI de espaço de nomes será criado na árvore de mensagens.
Embora a mensagem esteja atravessando um fluxo de mensagens, os
espaços de nomes e os mapeamentos de espaço de nomes podem ser modificados utilizando o
ESQL ou qualquer outra tecnologia de transformação que seja oferecida pelo
intermediário de mensagens.
Gravando
Os espaços de nomes e seus prefixos são
preservados na árvore de mensagens na análise e são usados quando os analisadores
XMLNS e XMLNSC converterem uma árvore de mensagens em um fluxo de bits
XML.
- Ao serializar uma árvore de mensagens, o analisador varre as declarações de
espaço de nomes em cada elemento XML. Se alguma for localizada, ela será utilizada
para selecionar os prefixos de espaço de nomes no documento de saída.
- Se um elemento na árvore de mensagens tiver um espaço de nomes, mas não houver
uma declaração de espaço de nomes no escopo para sua
URI de espaço de nomes, um prefixo de espaço de nomes válido será automaticamente
gerado e utilizado no XML de saída. Os prefixos gerados automaticamente
possuem o formato NS1, NS2 e assim por diante.
Dica: Se um elemento na
árvore de mensagens tiver um elemento filho que seja uma declaração
de ‘espaço de nomes padrão', cada filho desse elemento
(seja um elemento XML ou um atributo XML, em qualquer profundidade de aninhamento)
deve ter um espaço de nomes. Se esta regra não for forçada, o intermediário de mensagem não poderá
gerar a saída XML correta para a árvore de mensagens.