消息模型中的名称空间

使用名称空间可以对消息模型对象名进行限定。

单个 XML 实例文档可以包含为多个应用程序定义并可能由多个应用程序使用的元素和属性。 同一文档中的两个不同的元素或属性可能需要相同的名称。 各个应用程序必须能够识别它们所应处理的元素和属性。 在这种情况下,可通过使用不同的名称空间限定每个元素来区分各个定义。 这样可以避免名称冲突和错误识别的问题。

XML 模式可以定义目标名称空间。 如果已定义目标名称空间,那么 XML 模式中定义的全局元素、属性、组和类型将由目标名称空间限定。 还可以选择使用目标名称空间来限定局部元素和属性。 因此,名称空间有助于开发 XML 模式的库,这些模式可以单独开发。 如果用于 XML 模式的名称空间名称是唯一的,您不必担心与其他 XML 模式中所定义对象的名称发生冲突。

名称空间的作用域扩展到其外层文档的作用域以外,并由统一资源标识 (URI) 进行标识。 为了满足其目的,URI 必须是唯一的。 您可能更熟悉统一资源定位器(URL)这一概念。 URI 通常与 URL 使用相同的语法,但 URI 定义比 URL 的规范更加广泛。 这是 URI 的一个示例:http://mycompany.com/xml_schema

名称空间前缀声明为 URI 完整名称的缩写,用于限定属于该名称空间的所有元素。 用于替换 XML 实例文档或 XML 模式中的名称空间的前缀通过 xmlns 属性指定。 另外,还可以使用 xmlns 属性来定义缺省名称空间。 如果定义了缺省名称空间,任何没有前缀的元素或属性都将使用缺省名称空间限定。 如果没有定义缺省名称空间,任何没有前缀的元素或属性都不使用名称空间限定。

名称空间和消息模型
应用程序或库中的消息模型模式文件以及消息集中的消息定义文件支持名称空间。

单个应用程序、库或消息集可以包含多个不同的名称空间。 每个名称空间都由不同的消息模型模式文件或消息定义文件表示。 您创建文件时,可以选择它是具有相关联的名称空间,还是处于 notarget 名称空间。 如果关联了名称空间,那么还必须选择前缀。

如果文件具有相关联的名称空间,那么将使用该名称空间对下列全局对象进行限定:

  • 元素
  • 属性
  • 简单类型
  • 复杂类型
  • 属性组

局部元素和属性也可以选择使用名称空间限定。

一个文件中定义的对象可以引用其他文件中的对象。 要创建这些引用,请在一个文件中导入或包括另一个文件。 消息模型模式文件可以导入或包含同一应用程序或库中的另一个文件,也可以包含位于独立的 IBM® App Connect Enterprise 库中的另一个文件。 消息定义文件只能导入或包括同一个消息集中的另一个文件。

消息解析和消息流
IBM App Connect Enterprise XML数据解析器能够识别其所解析的XML消息中的前缀名称,并在内部将其映射到正确的命名空间。 消息树存储元素或属性的名称和名称空间。

即使对于非 XML 数据,也可以使用名称空间。 可以使用相关联的目标名称空间来创建 DFDL 模式、适配器模式和消息定义文件。 虽然数据本身未包含带前缀的名称,但是将从文件中的相应元素中获取名称空间。 同样,消息树存储了元素的名称和名称空间。

您可以在编写 ESQL 或 Java™时指定名称空间。如果不使用名称空间,那么不需要编写具有名称空间感知功能的 ESQL 或 Java。 但是,如果您决定使用名称空间,那么需要编写名称空间感知的 ESQL 或 Java。 执行解析时,会将元素所在的名称空间存储到消息树中。 这是逻辑属性,且无论以哪个物理连线格式解析及编写消息,都将保留此逻辑属性。 对 ESQL 添加了语法,以方便您使用定义的前缀来引用其他元素的名称空间。 在 Java 中, XPath 表达式用于引用元素。