XMLTransformation ノード

このトピックには、以下のセクションが含まれています。

目的

XSL (eXtensible Stylesheet Language) スタイル・シートで規定されている規則によれば、XMLTransformation ノードは、XML メッセージを XML メッセージの別のフォームに変換するために使用します。

以下の 3 つの方法のいずれかで、この変換に適用されるスタイル・シートの位置を指定することができます。

  1. ノード・プロパティーを使用することができます。 ノード・プロパティーを使用すると、この単一スタイル・シートで定義されている変換がこのノードで処理されるすべてのメッセージに確実に適用されます。
  2. メッセージ自体内の XML データの内容を使用することができます。 これにより、メッセージ自体が定義するスタイル・シートにしたがってメッセージが変換されます。 この動作は、メッセージ・フロー・プロジェクト内にある XSL ファイルおよび XML ファイルに対してのみ使用可能です。
  3. メッセージと関連した LocalEnvironment フォルダー内に値を設定することができます。 メッセージの受信後にメッセージ・フロー内にこの値を (Compute ノードで) 設定する必要があるため、こうすることにより、スタイル・シートの動的選択が行えるようになります。 したがって、このメッセージに使用するスタイル・シートを判別するためにさまざまな入力データ (メッセージ・データの内容またはデータベース内の値など) を使用することができます。

スタイル・シートがメッセージ内に組み込まれておらず、ノード・キャッシュ・レベル (ノード・プロパティー 「スタイルシート・キャッシュ・レベル 」) が 0 より大きい場合は、変換に XSLT (eXtensible Stylesheet Language for Transformations) コンパイラーが使用されます。

ワークベンチでは、XMLTransformation ノードは次のアイコンで表されます。

XMLTransformation ノード・アイコン

メッセージ・フロー内でのこのノードの使用

このノードの使用方法の例については、2 つのニュース組織が定期的に情報を交換する方法を考慮してください。 1 つの組織はテレビ局であり、もう一方は新聞社とします。 情報は類似していますが、これら 2 つの組織で使用される用語は異なっています。 このノードは、指定されたスタイル・シートの規則を適用することによって、ある形式を別の形式に変換できます。 メッセージ内にスタイル・シート (XML データまたは LocalEnvironment のいずれか) を指定する場合、同じノードが両方の変換を実行することができます。

XMLTransformation ノードの構成

XMLTransformation ノードのインスタンスをメッセージ・フローに入れると、XMLTransformation ノードを構成することができます。 エディター・ビューでノードを右マウス・ボタンでクリックし、「プロパティー」をクリックします。 ノードの基本プロパティーが表示されます。

値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、プロパティー・ダイアログにアスタリスクが表示されます。

