简单类型是数据(如数字、字符串或日期)项的抽象定义。
简单类型的用途是定义一个或多个简单元素的内容。简单类型(以及任何基于它们的元素)不能包含属性或子元素。简单类型与复杂类型形成对比,复杂类型定义元素的结构,但通常不定义任何简单数据。
简单类型可以是全局或本地的。全局简单类型可用作多个元素的基础。必须给它一个唯一的名称,可通过此名称引用它。本地简单类型与单个元素相关联,且不可在消息模型的任何其他地方重新使用。本地类型不需要名称,消息定义编辑器将其显示为 {Local simpleType}。
简单类型可以通过限制从另一个简单类型(基本类型)派生而来。限制类型可以具有其对应的值约束。
限制类型可以定义为内置简单类型,用户定义的简单类型或本地简单类型在此限制类型内匿名定义。
列表类型是呈现重复的简单值的一种方法。注释较重复元素的注释简洁,并提供了一种包含多值属性的方法。
列表类型可以基于并集类型。这可用来描述空格分隔的项列表,在此列表中,每项都可以并集中的任意简单类型为基础。
列表不合法。列表的项类型不能是列表本身,或者不能从另一列表类型的任意级别派生而来,并且它会导致编辑器中任务列表错误。
列表类型可以对其应用最小长度、最大长度和长度面。这些面限制列表中项的数目。要限制列表中每项的值,应将这些面应用于项类型而非列表本身。消息定义编辑器提供列表类型相关的枚举和模式面的其他直接支持,以使用它们来导入任意模式,但将发出代理将忽略枚举和模式面的警告。
并集类型作为两个或更多其他简单类型的并集。
并集类型允许某个值与若干不同简单类型中的某个类型一致。组成并集类型的简单类型称为其成员类型。对可能存在的成员类型没有上限,但必须至少有一个存在。成员类型可以定义为内置简单类型,用户定义的简单类型或本地简单类型在此并集类型内匿名定义。
并集类型的成员也可以包含列表类型、并集类型和受限制的简单类型。
在逻辑树中包含数据之前,代理不采用值约束。这意味着不可能在派生于同一基本类型但具有不同约束的两个简单类型(例如,范围 1-10 内的整数和范围 11-20 内的整数)之间进行选择。如果试图进行此操作并且代理在解决并集时忽略这些约束,则警告将显示在任务列表中。消息定义编辑器提供并集类型相关的枚举和模式面的其他直接支持,以使用它们来导入任意模式,但将发出代理将忽略枚举和模式面的警告。
应用到派生类型的任何值约束必须进一步限制基本类型(和任何基于它的元素)。派生类型削弱或除去它的基本类型定义的值约束是非法的。如果没有值约束适用于此派生类型,尽管在相关情况下此派生类型将被视为基本类型的限制,但它总是与其基本类型一样。