Un tipo simple es una definición abstracta de un elemento de datos como un número, una serie o una fecha.
El propósito de un tipo simple es definir el contenido de uno o más elementos simples. Las restricciones de valores puede aplicarse a un tipo simple para restringir los valores de cualquier elemento basados en el mismo.
Los tipos simples (y cualquier elemento basado en los mismos) no pueden contener atributos o elementos hijo. Los tipos simples se contraponen a los tipos complejos, que definen la estructura de un elemento que normalmente no definen ningún tipo de datos simple.
El esquema XML predefine un amplio rango de tipos simples que siempre están disponibles en el editor de mensajes de flujo. Otros tipos simples pueden derivar de estos tipos incorporados añadiendo restricciones de valores que personalicen el tipo incorporado.
Un tipo simple puede derivar de otro tipo simple (el tipo base) mediante restricción. Cualquier restricción de valores aplicada al tipo derivado debe restringir aún mas el tipo base (y cualquier elemento basado en el mismo). Es ilegal que un tipo derivado debilite o elimine una restricción de valor cuyo tipo base ha definido.
Si no se aplican restricciones de valores al tipo derivados, será casi idéntico a su tipo base, aunque se tratará como una restricción del tipo base en las situaciones en las que sea relevante (herencia de tipos y sustitución de elementos).
Los tipos simples pueden ser globales o locales. Un tipo global puede utilizarse como base para más de un elemento. Debe proporcionársele un nombre exclusivo por el cual pueda ser referenciado. Un tipo simple local se asocia con un elemento simple, y no está disponible para su reutilización en el modelo de mensajes. Los tipos locales no necesitan un nombre, y aparecen como ANONYMOUS en el editor de mensajes de flujo.