子顺序的注意事项

平面文件中标头的要求

有两种方案与带分隔符的平面文件相关,在设置 子顺序 属性时需要注意这些情况。 第一种此类情况涉及平面文件文档包含头部、正文和尾部(可选)的情况。 在这些情况下,必须遵守以下要求:

  • 必须将标头的 (分隔) 根记录的 子顺序 属性设置为 Postfix

  • 如果存在预告片,则必须将正文的 (分隔) 根记录的 子顺序 属性设置为 Postfix

  • 如果尾部不存在,则可以将正文的 (分隔) 根记录的 子顺序 属性设置为 PrefixInFixPostfix

  • 如果存在预告片,则可以将 (分隔) 尾部根记录的 子顺序 属性设置为 PrefixInFixPostfix

  • 可以将标头、正文和尾部的分隔从属记录的 子顺序 属性设置为 PrefixInFixPostfix

    与带分隔符的平面文件和 子顺序 属性相关的第二个方案是,必须根据运行时组件对节点的预期设置此属性。 对于根节点和组节点, “子顺序” 属性的正确设置可能并不明显,如以下方案所示:

  • 根节点。 假设一个典型的平面文件,其结构由后跟 CR/LF 组合的记录组成。 分隔符将文件中的记录隔开,并且顺序通常为记录、分隔符、记录、分隔符,以此类推。 在这种情况下,分隔符始终遵循数据,该数据对应于 Postfix子顺序属性设置。

  • 组节点。 架构的 BizTalk Server 和 XSD 表示形式中所显示的组节点不会显式存在于实例消息的平面文件表示形式中。 假设一个采购订单 (PO) 包含每个行项目的记录集合,并且这些记录重复多次以表示单个 PO 中的多个行项目。 此类消息的架构可能包括一个名为 LineItems 的节点,该节点充当 (有时是重复集的概念) 容器:在实例消息的平面文件表示形式中,LineItems 容器本质上是概念性的,由适当的数据和分隔符序列表示;在实例消息的 XML 表示形式中,LineItems 容器以 XML 中的 LineItems 元素的形式显式存在。

    假设某消息包含一个根节点并且只有一个组节点。 可以很容易地看出输入流中最后一个分隔符将属于根节点。 因此,概念循环中的数据/分隔符序列只会是一个或多个行项目记录。 只有当存在多个行项目记录时,才会使用分隔符将其隔开。 在这种情况下,分隔符数少于要分隔的对象总数,并且在称为中缀的结构中,分隔符位于所分隔的项目之间。

另请参阅