消息模型对象:简单类型值约束

值约束通过定义它可以表示的值的局限性来细化简单类型。

能够约束元素可以采用的值通常会很有用,这可能确保消息符合业务规则。本主题描述了如何将值约束添加到简单类型以约束基于该简单类型的所有元素的值。

此处讨论的大部分值约束通过 XML 模式面建模并与简单类型相关联。但是,您可为元素定义缺省值和固定值,且这些值与元素本身相关联。

提示: 如果消息集部署到 WebSphere Message Broker,则可以验证所有值约束,因此会将任何违例作为错误或警告进行报告。

值约束的类型

缺省值
如果输入消息中有空元素,则将为此元素指派缺省值。如果输入消息中彻底缺少某个元素,则根本不会为此元素指派任何值。

如果输入消息中缺少某个属性,则将为此属性指派缺省值。

注意,缺省值约束与元素本身相关联,因此无法继承。

注: 如果将消息集部署到 WebSphere Message Broker,则上述行为并非总是适用。有关不同之处的详细信息,请参阅关于相应物理格式的与逻辑模型的关系主题。
固定值
如果元素出现在输入消息中,则它的值必须是指定的固定值。如果输入消息中有空元素,则将为此元素指派固定值。如果输入消息中彻底缺少某个元素,则根本不会为此元素指派固定值。

如果属性出现在输入消息中,则它必须有固定值。如果输入消息中缺少某个属性,则将为此属性指派固定值。

固定值约束与元素本身相关联,因此无法继承。

注: 如果将消息集部署到 WebSphere Message Broker,则上述行为并非总是适用。有关不同之处的详细信息,请参阅关于相应物理格式的与逻辑模型的关系主题。
长度约束:长度最小长度最大长度
通过使用长度约束,您可以约束基于简单类型的所有元素的长度,或者甚至限制为单个值。

长度约束可应用到从 xsd:hexBinaryxsd:base64Binaryxsd:string(包含内置模式类型,例如,xsd:normalisedString)派生出的简单类型。

长度约束从祖代类型继承而来,并且任何为简单类型定义的长度约束不能释放任何其祖代类型施加的约束。例如,从类型“shortString”(最大长度=10)派生类型“longString”(最大长度=100)将是非法的。

注: 缺省情况下,对于 WebSphere Message Broker,当消息集添加到 BAR 文件时,Length 值约束将转换为最大长度约束。这可避免 WebSphere Message Broker 发生固定长度数据结构(其中要填充字符串以满足定宽度字段)的伪验证错误。如果需要进行严格的长度验证,则可更改标志代理将长度面作为最大长度处理,以在消息属性集中更改此缺省值。
范围约束:最小包含最大包含最小排除最大排除
范围约束为基于简单类型的所有元素指定值的允许范围。包含约束包含允许范围中的指定端点,而排除约束不包含。范围约束可以应用于数字或与日历和时间值相关的简单类型。它们无法应用于字符串,因为字符串值的排序取决于所使用的字符集。

范围约束从祖代类型继承而来,并且任何为简单类型定义的范围约束不能释放任何其祖代类型施加的约束。例如,从类型“smallNumber”(最大包含=10)派生类型“largeNumber”(最大包含=100)是非法的。

消息模型不允许排除约束应用于非整数型(浮点、十进制、双精度、日期时间等)。

枚举约束
枚举约束为基于简单类型的所有元素指定单个允许值。允许值的列表可以通过定义多个同一简单类型的枚举约束来指定。枚举约束可以应用于所有简单类型。

枚举约束从祖代类型继承而来,并且为简单类型定义的任何枚举约束的集合不能增加允许值的范围。例如,从类型“MonoColours”(只带有“黑色”和“白色”的枚举)派生类型“AllColours”(带有彩虹的所有颜色的枚举)将是非法的。

精度约束:总位数和小数位数
精度约束仅与十进制值相关。它们针对所有基于简单类型的元素限制其有效数字的位数(总位数)和小数位的位数(小数位数)。精度约束只能应用于从 xsd:decimal 派生出的简单类型。

精度约束从祖代类型继承而来,并且任何为简单类型定义的精度约束不能释放任何其祖代类型施加的约束。例如,从类型“notVeryPrecise”(段位数=1)派生类型“veryPrecise”(段位数=10)是非法的。

模式约束
模式约束是为所有基于简单类型的元素指定一组允许值的正则表达式。您可为同一简单类型定义多个模式,以允许使用逻辑分隔的部分表示复杂验证规则。简单类型上的每个模式约束为基于此简单类型的元素提供允许值集合。换句话说,所有模式是使用布尔值 OR 组合的。

对于所有值约束,某个简单类型可从它所基于的简单类型继承模式约束。在这种情况下,必须满足每个祖代类型提供的模式约束集合以及简单类型本身提供的模式约束集合。换句话说,类型层次结构中每个级别的模式约束集合是使用布尔值 AND 组合的。

模式约束只能应用于从 xsd:string 派生出的简单类型。

空格约束
空格约束指定解析器应该如何处理基于简单类型的所有元素的空格。
注: 对于 WebSphere Message Broker, MRM 物理格式允许针对为消息定义的每个物理格式非常精确地控制空格,但这些物理属性通过逻辑模型中的空格约束进行分隔。
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ad10470_