TDS 分隔类型和逻辑模型属性之间有一些局限性(例如,组组合和组内容验证)。控制这些选项的规则在嵌套复杂类型的限制中进行说明。
这些规则之所以存在,是为了确保消息的完整性。分隔类型和组组合或者组内容验证的组合不能产生 TDS 解析器所不清楚的消息。
在 TDS 中,只有固定长度元素遵守缺省值:
分隔类型 | 使用缺省值 |
---|---|
标记定界 |
从不遵守缺省值。 |
固定长度 |
所有元素在输出时都要遵守缺省值。没有定义缺省值的缺少元素将导致编写时出错。 |
可变长度元素定界 | 输出时只有固定长度元素遵守缺省值。缺少的固定长度值必须具有可用的缺省值。没有定义缺省值的缺少元素将导致编写时出错。 |
列表和并集是特定于 XML 的概念。如果消息集中出现 TDS 物理格式,则作为列表或并集的简单类型的元素或属性将导致产生任务列表警告。通过编辑验证首选项,用户可以选择是以错误、警告还是信息的形式显示。如果从消息集生成字典,并且试图解析定义的 TDS 消息以包含此类元素或属性,则将发生运行时错误。
逻辑属性最小出现次数和最大出现次数指定消息中元素或组允许出现的次数。它们用于解析和编写消息,以及用于验证消息内容。
在解析或编写时,这些属性的确切解释取决于父复杂类型或组的数据元素分隔属性。
在验证时,最小出现次数和最大出现次数都用于检查消息树的内容是否与模型相匹配。
分隔类型 | 最小出现次数和最大出现次数的解释 |
---|---|
标记定界 |
在解析和编写时,会有效地忽略最小出现次数和最大出现次数。当解析时,出现次数由消息中的标记进行标识。当编写时,写程序会输出消息树中的所有出现次数。
|
界定的所有元素 | 仅在解析和编写时使用最大出现次数,并与元素的重复元素定界符属性以及父类型的抑制缺少元素定界符属性结合使用。 允许不同的出现次数(最小出现次数 <> 最大出现次数),前提是将禁止缺少元素定界符设置为类型结束。
如果抑制缺少元素定界符是从不,那么尽管解析将接受缺少的元素,在解析时也会需要所有显示,并在编写时会输出所有显示。 忽略可选的出现次数(最小出现次数 = 0),并且在解析时仍需要定界符,并在编写时将输出定界符。 允许始终缺少(最大出现次数 = 0)。解析时不需要任何定界符,编写时也不会输出定界符。 只有在重复元素定界符与定界符不同时,才会允许无限大出现次数(最大出现次数 = -1)。必须通过定界符、包含组的组结束符或定界符终止重复,或者在消息位流结束时终止重复。在编写时,写程序会输出消息树中的所有出现次数。 |
固定长度 |
仅在解析和编写时使用最大出现次数。一般来说,在解析时需要最大出现次数显示,而在使用用于缺少元素的缺省值编写时将输出最大出现次数显示。 忽略不同的出现次数(最小出现次数 <> 最大出现次数),假设为最大出现次数。 忽略可选的出现次数(最小出现次数 = 0),假设是最大出现次数。 允许始终缺少(最大出现次数 = 0)。 仅固定长度。如果元素或组是其父组的最后一个子代,并且组通过组结束符、包含组的组结束符或定界符终止,或在消息位流结束时终止,则允许无限大出现次数(最大出现次数 = -1)。 在编写时,写程序会输出消息树中的所有出现次数,如果该数字小于最小出现次数,则会编写其他缺省值。 |
可变长度元素定界 | 对于固定长度简单元素,会遵守以上固定长度分隔的规则,但有两处不同。
对于可变长度简单元素、所有复杂元素和组,会遵守上述定界所有元素的规则。 |
数据模式 | 在解析和编写时,会有效地忽略最小出现次数和最大出现次数。当解析时,尽量多次与模式匹配。当编写时,写程序会输出消息树中的所有出现次数。注意在解析时,如果数据模式允许零长度匹配,而且出现零长度匹配,则将对消息树添加元素,并且会终止匹配,从而阻止无限制循环。 允许不同的出现次数(最小出现次数 <> 最大出现次数)。 允许可选的出现次数(最小出现次数 = 0)。允许始终缺少(最大出现次数 = 0)。 允许无限大出现次数(最大出现次数 = -1)。 |