XML 实例文档和 XML 模式可以使用名称空间。名称空间提供了限定对象名的方法。
单个 XML 实例文档可以包含为多个应用程序定义的和可能供多个应用程序使用的元素和属性。同一文档中的两个不同的元素或属性可能需要相同的名称。各个应用程序需要能识别设计成由它们处理的元素和属性。在类似此处的情况下,可通过使用不同的名称空间限定每个元素来分辨各个不同元素的定义。这避免了名称冲突和错误识别的问题。
XML 模式可以定义目标名称空间。在 XML 模式中定义的全局元素、属性、组和类型使用目标名称空间限定(如果已定义目标名称空间)。可选地,局部元素和属性可以使用目标名称空间限定。因此,名称空间帮助开发 XML 模式的库,这些库可以单独开发。提供唯一的用于 XML 模式的名称空间名称,开发者不必关心与其他 XML 模式中所定义对象的名称冲突。
名称空间的作用域扩展到了它的外围文档之外,并由统一资源标识(URI)进行标识。为了满足其目的,URI 应该是唯一的。您可能更熟悉统一资源定位器(URL)这一概念。尽管 URI 定义比 URL 的规范要宽,但 URI 常常使用与 URL 相同的语法。 这是 URI:http://mycompany.com/xml_schema 的示例
名称空间前缀声明为 URI 完整名称的缩写,这用来限定所有属于该名称空间的元素。 用于替换 XML 实例文档或 XML 模式中的名称空间的前缀使用 xmlns 或 xmlnsc 属性指定。也可以使用 xmlns 或 xmlnsc 属性定义缺省名称空间。如果定义了缺省名称空间,则任何没有前缀的元素或属性使用缺省名称空间限定。如果没有定义缺省名称空间,则任何没有前缀的元素或属性没有使用名称空间限定。
启用名称空间的单个消息集可以包含许多个不同的名称空间。每个名称空间由不同的消息定义文件表示。当您创建消息定义文件时,您可以选择它是否有关联的名称空间或者它是否在 notarget 名称空间中。如果您选择将名称空间与消息定义文件进行关联,您必须还要选择一个前缀。
如果消息定义文件有关联的名称空间,下列全局对象使用名称空间限定:
可选地,局部元素和属性可以使用名称空间限定。
消息定义文件中定义的对象可以引用同一消息集中的其他消息定义文件中的对象。这通过在另一个消息定义文件中导入或包含一个消息定义文件实现。
如果您使用 WebSphere Message Broker,且您的消息集启用了名称空间,当代理解析 XML 实例文档时,代理不存储树中任何 xmlns 或 xmlnsc 属性的值。它也不存储任何模式位置和无名称空间模式位置属性的值。这是因为,当写 XML 文档时,代理从消息集的 XML 有线格式的属性重新生成此信息。
如果您使用 WebSphere Message Broker,当输出 XML 消息时可,MRM 域使用名称空间 URI/前缀的表。名称空间限定的元素和属性被加上表中相应的前缀。代理还管理将前缀映射到名称空间的对应 xmlns 或 xmlnsc 属性的输出。 您可以选择名称空间 URI/前缀表中的所有条目的 xmlns 或 xmlnsc 属性是输出在文档的开始处还是它们仅在需要时才输出在文档中。
如果对消息集启用了名称空间,在 XML 有线格式中,有一张模式位置的表,这张表将名称空间 URI 映射为文件名。您可以向这张表添加条目,也可以将文件名映射到 notarget 名称空间。如果您使用 WebSphere Message Broker,此表用于在 XML 文档的开始处输出模式位置和无名称空间模式位置属性。
如果要在 MRM 域中使用 XML 格式,则当根据从消息模型生成的字典匹配解析的消息时,会根据字典中的名称空间匹配元素或属性。 因此,对于消息中要与字典匹配的元素或属性,它们的名称和名称空间都必须匹配。
如果要使用 WebSphere Message Broker,会向您提供支持,以允许您在写 ESQL 时指定名称空间。 如果不使用名称空间,则没有必要写知道名称空间的 ESQL。但是,如果您决定使用名称空间,您的消息定义文件可以任何您选择的名称空间的目标名称空间,且写知晓名称空间的 ESQL 是必要的。当进行解析时,元素驻留所在的名称空间将存储在消息树中。这是逻辑属性,且无论以哪个物理有线格式解析和写消息,都将保留此逻辑属性。ESQL 中添加了新的语法以使使用定义的前缀引用元素名称空间变得容易。