元素的省略和截断

元素的省略和截断取决于抑制缺少元素定界符属性的设置。它的描述可在复杂类型 TDS 属性全局组 TDS 属性本地组 TDS 属性 中找到。

如果已创建其中一些元素是可选的消息,则输入消息可能不包含所有已定义元素。如果元素是复杂类型,而它是将类型的数据元素分隔属性设置为定界所有元素定界变长元素(其中元素是由定界符分隔的并且没有标记)定义的,则复杂类型的结束缺少的任何元素必须由以两种方法之一创建消息的应用程序表明。这提供了避免不必要的长定界符序列和保持缺少元素的一致表示的技术。

  1. 如果您已将复杂类型的定界符属性设置为一个值,而此值不匹配您为任何复杂类型父类型的定界符属性设置的值,则消息结束处的元素可由复杂类型数据中最后一个实际元素后它的父代定界符表明。

    这称为截断方法,其中缺少的元素视为未期料到的,并且位流中都省略了数据和定界符。

    例如,您定义具有四个可选元素的复杂元素 C。您将定界符属性设置为加号字符(+)。您定义复杂元素 P,并将 P定界符属性设置为星号(*)。向 P 添加三个元素,第一个是字符串,第二个是复杂元素 C 以及第三个是字符串。

    当代理接收消息的特殊实例时,P 的所有元素都存在,但 C 只有前两个元素存在。如果使用了截断方法,则消息中的数据按如下所示出现(其中 PnP 元素的值,而 CnC 元素的值):

    P1*C1+C2*P3

    当解析器遇到第二个星号定界符时,它确定复杂元素 C 的最后两个元素不存在,而下一个元素是 P 的第三个元素。

    仅当省略和截断都使解析器表现出相同的行为时才可成功地使用截断,除非所截断的元素是固定长度的。

  2. 如果复杂类型的定界符与它的一个父代的定界符匹配,则无法使用截断方法。这是因为解析器无法确定最后一个元素后的定界符用于当前复杂类型还是用于它的一个父代。因此,必须在每个缺少元素的消息数据中包括定界符以确保解析器可将元素与模型匹配。

    这称为省略方法,其中缺少的简单元素由两个定界符之间空的字符序列表示。

    例如,如前一个示例那样定义 PC,但将 P定界符属性设置为加号(+)。当代理接收同一消息时(所有 P 的元素存在,C 的前两个元素存在),消息中的数据按如下所示出现:

    P1+C1+C2++P3

    已为复杂元素 C 的缺少元素在消息数据中插入了两个定界符字符。如果已使用截断方法,解析器将数据值 P3 解释为复杂元素 C 的第三个元素值,而不是复杂元素 P 的第三个元素值。

相关概念
消息建模
消息模型
TDS 格式:与逻辑模型的关系
相关任务
开发消息模型
使用消息定义文件
使用消息模型对象
相关参考
消息模型引用信息
消息模型对象属性
附加的 MRM 域信息
附加的 TDS 信息
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ad09490_