您可以为 MRM 解析器解析的消息开发名称空间支持。
如果您要访问消息的元素,且启用了名称空间,则在编码对元素的 ESQL 引用时必须包含名称空间。否则,代理将搜索 notarget 名称空间。如果在 notarget 名称空间中未找到该元素,代理将搜索消息字典中(即,已部署的消息集中)的所有其他已知名称空间。出于性能和完整性的原因,请在应用时指定名称空间。
当启用名称空间时引用元素的最有效的方法是定义一个名称空间常量,并在相应的 ESQL 语句中使用该名称空间常量。这使您的 ESQL 代码更容易阅读和维护。
使用 DECLARE NAMESPACE 语句定义常量:
DECLARE ns01 NAMESPACE 'http://www.ns01.com' . . SET OutputRoot.MRM.Element1 = InputBody.ns01:Element1;
由于声明 ns01 的方式,它被正确解释为名称空间。
您还可以使用 CHARACTER 变量声明名称空间:
DECLARE ns02 CHARACTER 'http://www.ns02.com' . . SET OutputRoot.MRM.Element2 = InputBody.{ns02}:Element2;
如果您使用此方法,您必须给声明的变量加上花括号以确保它被解释为名称空间。
如果您担心 CHARACTER 变量可能会改变,可以使用 CONSTANT CHARACTER 声明:
DECLARE ns03 CONSTANT CHARACTER 'http://www.ns03.com' . . SET OutputRoot.MRM.Element3 = InputBody.{ns03}:Element3;
您可以在模块或函数中声明名称空间、常量和变量。但在模式范围内(即,模块范围外)只能声明名称空间或常量。
视频样本提供使用名称空间的更多示例。
V2.1 不支持名称空间,所以您无法将使用名称空间的消息集或消息流部署到 V2.1 代理。