Un tipo semplice è una definizione astratta di un elemento di dati, ad esempio un numero, una stringa o una data.
Lo scopo di un tipo semplice è la definizione del contenuto di uno o più elementi semplici. I tipi semplici (e qualsiasi elemento che vi si basa) non sono in grado di contenere elementi child o attributi. I tipi semplici sono in contrasto con i tipi complessi, che definiscono la struttura di un elemento ma di solito non definiscono alcun dato semplice.
E' possibile disporre di tipi semplici globali o locali. È possibile utilizzare un tipo semplice globale come base per più di un elemento. E' necessario assegnarvi un nome univoco di riferimento. Un tipo semplice locale viene associato con un singolo elemento e non è possibile riutilizzarlo altrove nel modello di messaggi. Non è necessario un nome per i tipi locali, visualizzati come {simpleType locale} dall'editor di definizione dei messaggi.
E' possibile derivare un tipo semplice da un altro tipo semplice (il tipo di base) per restrizione. E' possibile che al tipo di restrizione siano applicati vincoli valore.
E' possibile definire un tipo di restrizione come tipo semplice integrato, un tipo semplice definito dall'utente o un tipo semplice locale definito in modo anonimo nella restrizione.
Un tipo elenco è una modalità di rappresentazione di un valore ripetuto semplice. La notazione è più compatta della notazione di un elemento ripetuto e offre la possibilità di disporre di attributi multivalore.
E' possibile che un tipo elenco si basi su un tipo di unione. Questo descrive un elenco separato da spazi di elementi in cui è possibile che ciascun elemento si basi su uno qualsiasi dei tipi semplici nell'unione.
Un elenco di elenchi non è consentito. Non è possibile che il tipo di elemento di un elenco sia un elenco o derivato a un livello qualsiasi da un altro tipo elenco e tale situazione provoca un errore dell'elenco delle attività nell'editor.
E' possibile applicare a un tipo elenco facet minLength, maxLength e della lunghezza. Questi facet limitano il numero di elementi nell'elenco. Per limitare i valori di ciascun elemento nell'elenco, applicare i facet al tipo di elemento anziché all'elenco. L'editor di definizione dei messaggi fornisce supporto diretto aggiuntivo per i facet modello e di enumerazione in un tipo Elenco in modo da abilitare l'importazione di qualsiasi schema che li utilizza, ma indicherà che i facet modello e di enumerazione verranno ignorati dal broker.
Un tipo unione è una combinazione di due o più tipi semplici diversi.
Un tipo unione consente a un valore di essere conforme a uno qualsiasi di numerosi tipi semplici differenti. I tipi semplici che compongono un tipo unione sono conosciuti come tipi di membro. Non esiste un limite superiore per la quantità di tipi di membri possibili, ma è necessario che ne sia presente almeno uno. E' possibile definire un tipo di membro come un tipo semplice integrato, un tipo semplice definito dall'utente o un tipo semplice locale definito in modo anonimo all'interno del tipo unione.
E' possibile includere tra i membri di un tipo unione tipi semplici limitati, unione ed elenco.
Il broker non applica i vincoli valore finché i dati non saranno nell'albero logico. Ciò significa che non sarà possibile scegliere tra due tipi semplici derivati dallo stesso tipo fondamentale ma con vincoli differenti (ad esempio, un numero intero compreso tra 1 e 10 e un numero intero compreso tra 11 e 20). Verrà visualizzata un'avvertenza nell'elenco delle attività se viene effettuato tale tentativo e il broker ignorerà i vincoli quando l'unione viene risolta. L'editor di definizione dei messaggi fornisce supporto diretto aggiuntivo per i facet modello e di enumerazione in un tipo Unione in modo da abilitare l'importazione di qualsiasi schema che li utilizza, ma indicherà che i facet modello e di enumerazione verranno ignorati dal broker.
E' necessario limitare il tipo base (e qualsiasi elemento basato su di esso) ulteriormente con i vincoli valore applicati al tipo derivato. Non è consentito a un tipo derivato ridurre o rimuovere un vincolo valore definito dal relativo tipo base. Se al tipo derivato non sono applicati vincoli valore, sarà pressoché identico al tipo di base, anche se verrà considerato come restrizione del tipo di base in situazioni in cui è rilevante (eredità tipo e sostituzione dell'elemento).