XML メッセージが WebSphere Message Broker でネーム・スペースを使用するかどうかに関わらず、XML メッセージを使用することができます。
ネーム・スペースを使用しないメッセージの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?> <SaleListMessage> <SaleEnvelope> <Header> <SaleListCount>1</SaleListCount> </Header> <SaleList> <Invoice> ..... </SaleList> <Trailer> <CompletionTime>2000-01-0100:00:01.000000</CompletionTime> </Trailer> </SaleEnvelope></SaleListMessage>
ネーム・スペースを使用するメッセージの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?> <samp:SaleListMessage xmlns:samp="http://www.samplemessage.broker.hursley.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.samplemessage.broker.hursley.ibm.com/SampleMessageNamespace1.xsd">
<SaleEnvelope> <Header> <SaleListCount>1</SaleListCount> </Header> <SaleList> <Invoice> ..... </SaleList> <Trailer> <CompletionTime>2000-01-0100:00:01.000000</CompletionTime> </Trailer> </SaleEnvelope> </samp:SaleListMessage>
このサンプルにはメッセージ・セットが 1 つ、メッセージ・フローが 3 つ入っています。
メッセージ・セット CHANGENAMESPACEMS には XMLNSC のランタイム・ドメインがあり、 以下に示す 3 つの XML スキーマから生成されたメッセージ定義ファイルを含んでいます。
メッセージ定義ファイルはすべて WebSphere Message Broker サンプルの多数で使用された SaleListMessage をモデルにしています。これらのメッセージ定義はネーム・スペースを除き、すべて同じです。スキーマはメッセージ・フローに入るとき、およびメッセージ・フローから出るときにメッセージの妥当性検査を実行するために必要です。
メッセージ・ブローカー・プロジェクト CHANGENAMESPACEMF には、以下のメッセージ・フローが含まれています。
これらの各メッセージ・フローの説明は以下のとおりです。
このメッセージ・フローは MQInput ノード、Compute ノード、および MQOutput ノードで構成されています。
メッセージ・フローは WebSphere MQ プロトコルを介して XML メッセージを受信し、 WebSphere MQ を使用して XML 応答メッセージを出力します。XMLNSC パーサーはメッセージ・フローで使用され、妥当性検査がアクティブになります。
WebSphere MQ 入力メッセージにはネーム・スペースを持つエレメントは含まれません。メッセージ・フローはメッセージに入っているルート・エレメントにネーム・スペースを追加します。 WebSphere MQ 入力メッセージには、ターゲット・ネーム・スペースを動的に指定するための MQRFH2 ヘッダーを含めることができます。 ヘッダーでは NameValueData エレメントに以下を含める必要があります。
<usr> <targetNamespace>URL2</targetNamespace> <targetSchemaLocation>URL3</targetSchemaLocation> </usr>
targetSchemaLocation エレメントはオプションです。
MQRFH2 ヘッダーが存在しない、または MQRFH2 ヘッダーを処理できない場合は、 ネーム・スペースは以下の値に従って変更されます。
Compute ノードは、ChangeNamespaceInOutputRoot という名前の ESQL 関数を呼び出します。ESQL 関数の詳細については、XMLNSC Namespaces サンプルの作成を参照してください。
このメッセージ・フローは MQInput ノード、Compute ノード、および MQOutput ノードで構成されています。
メッセージ・フローは WebSphere MQ プロトコルを介して XML メッセージを受信し、 WebSphere MQ を使用して XML 応答メッセージを出力します。XMLNSC パーサーはメッセージ・フローで使用され、妥当性検査がアクティブになります。
WebSphere MQ 入力メッセージにはネーム・スペースを持つエレメントが含まれます。 また、複数のネーム・スペースのエレメントを含む場合もあります。メッセージ・フローは既存のネーム・スペースの 1 つを変更できます。 入力 WebSphere MQ メッセージには、ソースとターゲットのネーム・スペース、 あるいはその両方のネーム・スペースを動的に指定するための MQRFH2 ヘッダーが含まれる場合もあります。 ヘッダーでは NameValueData エレメントに以下を含める必要があります。
<usr> <sourceNamespace>URL1</sourceNamespace> <targetNamespace>URL2</targetNamespace> <targetSchemaLocation>URL3</targetSchemaLocation> </usr>
targetSchemaLocation エレメントはオプションです。
MQRFH2 ヘッダーが存在しない、または MQRFH2 ヘッダーを処理できない場合は、 ネーム・スペースは以下の値に従って変更されます。
もし、ソースまたはターゲットにネーム・スペースが存在しない場合は、 sourceNamespace、targetNamespace、あるいはその両方に「NONAMESPACE」と指定します。
<usr> <sourceNamespace>URL1</sourceNamespace> <targetNamespace>NONAMESPACE</targetNamespace> </usr>
Compute ノードは、ChangeNamespaceInOutputRoot という名前の ESQL 関数を呼び出します。ESQL 関数の詳細については、XMLNSC Namespaces サンプルの作成を参照してください。
このメッセージ・フローは MQInput ノード、Compute ノード、および MQOutput ノードで構成されています。
このメッセージ・フローは WebSphere MQ プロトコルを介して XML メッセージを受信し、 WebSphere MQ を使用して XML 応答メッセージを出力します。XMLNSC パーサーはメッセージ・フローで使用され、妥当性検査がアクティブになります。
WebSphere MQ 入力メッセージにはネーム・スペースを持つエレメントが含まれます。 また、複数のネーム・スペースのエレメントを含む場合もあります。 このメッセージ・フローは既存のネーム・スペースの 1 つへの参照を削除します。
WebSphere MQ 入力メッセージには、ソース・ネーム・スペースを動的に指定するための MQRFH2 ヘッダーが含まれる場合があります。 ヘッダーでは NameValueData エレメントに以下を含める必要があります。
<usr> <sourceNamespace>URL1</sourceNamespace> </usr>
MQRFH2 ヘッダーが存在しない、または MQRFH2 ヘッダーを処理できない場合は、 ネーム・スペースは以下の値に従って変更されます。
Compute ノードは、ChangeNamespaceInOutputRoot という名前の ESQL 関数を呼び出します。ESQL 関数の詳細については、XMLNSC Namespaces サンプルの作成を参照してください。
各サンプルを実行する方法について詳しくは、XMLNSC Namespaces サンプルの実行を参照してください。