TDS 消息中的数据元素是根据您必须为复杂类型的数据元素分隔属性指定的数据元素分隔方法而进行标识的。取决于您已为数据元素分隔设置的值,也可能需要属性标记数据分隔符和定界符(用于消息集和复杂类型)来标识每个元素。
您可为每个复杂类型指定的方法描述如下。给定的示例全都基于一种包含三个 STRING 类型元素的复杂类型。其中使用标记数据分隔的是冒号(:),而使用定界符的是星号(*)。
以下示例显示了固定长度标记:
tag1data1*tag2data2*tag3data3
以下示例显示了可变长度标记:
tag1:data1*tag11:data2*tag111:data3
以下示例显示了固定长度标记:
tag1data1tag2data2tag3data3
以下示例显示了可变长度标记:
tag1:data1tag11:data2tag111:data3
以下示例显示一个四个字符的固定长度标记(标记长度已设置为四),一个三个字符的长度字段(编码长度的长度已设置为三)和几个数据字符。编码长度中的额外字符已设置为零:
tagA007dataAAAtagB006dataBBtagC009dataCCCCC在上面给定的位流中,解析器查找标记“tagA”并抽取长度值 7。因为编码长度中的额外字符设置为零,所以接下来的七个(7 - 0)字符是数据。然后接着是下一个标记“tagB”的字符和长度值 6,然后是标记“tagC”等等。此示例中,每一种情况下,长度字段的值就是数据的长度。
以下示例显示一个四个字符的固定长度标记(标记长度已设置为四),一个三个字符的长度字段(编码长度的长度已设置为三)和几个数据字符。编码长度中的额外字符 已设置为三(因为此示例中长度字段值包括三个字符的长度字段和数据字段):
tagA012dataAAAAAtagB010dataBBBtagC016dataCCCCCCCCC在上面给定的位流中,在“tagA”之后,解析器抽取长度值 12。但是,因为编码长度中的额外字符设置为三,所以只有接下来的九个(12 - 3)字符是数据。然后接着是“tagB”的字符和长度值 10,等等。此示例中,每一种情况下,长度字段中的值比实际的数据长度值大三。
以下示例显示了这种情况:
data1*data2*data3
以下示例显示了作为固定长度元素的元素 2 ,和作为变长元素的元素 1 和 3 :
data1*data2data3
First Data Pattern = [A-Z]{1,3} Second Data Pattern = [0-9]+ Third Data Pattern = [a-z]* Message data = 'DT31758934information for you' First element data: 'DT' Second element data: '31758934' Third element data: 'information'第一个数据模式意味着“范围 A 到 Z 中从一到三的字符”,第二个意味着“范围 0 到 9 中一个或多个字符”,而第三个意味着“范围 a 到 z 中零或多个字符”。注意每个元素的数据是如何由与元素的数据模式不匹配的第一个字符终止的。
以下示例显示了这种情况:
data1data2data3
如果将数据元素分隔方法设置为未定义,则您不得将类型构成属性设置为空、选项、无序集、有序集、顺序或简单无序集。
如需了解有关将类型组合设置为消息的更多信息,请参阅多段式消息。