您:可以在您的消息中包含内联 DTD,并且可以通过设置属性 DOCTYPE 文本来指定附加信息,但您必须知道解析器在构造输出消息时采取的操作:
- 如果您采取导致输出消息生成的任何操作,例如,如果您通过编码 ESQL 语句(如 SET OutputRoot.MRM.Field1 = xxx)配置 Compute 节点创建一个新的输出消息:
- 如果您已为消息集(其中您已将此消息定义为是)设置属性禁止 DOCTYPE,则将从输出消息中排除 DOCTYPE 信息(在消息集或消息的 DOCTYPE 文本属性中指定)和内联 DTD。
- 如果您已为消息集(其中您已将此消息定义为否)设置属性禁止 DOCTYPE。
- 如果可能,保留内联 DTD。
- 否则,如果消息是自定义的,则在输出消息中包括消息集 DOCTYPE 文本属性信息。
- 否则(消息不是自定义的),该消息级别 DOCTYPE 文本属性信息包括在输出消息中。
- 如果您不采取任何导致输出消息重新生成的操作,则解析器将生成输出消息(它是输入消息的直接副本)。如果您已在消息流中配置一个 Compute 节点以通过使用 SET OutputRoot = InputRoot(明确地,或通过选取复制整个消息复选框)来复制消息,并且您未以任何方式修改此节点或任何其他节点中的消息,则将发生这种情况。在这种情况下,内联 DTD 保留在输出消息中,但不包含您在消息集或消息的 DOCTYPE 文本属性中指定的任何信息。