Um tipo simples é uma definição abstrata de um item de dados, tal como um número, uma cadeia ou uma data.
A finalidade de um tipo simples é definir o conteúdo de um ou mais elementos simples. Os tipos simples (e os elementos baseados neles) não podem conter atributos ou elementos filhos. Os tipos simples permanecem em contraste com os tipos complexos, que definem a estrutura de um elemento mas, geralmente, não definem dados simples.
Os tipos simples podem ser globais ou locais. Um tipo simples global pode ser utilizado como a base para mais de um elemento. Ele deve ter um nome exclusivo pelo qual pode ser referido. Um tipo simples local está associado a um único elemento, e não está disponível para reutilização em outro lugar no modelo de mensagem. Os tipos locais não precisam de um nome e são exibidos como {Local simpleType} pelo editor de definição de mensagem.
Um tipo simples pode ser derivado de outro tipo simples (o tipo base) por restrição. Um tipo de restrição pode ter limitações de valores aplicadas a ele.
Um tipo de restrição pode ser definido como um tipo simples interno, um tipo simples definido pelo usuário ou um tipo simples local definido anonimamente na restrição.
Um tipo de lista é uma forma de processamento de um valor simples de repetição. A notação é mais compacta do que a notação para um elemento de repetição e oferece uma forma de ter atributos com diversos valores.
Um tipo de lista pode ser baseado em um tipo de união. Isto pode descrever uma lista de itens separados por espaço em que cada item pode ser baseado em qualquer um dos tipos simples na união.
Uma lista de listas não é válida. O tipo de item de uma lista não pode ser a própria lista ou ser derivado de nenhum nível de outro tipo de lista e resultará em um erro da lista de tarefas no editor.
Um tipo de lista pode ter os aspectos minLength, maxLength e length aplicados a ele. Esses aspectos restringem o número de itens da lista. Para restringir os valores de cada item da lista, os aspectos devem ser aplicados no tipo de item e não na lista em si. O editor de definição de mensagem fornece suporte adicional para aspectos de enumeração e padrão diretamente em um tipo de Lista para permitir a importação de qualquer esquema utilizando-os, mas emitirá um aviso de que os aspectos de enumeração e padrão serão ignorados pelo Intermediário.
Um tipo de união é como uma união de dois ou mais tipos simples diferentes.
Um tipo de união permite que um valor esteja de acordo com qualquer um dos vários tipos simples diferentes. Os tipos simples que formam um tipo de união são conhecidos como tipos de membros. Não existe um limite superior para a quantidade de tipos de membros que devem existir, mas deve haver pelo menos um. Um tipo de membro pode ser definido como um tipo simples interno, um tipo simples definido pelo usuário ou um tipo simples local definido anonimamente no tipo de união.
Um tipo de união também pode incluir tipos de lista, união e simples restritos entre seus membros.
O intermediário não aplica restrições de valor até que os dados estejam na árvore lógica. Isso significa que não será possível escolher entre dois tipos simples que são derivados do mesmo tipo fundamental, mas com restrições diferentes (por exemplo, inteiro com intervalo de 1 a 10 e inteiro com intervalo de 11 a 20). Um aviso aparecerá na lista de tarefas se isso for tentado e o intermediário simplesmente ignorará as restrições quando for resolver a união. O editor de definição de mensagem fornece suporte adicional para aspectos de enumeração e padrão diretamente em um tipo de União para permitir a importação de qualquer esquema utilizando-os, mas emitirá um aviso de que os aspectos de enumeração e padrão serão ignorados pelo intermediário.
Quaisquer restrições de valores aplicadas ao tipo derivado devem restringir ainda mais o tipo base (e os elementos baseados nele). É inválido para um tipo derivado reduzir ou remover uma restrição de valor definida por seu tipo base. Se nenhuma restrição de valor for aplicada ao tipo derivado, ele será quase idêntico a seu tipo base, embora seja tratado como uma restrição do tipo base em situações nas quais ele é relevante (herança de tipo e substituição de elemento).