以下のように XMLTransformation ノードを構成します。

  1. 「XML 組み込み選択優先順位」「メッセージ環境選択優先順位 」、および「ブローカー・ノード属性選択優先順位」 プロパティーの値を選択します。 設定する値は、スタイルシート情報の代替位置を検索する順序を判別します。 最高優先順位設定は 1 です。デフォルトの順序は、以下のとおりです。
    1. 「XML 組み込み選択の優先順位」1 というデフォルト値を持っています。 ノードは、スタイルシートのロケーション情報を求めて XML データを検索します。 たとえば、XML データには以下が含まれている場合があります。
      <xml-stylesheet type="text/xsl" href="foo.xsl">
    2. 「メッセージ環境選択優先順位」2 というデフォルト値を持っています。 ノードは、ComIbmXslXmltStylesheetname と呼ばれるエレメント内に保管されているスタイルシート情報に関する現行メッセージと関連した LocalEnvironment を検索します。

      このノードはバージョン 2.1 の SupportPac で使用可能であり、スタイル・シートの名前としてエレメント ComIbmXslMqsiStylesheetname が使用されていたため、現行ノードは両方のエレメントをチェックします。 両方が存在する場合、ComIbmXslXmltStylesheetname 内の値が優先されます。

    3. 「ブローカー・ノード属性選択優先順位」3 というデフォルト値を持っています。 ノードは、ノード・プロパティー「スタイルシート名 」 および「スタイルシート・ディレクトリー」 を使用して、正しい値を判別します。

    推奨されていませんが、複数のプロパティーを同じ値に設定することができます。 そのようにすると、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。

    "ignore" という値を設定する場合、ノードは、スタイルシート ID の対応する位置を検索しません。 3 つのプロパティーすべてを "ignore" に設定すると、実行時エラーが生成されます。

  2. ノード・プロパティーを使用して非デプロイ・スタイル・シートを指定する場合には、「スタイルシート名」に必要な値を入力します。 スタイルシート情報が検索され、希望する位置 (設定した選択優先順位値によって判別される) に見つかる場合、この値は無視されます。

    基本スタイル・シートを指定する場合には次の 2 つの方法でこれを行えます。
    1. ワークスペースの「スタイルシート」 プロパティー・フィールドの近くの「ブラウズ」ボタンを使用する方法。 確認された基本スタイル・シートとその子孫となるすべての相対参照スタイル・シートは、.bar ファイルへのメッセージ・フローの追加時にbar ファイルへ自動的に追加されます (ただし、それとその親スタイル・シートの両方が使用可能な場合に限ります)。
    2. すでにデプロイ済みまたはこれからデプロイされるスタイル・シートの識別の場合、「スタイルシート名」 プロパティーのみを使用でき、「スタイルシート・ディレクトリー」プロパティーは空のままとしておかなければならない。
  3. スタイルシート ID が完全修飾されている場合、「スタイルシート・ディレクトリー」は無視されます。 そうでない場合、このプロパティー内に設定されている値は、見つかった場所に関係なく、その仕様の先頭に追加されます。
  4. 「スタイルシート・キャッシュ・レベル 」で、このノードのインスタンスに保管されているコンパイル済みまたは解析済みのスタイルシートの数を指定します。 デフォルト値は 5 です。 スタイルシート・キャッシュは、ノードの存続期間中は保存されます。 これは、ノードがフローから削除されるとき、フローが削除されるとき、または実行グループが停止されるときに消去されます。 スタイル・シートを変更する場合は、変更された (最新の) バージョンがキャッシュされたバージョンに優先して使用されます。 キャッシュをリフレッシュしたい場合は、mqsireload コマンドを使用します。
  5. 出力メッセージに使用する文字セットを見つけるためにノードが有効な位置を検索する順序を指定するには、プロパティー・ダイアログ・ナビゲーターで「出力文字セット」を選択します。 最高優先順位設定は 1 です。デフォルトの順序は、以下のとおりです。
    1. 「メッセージ環境選択優先順位」1 というデフォルト値を持っています。 ノードは、ComIbmXslXmltOutputcharset と呼ばれるエレメント内に保管されている文字セット情報に関する現行メッセージと関連した LocalEnvironment を検索します。

      たとえば、変換の出力を utf-8 としてエンコードするには、このエレメント内のストリングとして 1208 を入力します。

      このノードはバージョン 2.1 の SupportPac で使用可能であり、出力文字セットとしてエレメント ComIbmXslMqsiOutputcharset が使用されていたため、現行ノードは両方のエレメントをチェックします。 両方が存在する場合、ComIbmXslXmltOutputcharset 内の値が優先されます。

    2. 「ブローカー・ノード属性選択優先順位」2 というデフォルト値を持っています。 ノードは、プロパティー「出力文字セット」 を使用して、正しい値を判別します。

      「出力文字セット」に値を設定する場合、入力する値は、数値でなければなりません。 たとえば、変換の出力を UTF-16 としてエンコードするには、1200 を入力します。

    推奨されていませんが、複数のプロパティーを同じ値に設定することができます。 そのようにすると、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。

    0 という値を設定する場合、ノードは、文字セット ID の対応する位置を検索しません。

    値が設定されていないか、選択優先順位が 0 に設定されているために、ノードがこれらの 2 つのソースのどちらからも出力文字セットを判別できない場合は、デフォルト値 1208 (UTF8) が使用されます。 (XSL 仕様は、出力文字セットをスタイル・シートに指定できることを示しています。 ただし、XMLTransformation ノードはこの値を無視します。)

  6. XMLTransformation ノードのアクションをトレースするには、プロパティー・ダイアログ・ナビゲーターで「詳細のトレース」を選択します。 「詳細のトレース」プロパティーのデフォルト値は Off です。 トレースをアクティブにするには、プロパティーを On に設定します。

    トレース情報は、トレース・ファイル XMLTTrace.log に書き込まれます。

    • z/OS システムでは、ファイルは <broker_dir>/output にあります (<broker_dir> は、ブローカーのインストール先ディレクトリー)。
    • Windows システムでは、ファイルは <broker work path>¥common¥log にあります。
    • UNIX システムでは、ファイルは <broker work path>¥common¥log にあります。

    1 つの XMLTransformation ノードに関して詳細トレースをオンに設定すると、実行グループ内のすべてのノードに関してオンになります。

    注: このプロパティーは現在推奨されていません。 ユーザー・デバッグ・トレースが使用可能な場合、関連するトレースはすべてユーザー・トレースに入れられるようになりました。 XMLTransformation ノードの 「詳細のトレース」 の設定は、どのユーザー・トレースにも影響を与えません。
  7. 簡略説明または詳細説明 (あるいはその両方) を入力するには、プロパティー・ダイアログ・ナビゲーターの「説明」を選択します。
  8. 「適用」をクリックすると、プロパティー・ダイアログを閉じずに XMLTransformation ノードが変更されます。 「OK」をクリックすると、変更を適用してプロパティー・ダイアログを閉じます。

    「キャンセル」をクリックすると、ダイアログを閉じてプロパティーの変更をすべて破棄します。

