元素的省略和截断取决于抑制缺少元素定界符属性的设置。它的描述可在复杂类型 TDS 属性、全局组 TDS 属性 或 本地组 TDS 属性 中找到。
如果已创建其中一些元素是可选的消息,则输入消息可能不包含所有已定义元素。如果元素是复杂类型,而它是将类型的数据元素分隔属性设置为定界所有元素或定界变长元素(其中元素是由定界符分隔的并且没有标记)定义的,则复杂类型的结束缺少的任何元素必须由以两种方法之一创建消息的应用程序表明。这提供了避免不必要的长定界符序列和保持缺少元素的一致表示的技术。
这称为截断方法,其中缺少的元素视为未期料到的,并且位流中都省略了数据和定界符。
例如,您定义具有四个可选元素的复杂元素 C。您将定界符属性设置为加号字符(+)。您定义复杂元素 P,并将 P的定界符属性设置为星号(*)。向 P 添加三个元素,第一个是字符串,第二个是复杂元素 C 以及第三个是字符串。
当代理接收消息的特殊实例时,P 的所有元素都存在,但 C 只有前两个元素存在。如果使用了截断方法,则消息中的数据按如下所示出现(其中 Pn 是 P 元素的值,而 Cn 是 C 元素的值):
P1*C1+C2*P3
当解析器遇到第二个星号定界符时,它确定复杂元素 C 的最后两个元素不存在,而下一个元素是 P 的第三个元素。
仅当省略和截断都使解析器表现出相同的行为时才可成功地使用截断,除非所截断的元素是固定长度的。
这称为省略方法,其中缺少的简单元素由两个定界符之间空的字符序列表示。
例如,如前一个示例那样定义 P 和 C,但将 P 的定界符属性设置为加号(+)。当代理接收同一消息时(所有 P 的元素存在,C 的前两个元素存在),消息中的数据按如下所示出现:
P1+C1+C2++P3
已为复杂元素 C 的缺少元素在消息数据中插入了两个定界符字符。如果已使用截断方法,解析器将数据值 P3 解释为复杂元素 C 的第三个元素值,而不是复杂元素 P 的第三个元素值。