上一篇 | 下一篇

在 XMLNS 域中操作名称空间构造

发布: 2008-7-01 22:09 | 作者: admin | 来源: | 查看: 10次

在 XMLNS 域中操作名称空间构造

级别: 中级 Ben Thompson顾问兼认证 IT 专家和企业架构师, IBM Hursley2005 年 7 月 7 日在本文中,您将学习如何在 WebSphere Business Integration Message ..

级别: 中级

Ben Thompson

顾问兼认证 IT 专家和企业架构师, IBM Hursley

2005 年 7 月 7 日

在本文中,您将学习如何在 WebSphere Business Integration Message Broker V5 的 XMLNS 域中创建一整套 XML 名称空间构造。您可以使用文中所提供的代码样例来实现 Message Repository Manager Domain (MRM) 的相同功能,而无需进行解析。

引言

IBM® WebSphere® Business Integration Message Broker V5(以下称为 WebSphere Message Broker)为 XML Schema 名称空间提供了完全的支持。在网络上处理 XML 消息时,您可以使用三种方法来解析和编写 XML 消息:XML 域、XMLNS 域和 MRM 域。XML 域提供了基本的解析和编写工具来检查输入消息是否格式良好,但是却不对其进行验证。XMLNS 域提供了与 XML 域同等的功能,只不过还增加了名称空间支持。MRM 域提供了消息目录来验证消息的结构和值以及所分配的默认值。

名称空间支持提供了记录逻辑树中每一项的名称空间属性的功能。您可以使用现有 ESQL 词汇的扩展来设置和询问这些属性。MRM 域还为定义前缀和 URI 对之间的映射提供了构建时支持。这允许您指定将 XML 文档写入网络的首选方式。在许多常见的业务场景中,没有必要验证 XML 文档是否符合元数据模型。

在获得更好的性能和免于手工或通过 XML Schema 导入(或同等方式)定义目录的布局方面,XMLNS 域被认为是一种更好的做法。ESQL 为将 XMLNS 域中的输出文档建模成与 MRM 域的构建时文档具有相同的程度提供了灵活性。以下几部分首先简要介绍了 XML 和名称空间构造,接着说明了使用 ESQL 创建它们的方法。

除非另有说明,本文对“W3 一致性”的所有引用都是指可扩展标记语言(Extensible Markup Language,XML)1.0(第二版)规范。在某些地方,本文中给出的 ESQL 片段基于前面的部分的代码,所以应该按顺序将其添加到计算机节点中。新的消息是根据输出创建的,因此您可以使用任何有效的输入消息。为简单起见,建议您不取消注释标准计算节点模板中的代码行 CALL CopyMessageHeaders();,并且在其后加上本文所提供的 ESQL 代码。

创建 XML 声明

W3C 推荐标准指定所有格式良好的 XML 文档均以 XML 声明开头。该声明声明文档实现 XML 的哪一个版本。您可以使用附加属性来指定是否将文档分类为“独立 (standalone)”以及所选的代码页。

独立属性向 XML 处理器和验证器发出信号,指示 XML 文档是否需要将该文档实体之外的任何标记应用于其内容。应用于 XML 文档的标记的常见例子包括具有缺省值和 XML 实体(amp、lt、gt、apos 和 quot 除外)的属性。有关进一步的信息,请参见 W3C 推荐标准:可扩展标记语言 (XML) 1.0(第二版)站点。

将文档实体看作是 XML 处理器遇到的 XML 文档的第一项。WebSphere Message Broker 将独立属性的值看作是不相关的。standalone=no 表示相关的 XML 文档依赖于外部定义的 DTD。WebSphere Message Broker 的当前版本不解析外部定义的 DTD,因此将忽略它们。更重要的是,在输出端,您可能要考虑正确地设置这个属性,因为业务中间件实现下游的 XML 处理器可能必须解释 WebSphere Messsage Broker 的编写器创建的 XML 文档。

Encoding 属性为 XML 处理器提供用于确定外部解析实体中的字符所用编码的方法。强制要求符合 W3C 规范的 XML 处理器能够解释采用 UTF-8 和 UTF-16 两种编码方式的实体。这些值经常出现在 XML 文档的 Encoding 属性中。WebSphere Message Broker 中的 ESQL 允许将 Encoding 属性设置为可以传送到 XML 处理器的备用值。与 W3C 规范兼容的编码可接受的名称只包括拉丁字符。请注意,这个编码值完全独立于 WebSphere MQ 编码,您必须在消息头中单独对其进行设置。

ESQL 代码

-- Note that the following ESQL syntax was originally devised for the

-- XML domain and is therefore also applicable to versions of WebSphere

-- Business Integration Message Broker which pre-date Version 5.0

SET OutputRoot.XMLNS.(XML.XmlDecl).(XML.Version) = '1.0';

SET OutputRoot.XMLNS.(XML.XmlDecl).(XML.Encoding) = 'UTF-8';

SET OutputRoot.XMLNS.(XML.XmlDecl).(XML.Standalone) = 'no';

输出示例

字号: | 推荐给好友

61/6123456>

评分:0

我来说两句