大規模な XML メッセージの処理中にメモリー不足エラーを受け取る場合には、mqsichangeproperties コマンドを使用して、XSLT エンジンの Java ヒープ・サイズを増加させることができます。 たとえば、以下のコマンドを使用します。
mqsichangeproperties brokerName -e executionGroupLabel -o ComIbmJVMManager -n jvmMaxHeapSize -v newSize
brokerNameexecutionGroupLabel、および newSize は、適切な値に置き換えてください。

ターミナルおよびプロパティー

XMLTransformation ノード・ターミナルについては、次の表に説明されています。

ターミナル 説明
In ノードが処理するメッセージを受け入れる入力ターミナル。
Failure 変換でエラーが検出された場合に、オリジナル・メッセージがルーティングされる出力ターミナル。
Out 正常に変換されたメッセージがルーティングされる出力ターミナル。

以下の表でノードのプロパティーを説明します。M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、プロパティー・ダイアログにアスタリスクのマークが付きます)。C の見出しの列は、プロパティーが構成可能 かどうかを示します (メッセージ・フローを bar ファイルに追加してデプロイするとき、値を変更できます)。

XMLTransformation ノードの「スタイルシート」プロパティーについては、以下の表で説明しています。

プロパティー M C デフォルト 説明
XML 組み込み選択優先順位 はい いいえ 1 XML データ内のスタイルシート位置情報を検索するための優先順位の値。
メッセージ環境選択優先順位 はい いいえ 2 現行メッセージの LocalEnvironment フォルダー内のスタイルシート位置情報を検索するための優先順位の値
ブローカー・ノード属性選択優先順位 はい いいえ 3 ノードのプロパティーとしてスタイルシート位置情報を検索するための優先順位の値
スタイルシート名 いいえ はい   スタイル・シートの名前。 スタイルシート仕様がノード・プロパティー内で検索される場合に使用されます。
スタイルシート・ディレクトリー いいえ はい   スタイル・シートが位置付けられているパス。すべての位置メソッドによって使用されます。
スタイルシート・キャッシュ・レベル いいえ いいえ 5 このノードのインスタンス内に保管されているコンパイル済みまたは解析済みのスタイルシートの数。

XMLTransformation ノードの「出力文字セット」プロパティーについては、以下の表で説明しています。

プロパティー M C デフォルト 説明
メッセージ環境選択優先順位 はい いいえ 1 現行メッセージの LocalEnvironment フォルダー内の出力文字セット ID を検索するための優先順位の値。
ブローカー・ノード属性選択優先順位 はい いいえ 2 ノードのプロパティーとして出力文字セット ID を検索するための優先順位の値。
出力文字セット いいえ いいえ   出力文字セットの数値。

XMLTransformation ノードの「詳細のトレース」プロパティーについては、以下の表で説明しています。

プロパティー M C デフォルト 説明
トレースの設定 はい いいえ Off トレースがオンかオフか。 トレースがオンである場合、ファイル内で低レベルのトレースが記録されます。

XMLTransformation ノードの「説明」プロパティーについては、以下の表で説明しています。

プロパティー M C デフォルト 説明
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト

デプロイ済みスタイル・シートまたは XML ファイルのデプロイメント

