Ao importar um Esquema XML para um conjunto de mensagens que suporta espaços de nomes, Redefinir Construção é aceito, mas faz com que uma mensagem de erro seja exibida na lista de tarefas, pois não é totalmente suportado.
Segue um exemplo de Redefinir Construção:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Unsupported feature: redefine --> <redefine schemaLocation="test.xsd"/> </schema>
Ao importar um Esquema XML em um conjunto de mensagens que suporta espaços de nomes, as construções abaixo são aceitas, mas serão ignoradas e não serão implementadas no intermediário. Quando o usuário tenta importar um esquema contendo uma ou mais dessas construções, um aviso é emitido afirmando que serão ignoradas. Você estará apto a excluir essas construções, mas não haverá propriedades que possam ser configuradas para elas.
Se você extrair o modelo lógico para a mensagem (por exemplo, utilizando o recurso Geração de Esquemas), essas construções são ignoradas e não estão incluídas no esquema de saída.
A seguir há uma lista dessas declarações de esquema:
A seguir um exemplo de cada uma dessas construções:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Accepted feature: unique --> <element name="element1" type="string"> <unique name="unique1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </unique> </element> <!-- Accepted feature: key --> <element name="element2" type="string"> <key name="key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </key> </element> <!-- Accepted feature: keyref --> <element name="element3" type="string"> <keyref name="keyref1" refer="ibm:key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </keyref> </element> </schema>
O problema ocorre quando um esquema XML, que possui um espaço de nomes de destino, inclui outro esquema XML que não possui espaço de nomes de destino. O Local de Esquema, criado no modelo da mensagem para inclusão, especifica apenas o nome do arquivo. Isso não considera que os arquivos de definição de mensagem sendo incluídos e já incluídos estão em diferentes diretórios no modelo da mensagem.
É possível corrigir o problema a partir de workbench, selecionando a guia Propriedades do arquivo de definição de mensagem incluído no Editor de Definição de Mensagem. Exclua a entrada de inclusão, selecionando o arquivo correto a partir do menu de arquivos.
O usuário pode aceitar, rejeitar ou modificar estas construções com base nas preferências configuradas pelo usuário na página de preferências Importador do Esquema XML (ou no arquivo de opções de importação de mqsicreatemsgdefs).
Se o usuário especificar "rejeitar", quando a construção for encontrada, a importação pára e é comunicado um erro.
Se o usuário especificar "modificar" (o padrão), quando a construção for encontrada, o importador modificará o arquivo de definição de mensagem resultante da seguinte forma:
Observe que estas modificações são modificações equivalentes que foram desempenhadas pelo comando do importador de Esquema Versão 2.1, para compatibilidade.
Se o usuário especificar "aceitar", quando a construção for encontrada, o importador importará a construção como ela está. Isto pode resultar em erros da lista de tarefas, dependendo da construção, conforme descrito para conjuntos de mensagens com suporte a espaço de nomes.
A seguir um exemplo de cada uma dessas construções:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Supported feature: redefine --> <redefine schemaLocation="test.xsd"/> <!-- Supported feature: import --> <import schemaLocation="test1.xsd" namespace="http://www.ibm1.com"/> <!-- Supported feature: list --> <simpleType name="type1"> <list itemType="string" /> </simpleType> <!-- Supported feature: union --> <simpleType name="type2"> <union memberTypes="string" /> </simpleType> <!-- Supported feature: abstract complex type --> <complexType name="type3" abstract="true"></complexType> <!-- Supported feature: abstract element --> <element name="element" type="string" abstract="true"></element> </schema>
A lista de construções e a ação executada são iguais para um conjunto de mensagens com suporte a espaço de nomes, conforme descrito acima.
Ao importar um Esquema XML em um conjunto de mensagens que não suporta espaços de nomes, não é possível importar um documento do esquema que possui um espaço de nomes de destino que não é qualificado com um prefixo. Por exemplo:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns="http://www.ibm.com"> </xsd:schema>