WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

XML パーサーおよびドメイン

XML ドメインを使用して、W3C XML 規格に準拠するメッセージを構文解析および書き込みができます。

XML ドメイン」という語は、XML 文書を構文解析するために WebSphere® Message Broker が使用する 3 つのドメインのグループをいいます。

XML メッセージを読み取るとき、ドメインと関連付けられているパーサーは、入力ビット・ストリームからメッセージ・ツリーを作成します。 入力ビット・ストリームは、W3C XML 仕様 (バージョン 1.0 または 1.1) に準拠した整形式 XML 文書である必要があります。

メッセージを書き込むとき、パーサーはメッセージ・ツリーから XML ビット・ストリームを作成します。

ドメインにはそれぞれ異なる特性があり、どのドメインを選択するかについての指針は、どの XML パーサーを使用すべきか を参照してください。

XMLNSC ドメイン
XMLNSC ドメインは、XML ネーム・スペースを使用するメッセージも含む、すべての汎用 XML メッセージの構文解析用に優先されるドメインです。 このパーサーは、以下の理由から、推奨されるパーサーです。
  • XMLNSC パーサーには、すべての種類の XML の構文解析時に超ハイパフォーマンスを提供するアーキテクチャーがあります。
  • XMLNSC パーサーは、構文解析済みメッセージから作成された論理メッセージ・ツリーによって使用されるメモリーの量を削減します。 このパーサーのデフォルトの動作は、重要でない空白文字および混合内容、コメント、処理命令、および埋め込み DTD を破棄することです。しかし、必要な場合には混合テキスト、コメント、および処理命令を保存するための制御が提供されます。
  • XMLNSC パーサーは、モデル駆動型パーサーとして操作でき、メッセージ・セットから生成された XML スキーマに照らして XML メッセージを妥当性検査し、使用している XML メッセージが正しいことを確認できます。
XMLNS ドメイン
XMLNSC ドメインが要件を満たさない場合、代替ネーム・スペースを認識するドメインおよびパーサーを使用します。
XML ドメイン
XML ドメインはネーム・スペースを認識しません。 これは推奨されておらず、新規メッセージ・フローの開発には使用すべきでありません。

MRM ドメインも、XML 構文解析および書き込み機能を提供しています。 XML パーサーの代わりにいつ MRM XML を使用できるかの指針については、どの XML パーサーを使用すべきかを参照してください。

デフォルトでは、3 つの XML パーサーがプログラマチック・パーサーであり、構文解析と書き込みの実行時にメッセージ・セットを使用しません。 ただし、XMLNSC パーサーはモデル駆動型パーサーとして操作でき、メッセージ・セットから生成された XML スキーマに照らして XML メッセージの正しさを妥当性検査できます。

メッセージ・セットなしで XMLNS または XML パーサー、あるいは XMLNSC パーサーを使用する場合でも、WebSphere Message Broker Toolkit 中でメッセージ・セットを作成および使用するのは良い習慣です。この操作により、メッセージ・セットがブローカー・ランタイムにデプロイされていなくても、メッセージ・フロー・アプリケーションの開発は単純化されます。

メッセージ・セットの作成の利点については、メッセージをモデル化する理由を参照してください。

XML パーサーは、オンデマンド・パーサーです。 詳しくは、要求時の構文解析を参照してください。

インフォメーション・センターのこのトピックでは、XML の用語、概念、およびメッセージ構成の要約を記載しています。 これらの面は、メッセージ・フローで XML メッセージを使用する際に重要です。
ヒント: XML について詳しくは、World Wide Web Consortium (W3C) Web サイトを参照してください。

XML メッセージの構文解析の例

簡単な XML メッセージの形式を以下に示します。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE Envelope
PUBLIC "http://www.ibm.com/dtds" "example.dtd"
[<!ENTITY Example_ID "ST_TimeoutNodes Timeout Request Input Test Message">]
>
<Envelope version="1.0">
	<Header>
		<Example>&Example_ID;</Example>
		<!-- This is a comment  -->
	</Header>
	<Body  version="1.0">
		<Element01>Value01</Element01>
		<Element02/>
		<Element03>
			<Repeated>ValueA</Repeated>
			<Repeated>ValueB</Repeated>
		</Element03>
		<Element04><P>This is <B>bold</B> text</P></Element04>
	</Body>
</Envelope>

続くいくつかのセクションでは、この例のメッセージが XMLNS および XMLNSC パーサーで構文解析されるときに Trace ノードによって作成される出力を示しています。 それらは、ブローカーにより処理されるとおりにデータを表すために使用される内部構造の違いを例示しています。

XMLNS ドメインで構文解析される XML メッセージの例

以下の例では、オリジナルの XML 文書を書式設定するスペース、タブ、および改行が理由で、ツリー内に空白文字エレメントがありますが、明瞭にするためにトレース内の実際の文字は「WhiteSpace」で置き換えられています。 XML エレメント内の空白文字にはビジネス上の意味があり、Content 構文エレメントを使用して表されます。 XmlDecl、DTD、およびコメントは、特定のフィールド・タイプを持つ明示的な構文エレメントを使用して XML ドメイン内で表記されています。