デプロイ済みスタイル・シートまたは XML ファイルを使用するには、以下を行う必要があります。
  1. ファイルのファイル名拡張子が正しいことを確認する: デプロイされるスタイル・シートのファイル拡張子は、.xsl または .xslt のいずれかで、デプロイされる XML ファイルのファイル拡張子は .xml でなければなりません。
  2. ファイルを Eclipse ワークスペースにインポートする: デプロイされるスタイル・シートおよび XML ファイルはすべて、Eclipse ワークスペース・プロジェクトにインポートされなければなりません。 ロケーション依存の、デプロイされる子孫スタイル・シートまたは XML ファイルは、その親スタイル・シートに対して正しいディレクトリー構造に配置される必要があります。 デプロイしたくないロケーション依存の子孫は Eclipse ワークスペースに置くべきではありません。
  3. ファイルへの参照がすべて相対参照になるようにする: 一般的に、フローのローカル環境、入力 XML 文書、XMLTransformation ノードの 「スタイルシート名」 プロパティー、または親スタイル・シートに現れる基本スタイル・シートへの参照はすべて、相対参照にする必要があります。 基本スタイル・シートへの参照は、関連 Eclipse ワークスペース・プロジェクトのルートに対して相対的でなければなりません。 たとえば、Eclipse ワークスペースの基本スタイル・シートへの参照 C:¥¥project1¥a¥b.xsl は、a/b.xsl (または ./a/b.xsl) のように指定します。 唯一の例外は、XMLTransformation ノードの 「スタイルシート名」 プロパティーとして基本スタイル・シートを指定する場合です。 その場合、Eclipse ワークスペース内の正しいディレクトリー構造を指す絶対パスを使用することもできます。 基本スタイル・シートが見つかった場合、システムはノード・プロパティーを自動的に正しい相対値にリセットします (そして基本スタイル・シート、および関連する Eclipse ワークスペース・プロジェクトで使用可能なその基本スタイル・シートのロケーション依存の子孫スタイル・シートの自動デプロイメントを実行します)。 基本スタイル・シートのロケーション依存の子孫スタイル・シート (または XML ファイル) への参照はすべて、その親スタイル・シートのロケーションに対する相対参照とする必要があります。たとえば、スタイル・シート //project1/a/b.xsl が //project1/a/c/d.xsl というスタイル・シートを参照する場合、この参照は c/d.xsl (または ./c/d.xsl) に変更しなければなりません。
  4. デプロイされない子スタイル・シートまたは XML ファイルを扱う: デプロイされない、相対的に参照される子スタイル・シート (または XML ファイル) がある場合 (その親はデプロイされている)、それが /XSL/external (/XML/external) の下の正しい場所に配置されるようにしてください。 ブローカーは自動的に、実行グループがデプロイするストレージ・ツリー、/XSL/external、および /XML/external ツリーをそれぞれ相互に関連付けます。 これはつまり、たとえばブローカーのデプロイ済みストレージの中にデプロイ済み基本スタイル・シート a/style.xsl にある文書 (b/c.xml) が見つからない場合に、ブローカーがその参照を求めて /XML/external/a/b ディレクトリー内の検索を自動的に実行するということです。 すでにデプロイ済みであるもののワークスペースで使用可能になっていないファイルについても、相対パスの参照を使用する必要があります。
  5. ファイルをデプロイする: 必要なのはシステムによって選出されていないスタイル・シートまたは XML ファイルを手動でデプロイすることだけです (ツールがこれらのファイルに関する警告を出します)。 手動デプロイを行うには、デプロイされるファイルをブローカー・アーカイブに追加し (ブローカー・アーカイブへのファイルの追加およびXSL スタイルシートへのキーワードの追加を参照)、ブローカー・アーカイブをデプロイします。 ユーザーの側で行う必要があるのは、同じ実行グループに属するすべてのメッセージ・フローに対して一度、また各実行グループに対して少なくとも一度、スタイル・シートまたは XML ファイルをデプロイすることだけです。 スタイル・シートまたは XML ファイルは、それらを参照するフローを含む同じ .bar ファイル内にデプロイする必要はありません。 また、.bar ファイルのスタイル・シートおよび XML ファイルは、まったくフローから参照されなくてもかまいません。 しかし、.bar ファイルにフローを保管する際、その .bar ファイルに子スタイル・シートまたは XML ファイルが 1 つもないと、警告が出されます。 これらの子スタイル・シートまたは XML ファイルがブローカーで使用可能なことを確認するのは、ユーザーの責任です。 ブローカーは Eclipse プロジェクトを認識しません。 そのため、1 つのプロジェクトに属するデプロイ済みスタイル・シートは、同じディレクトリー・パスおよびファイル名を共有する別のスタイル・シートで上書きすることができます。 それぞれが異なるプロジェクトに属する場合でも上書きは可能です。 デプロイメントによって、デプロイされている既存の旧バージョンのファイルはすべて、警告なしで上書きされます。 これは自動的にデプロイされるスタイル・シートにも当てはまります。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2005 Last updated: 11/07/2005
ac12490_