O prefixo "xsi" é o prefixo de namespace usado, por convenção, para o namespace da instância do Esquema XML. Os documentos XML que contêm elementos que têm um atributo
xsi:type. Esse comportamento fornece um tipo de dados explícito para o elemento.
O analisador XML MRM é sensível aos atributos xsi:type do documento XML. Ele modifica o tipo de dados do elemento conforme necessário e inclui o atributo
xsi:type na árvore de mensagens.
O gravador de XML MRM é sensível aos atributos xsi:type da árvore de mensagens. Ele produz os atributos xsi:type de acordo com a propriedade do conjunto de mensagens de Formato de Ligação XML Política de saída para atributos xsi:type.
Por exemplo, o atributo xsi:type pode ser removido, colocado na saída
de todos os elementos ou na saída de acordo com as regras especificadas no
padrão SOAP.
Se a validação for ativada para um fluxo de mensagens do WebSphere Message Broker, a lógica da validação será sensível aos atributos
xsi:type e irá utilizá-los para modificar a validação do elemento. Ela também validará
os valores dos atributos xsi:type usando as regras descritas em Esquema
XML Parte 1: Estruturas no Web site do World Wide Web Consortium
(W3C).
Há vários pontos importantes a serem lembrados ao analisar e gravar
documentos XML que contêm atributos xsi:type.
- Para detectar e utilizar atributos xsi:type, o conjunto de mensagens deve ser
ativado para o namespace. Para que um conjunto de mensagens seja ativado para o namespace, verifique a propriedade Utilizar Namespaces do conjunto de mensagens.
- Se o valor do atributo xsi:type contiver um prefixo de namespace,
o prefixo será expandido para um URI completo pelo analisador XML MRM.
Se o mesmo atributo xsi:type for produzido posteriormente pelo transcritor XML MRM,
o mesmo prefixo não será usado automaticamente para o valor. É possível controlar
os prefixos usados na saída usando a lista Configurações de Namespace
nas propriedades do conjunto de mensagens Formato de Ligação XML. Se nenhum prefixo for fornecido,
o transcritor XML designará um prefixo padrão.
- Se o atributo xsi:type de um elemento não resolver para um
tipo no modelo, o comportamento dependerá de se a validação de MRM
está ativada. Se não estiver validando, o MRM assumirá que o tipo do
elemento é o declarado no modelo e continuará. Se estiver validando,
ocorrerá uma exceção de validação.
- Se a validação do MRM estiver ativada, quaisquer atributos xsi:type requeridos deverão estar presentes na árvore de mensagens no ponto onde a validação é executada. Um atributo xsi:type é requerido quando seu valor é diferente do tipo de dados do elemento, conforme definido no modelo de mensagem (isso ocorre mais comumente quando a derivação do tipo do Esquema XML é utilizada).
- Se a validação estiver sendo executada em uma mensagem de entrada, o
analisador XML do MRM assegurará que os atributos xsi:type apareçam na
árvore de mensagens, conforme descrito acima.
- Se a validação estiver sendo executada em uma mensagem de saída, você deverá
assegurar que os atributos xsi:type corretos apareçam na árvore de
mensagens. Assegure que quaisquer atributos xsi:type necessários sejam copiados da
árvore de mensagens de entrada para a árvore de mensagens de saída ou sejam criados
explicitamente na árvore de mensagens de saída.
- Se estiver usando tipos simples que são xsd:unions, um atributo
xsi:type poderá ser usado para direcionar o analisador XML do MRM ao resolver
a união.
- Se tiver migrado de uma versão anterior do WebSphere Message Broker que não considerava os atributos xsi:type, você pode observar algumas alterações de comportamento.
Por exemplo, os atributos xsi:type não são mais tratados como atributos de auto-definição; portanto, aparecem na árvore de mensagens com o nome 'type' em vez de '@type'. Se a lógica do fluxo de mensagens considerar atributos xsi:type na árvore de mensagens,
altere seu fluxo de mensagens para ficar de acordo com o comportamento atual.
Para obter mais informações sobre os atributos xsi:type, consulte o Esquema XML
Parte 0: Primer no website do World Wide Web Consortium (W3C).