(0x01000010):XMLNS        = (
    (0x05000018):XML      = (
      (0x06000011): = '1.0'
      (0x06000012): = 'UTF-8'
      (0x06000014): = 'no'
    )
    (0x06000002):         = 'WhiteSpace'
    (0x05000020):Envelope = (
      (0x06000004): = 'http://www.ibm.com/dtds'
      (0x06000008): = 'example.dtd'
      (0x05000021): = (
        (0x05000011):Example_ID = (
          (0x06000041): = 'ST_TimeoutNodes Timeout Request Input Test Message'
        )
      )
    )
    (0x06000002):         = 'WhiteSpace'
    (0x01000000):Envelope = (
      (0x03000000):version = '1.0'
      (0x02000000):        = 'WhiteSpace'
      (0x01000000):Header  = (
        (0x02000000):        = 'WhiteSpace'
        (0x01000000):Example = (
          (0x06000020): = 'Example_ID'
          (0x02000000): = 'ST_TimeoutNodes Timeout Request Input Test Message'
          (0x06000021): = 'Example_ID'
        )
        (0x02000000):        = 'WhiteSpace'
        (0x06000018):        = ' This is a comment  '
        (0x02000000):        = 'WhiteSpace'
      )
      (0x02000000):        = 'WhiteSpace'
      (0x01000000):Body    = (
        (0x03000000):version   = '1.0'
        (0x02000000):          = 'WhiteSpace'
        (0x01000000):Element01 = (
          (0x02000000): = 'Value01'
        )
        (0x02000000):          = 'WhiteSpace'
        (0x01000000):Element02 = 
        (0x02000000):          = 'WhiteSpace'
        (0x01000000):Element03 = (
          (0x02000000):         = 'WhiteSpace'
          (0x01000000):Repeated = (
            (0x02000000): = 'ValueA'
          )
          (0x02000000):         = 'WhiteSpace'
          (0x01000000):Repeated = (
            (0x02000000): = 'ValueB'
          )
          (0x02000000):         = 'WhiteSpace'
        )
        (0x02000000):          = 'WhiteSpace'
        (0x01000000):Element04 = (
          (0x01000000):P = (
            (0x02000000):  = 'This is '
            (0x01000000):B = (
              (0x02000000): = 'bold'
            )
            (0x02000000):  = ' text'
          )
        )
        (0x02000000):          = 'WhiteSpace'
      )
      (0x02000000):        = 'WhiteSpace'
    )

XMLNSC ドメインで構文解析される XMLNSC メッセージの例

以下のトレースは、デフォルト・モードのコンパクト XMLNSC パーサー内の同じ XML 構造を表すために作成されたエレメントを示しています。 このモードでは、コンパクト・パーサーは、コメント、処理命令、または混合テキストを保存しません。

この例は、コンパクト・パーサーを使用すれば、XML メッセージの例の同じビジネス内容を表すために使用されている構文エレメントの数が大幅に節約されることを示しています。

混合テキストを保存しないことにより、ビジネス・データ内容がないすべての空白文字エレメントは、実行時にブローカー・メッセージ・ツリー内でスペースを取らなくなりました。 ただし、Element04.P 内の混合テキストも廃棄され、子フォルダー Element04.P.B の値だけがツリー内に保持されます。P 内のテキスト This is および text は廃棄されます。 このタイプの XML 構造は通常はビジネス・データ・フォーマットと関連付けられていないので、一般にコンパクト XMLNSC パーサーの使用は望ましいものになります。 ただし、このタイプの処理を行いたい場合は、XMLNSC パーサーを使用しないようにするか、またはそれを「混合テキストを保存」モードを有効にして使用します。

XMLNSC パーサーでは、XML 宣言の取り扱いも異なっています。 バージョン、エンコード方式、およびスタンドアロン属性は、特定のフィールド・タイプを持つエレメントとしてではなく、XmlDeclaration の子エンティティーとして保持されます。

(0x01000000):XMLNSC     = (
    (0x01000400):XmlDeclaration = (
      (0x03000100):Version    = '1.0'
      (0x03000100):Encoding   = 'UTF-8'
      (0x03000100):StandAlone = 'no'
    )
    (0x01000000):Envelope       = (
      (0x03000100):version = '1.0'
      (0x01000000):Header  = (
        (0x03000000):Example = 'ST_TimeoutNodes Timeout Request Input Test Message'
      )
      (0x01000000):Body    = (
        (0x03000100):version   = '1.0'
        (0x03000000):Element01 = 'Value01'
        (0x01000000):Element02 = 
        (0x01000000):Element03 = (
          (0x03000000):Repeated = 'ValueA'
          (0x03000000):Repeated = 'ValueB'
        )
        (0x01000000):Element04 = (
          (0x01000000):P = (
            (0x03000000):B = 'bold'
          )
        )
   )
次のサンプルは、XML パーサーを使用してメッセージを処理します。

サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。

いくつかの事前定義メッセージ・モデルが WebSphere Message Broker Toolkit で提供されており、これらは「新規メッセージ定義ファイル」ウィザードを使用し、IBM® 提供のメッセージ・オプションを選択することでインポートできます。 メッセージ・セット: インポート可能な IBM 提供のメッセージを参照してください。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:46:24


概念トピック概念トピック | バージョン 8.0.0.5 | ac70600_